جلوگیری از ابیوز هتزنر با استفاده اسکریپت فایروال

خلاصه این مقاله:ابیوز هتزنر یک نرم‌افزار امنیتی است که برای ایجاد و اداره فایروال‌ها استفاده می‌شود. این نرم‌افزار به کاربران امکان می‌دهد تا فایروال‌های مختلف را با استفاده از اسکریپت‌های خود تنظیم کنند و از آن‌ها برای افزایش امنیت شبکه‌های خود استفاده کنند. این مقاله به توضیحات دقیق و مثال‌های عملی در مورد ساخت و تنظیم فایروال‌ها با استفاده از اسکریپت‌های ابیوز هتزنر می‌پردازد

مقاله‌ای درباره ابیوز هتزنر و نحوه ساخت فایروال با استفاده از اسکریپت

ابیوز (Abuse) در سرورهای هتزنر یکی از مسائلی است که کاربران با آن مواجه می‌شوند. این مسائل ممکن است به دلایل مختلفی از جمله حملات DDoS، ارسال هرزنامه (Spam) و یا استفاده غیرمجاز از منابع سرور رخ دهد. هتزنر به عنوان یک ارائه‌دهنده‌ی معروف سرورهای مجازی و اختصاصی، قوانین سخت‌گیرانه‌ای در خصوص جلوگیری از ابیوز دارد. در این مقاله، به بررسی ابیوز در هتزنر و نحوه ساخت فایروال با استفاده از یک اسکریپت برای جلوگیری از ابیوز خواهیم پرداخت.

ابیوز هتزنر
ابیوز هتزنر

ابیوز چیست؟

ابیوز به معنای استفاده نادرست و غیرمجاز از منابع سرور است که ممکن است باعث مشکلاتی مانند کاهش عملکرد، افزایش ترافیک غیرمجاز و یا حتی مسدود شدن سرویس شود. برخی از مشکلات رایج ابیوز شامل موارد زیر است:

  • حملات DDoS: حملاتی که با ارسال ترافیک زیاد به سرور باعث اختلال در عملکرد آن می‌شوند.
  • ارسال هرزنامه (Spam): ارسال ایمیل‌های ناخواسته به تعداد زیاد که ممکن است باعث مسدود شدن آی‌پی سرور شود.
  • استفاده غیرمجاز از منابع: استفاده بیش از حد از منابع سرور مانند CPU و RAM.

روش‌های جلوگیری از ابیوز

برای جلوگیری از ابیوز در سرورهای هتزنر، می‌توان از روش‌های زیر استفاده کرد:

  1. نصب و پیکربندی فایروال: یکی از بهترین راه‌ها برای جلوگیری از ترافیک غیرمجاز، نصب و پیکربندی فایروال است.
  2. نظارت بر ترافیک شبکه: مانیتورینگ ترافیک شبکه و شناسایی الگوهای مشکوک.
  3. استفاده از ابزارهای امنیتی: نصب و پیکربندی ابزارهای امنیتی مانند آنتی‌ویروس و IDS/IPS.
  4. محدود کردن دسترسی‌ها: محدود کردن دسترسی به سرور تنها به آی‌پی‌های مجاز.

ساخت فایروال با استفاده از اسکریپت

برای ساخت یک فایروال موثر و جلوگیری از ابیوز، می‌توان از اسکریپتی که توسط Arash-Ariaye ارائه شده است، استفاده کرد. در این بخش، نحوه استفاده از این اسکریپت را توضیح خواهیم داد.

مرحله 1: دانلود اسکریپت

ابتدا اسکریپت فایروال را دانلود کنید:

wget https://github.com/Arash-Ariaye/hetzner-abuse/raw/main/firewall-xui.bash -O firewall-xui.bash

مرحله 2: تنظیم مجوزهای اجرایی

پس از دانلود، مجوزهای اجرایی اسکریپت را تنظیم کنید:

chmod +x firewall-xui.bash
اسکریپت فایروال
اسکریپت فایروال

توضیحات کد اسکریپت

حالا به توضیح قدم به قدم کد اسکریپت می‌پردازیم:

#!/bin/bash

Red="\033[1;31m"
Green="\033[1;32m"
Yellow="\033[1;33m"
Blue="\033[1;34m"
Plain="\033[0m"

در این بخش از اسکریپت، رنگ‌های مختلفی برای نمایش پیام‌ها در ترمینال تعریف می‌شود.

# Function to check firewall status and open ports
check_ports() {
    while true; do
        # Check ports opened by x-ui
        xui_ports=$(sudo lsof -i -P -n | grep x-ui | awk '{print $9}' | cut -d: -f2 | cut -d'>' -f1 | grep -Eo '^[0-9]+$')
        for port in $xui_ports; do
            if ! sudo ufw status | grep -q "$port"; then
                sudo ufw allow in "$port" &> /dev/null
                sudo ufw allow out "$port" &> /dev/null
            fi
        done

        # Check ports opened by xray-linu
        xray_ports=$(sudo lsof -i -P -n | grep xray-linu | awk '{print $9}' | cut -d: -f2 | cut -d'>' -f1 | grep -Eo '^[0-9]+$')
        for port in $xray_ports; do
            if ! sudo ufw status | grep -q "$port"; then
                sudo ufw allow in "$port" &> /dev/null
                sudo ufw allow out "$port" &> /dev/null
            fi
        done
        
        sleep 30
    done
}

