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

ابیوز چیست؟
ابیوز به معنای استفاده نادرست و غیرمجاز از منابع سرور است که ممکن است باعث مشکلاتی مانند کاهش عملکرد، افزایش ترافیک غیرمجاز و یا حتی مسدود شدن سرویس شود. برخی از مشکلات رایج ابیوز شامل موارد زیر است:
- حملات DDoS: حملاتی که با ارسال ترافیک زیاد به سرور باعث اختلال در عملکرد آن میشوند.
- ارسال هرزنامه (Spam): ارسال ایمیلهای ناخواسته به تعداد زیاد که ممکن است باعث مسدود شدن آیپی سرور شود.
- استفاده غیرمجاز از منابع: استفاده بیش از حد از منابع سرور مانند CPU و RAM.
روشهای جلوگیری از ابیوز
برای جلوگیری از ابیوز در سرورهای هتزنر، میتوان از روشهای زیر استفاده کرد:
- نصب و پیکربندی فایروال: یکی از بهترین راهها برای جلوگیری از ترافیک غیرمجاز، نصب و پیکربندی فایروال است.
- نظارت بر ترافیک شبکه: مانیتورینگ ترافیک شبکه و شناسایی الگوهای مشکوک.
- استفاده از ابزارهای امنیتی: نصب و پیکربندی ابزارهای امنیتی مانند آنتیویروس و IDS/IPS.
- محدود کردن دسترسیها: محدود کردن دسترسی به سرور تنها به آیپیهای مجاز.
ساخت فایروال با استفاده از اسکریپت
برای ساخت یک فایروال موثر و جلوگیری از ابیوز، میتوان از اسکریپتی که توسط 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
نتیجهگیری
با اجرای این مراحل و استفاده از اسکریپت فایروال، میتوانید از بروز ابیوز و حملات مختلف به سرورهای هتزنر جلوگیری کنید. اسکریپت فوق با بستن تمام ترافیکهای ورودی و خروجی غیرضروری و مجاز کردن تنها ترافیکهای ضروری، به شما کمک میکند تا امنیت سرور خود را افزایش دهید. امیدواریم این راهنما برای شما مفید باشد.
اگر سوالی دارید، میتوانید در بخش نظرات با ما در میان بگذارید. موفق باشید!