مقالهای درباره ابیوز هتزنر و نحوه ساخت فایروال با استفاده از اسکریپت
ابیوز (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
نتیجهگیری
با اجرای این مراحل و استفاده از اسکریپت فایروال، میتوانید از بروز ابیوز و حملات مختلف به سرورهای هتزنر جلوگیری کنید. اسکریپت فوق با بستن تمام ترافیکهای ورودی و خروجی غیرضروری و مجاز کردن تنها ترافیکهای ضروری، به شما کمک میکند تا امنیت سرور خود را افزایش دهید. امیدواریم این راهنما برای شما مفید باشد.
اگر سوالی دارید، میتوانید در بخش نظرات با ما در میان بگذارید. موفق باشید!