این تابع به صورت مداوم پورت‌های باز شده توسط x-ui و xray-linu را بررسی می‌کند و اگر این پورت‌ها در فایروال باز نشده باشند، آنها را باز می‌کند.

# Function to check and install firewall
check_firewall() {
    clear
    echo -e "${Blue}Checking firewall prerequisites...${Plain}"
    
    # Check if firewall is installed
    if ! command -v ufw &> /dev/null; then
        echo -e "${Red}Firewall (ufw) is not installed. Installing...${Plain}"
        if [[ -f /etc/os-release ]]; then
            source /etc/os-release
            release=$ID
        elif [[ -f /usr/lib/os-release ]]; then
            source /usr/lib/os-release
            release=$ID
        else
            echo "Failed to check the system OS, please contact the author!" >&2
            exit 1
        fi
        echo "The OS release is: $release"
        case "${release}" in
        centos | fedora | almalinux)
            yum upgrade && yum install -y -q ufw
            ;;
        arch | manjaro)
            pacman -Sy --noconfirm ufw
            ;;
        *)
            apt update && apt install -y -q ufw
            ;;
        esac
    else
        echo -e "${Green}Firewall (ufw) is installed.${Plain}"
    fi
    
    # Check if firewall is active
    if ! sudo ufw status | grep -q "Status: active"; then
        echo -e "${Red}Firewall is not active. Enabling...${Plain}"
        sudo ufw enable
        sudo ufw allow ssh
    else
        echo -e "${Green}Firewall is active.${Plain}"
    fi
    
    read -r -p "Press Enter to return to the menu..."
}

این تابع بررسی می‌کند که آیا فایروال (ufw) نصب و فعال است یا خیر. در صورتی که فایروال نصب نباشد، اقدام به نصب آن می‌کند و در صورت غیرفعال بودن، آن را فعال می‌کند.

# Function to start port checking in the background
start_port_checking() {
    clear
    echo -e "${Blue}Ports currently in use:${Plain}"
    
    # Display ports opened by x-ui
    echo -e "${Blue}Ports opened by x-ui:${Plain}"
    sudo lsof -i -P -n | grep x-ui | awk '{print $9}' | cut -d: -f2 | cut -d'>' -f1 | grep -Eo '^[0-9]+$'
    
    # Display ports opened by xray-linu
    echo -e "${Blue}Ports opened by xray-linu:${Plain}"
    sudo lsof -i -P -n | grep xray-linu | awk '{print $9}' | cut -d: -f2 | cut -d'>' -f1 | grep -Eo '^[0-9]+$'
    
    sleep 5
    
    check_ports &
    echo $! > /tmp/port_checking.pid
    echo -ne "${Plain}3X-UI Port Checking - ${Green}Active${Plain}"
    echo -e "${Green}Port checking started in the background.${Plain}"
    sleep 2
}

این تابع پورت‌هایی که توسط x-ui و xray-linu باز شده‌اند را نمایش می‌دهد و سپس تابع check_ports را در پس‌زمینه اجرا می‌کند تا به صورت مداوم پورت‌ها را بررسی کند.

# Function to stop port checking
stop_port_checking() {
    if [ -f /tmp/port_checking.pid ]; then
        kill "$(cat /tmp/port_checking.pid)"
        rm /tmp/port_checking.pid
        echo -ne "${Plain}3X-UI Port Checking - ${Red}Disabled${Plain}"
    fi
}

این تابع فرآیند بررسی پورت‌ها را متوقف می‌کند.

# Main menu
while true; do
    clear
    echo -e "=============================="
    echo -e "      ${Blue}3X-UI Port Checking${Plain}"
    echo -e "=============================="
    echo -e "      ${Yellow}Dev by Arash${Plain}"
    echo -e "      ${Yellow}Telegram: Arash_Ariaye${Plain}"
    echo -e "=============================="
    if [ -f /tmp/port_checking.pid ]; then
        echo -e "      ${Green}Active${Plain}"
    else
        echo -e "      ${Red}Disabled${Plain}"
    fi
    echo -e "=============================="
    echo -e "${Green}0. Prerequisites${Plain}"
    echo -e "${Green}1. Enable Port Checking${Plain}"
    echo -e "${Red}2. Disable Port Checking${Plain}"
    echo -e "${Yellow}3. Exit${Plain}"
    echo -e "=============================="
    read -p "Enter your choice: " choice
    
    case $choice in
        0)
            check_firewall
            ;;
        1)
            start_port_checking
            ;;
        2)
            stop_port_checking
            ;;
        3)
            clear
            if [ -f /tmp/port_checking.pid ]; then
                echo -e "${Green}Port checking is currently active.${Plain}"
            else
                echo -e "${Red}Port checking is currently inactive.${Plain}"
            fi
            exit 0
            ;;
        *)
            echo -e "${Red}Invalid choice. Please try again.${Plain}"
            sleep 2
            ;;
    esac
done

نتیجه‌گیری

با اجرای این مراحل و استفاده از اسکریپت فایروال، می‌توانید از بروز ابیوز و حملات مختلف به سرورهای هتزنر جلوگیری کنید. اسکریپت فوق با بستن تمام ترافیک‌های ورودی و خروجی غیرضروری و مجاز کردن تنها ترافیک‌های ضروری، به شما کمک می‌کند تا امنیت سرور خود را افزایش دهید. امیدواریم این راهنما برای شما مفید باشد.

اگر سوالی دارید، می‌توانید در بخش نظرات با ما در میان بگذارید. موفق باشید!