هر سرور متصل به اینترنت روزانه مورد هدف هزاران تلاش ورود غیرمجاز (Brute-force Attacks) توسط باتنتها قرار میگیرد. ترکیب دو ابزار قدرتمند UFW (Uncomplicated Firewall) و Fail2ban در سرورهای ابری کات شات، دیواری نفوذناپذیر در برابر این حملات ایجاد میکند. در این راهنما فرآیند نصب، کانفیگ رولها و مسدودسازی خودکار IPهای مهاجم را مرور میکنیم.
۱. راهاندازی فایروال UFW در اوبونتو ۲۲.۰۴ و ۲۴.۰۴
ابزار UFW به صورت پیشفرض در توزیعهای اوبونتو نصب است. ابتدا بستههای سیستم را بروزرسانی کرده و وضعیت فایروال را بررسی میکنیم:
sudo apt update && sudo apt upgrade -y sudo ufw status
تنظیم سیاستهای پیشفرض فایروال
بهترین رویه امنیتی این است که کلیه ترافیکهای ورودی به صورت پیشفرض مسدود و ترافیکهای خروجی مجاز باشند:
sudo ufw default deny incoming sudo ufw default allow outgoing
مجاز کردن پورتهای حیاتی وب و SSH
قبل از فعالسازی فایروال، پورتهای سرویسهای فعال خود را باز کنید:
sudo ufw allow 22/tcp comment "SSH Default" sudo ufw allow 80/tcp comment "HTTP Web" sudo ufw allow 443/tcp comment "HTTPS Web" sudo ufw enable
۲. نصب و فعالسازی سرویس امنیتی Fail2ban
ابزار Fail2ban لاگهای احراز هویت سرور را به صورت بلادرنگ مانیتور کرده و در صورت مشاهده تلاشهای ناموفق مکرر (مانند ۳ بار اشتباه وارد کردن پسورد)، آدرس IP مهاجم را با استفاده از قوانین فایروال بلاک (Ban) میکند.
sudo apt install fail2ban -y
ایجاد فایل پیکربندی سفارشی (jail.local)
هرگز فایل اصلی jail.conf را تغییر ندهید؛ زیرا با آپدیت بسته بازنویسی میشود. یک نسخه اختصاصی ایجاد کنید:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
تنظیمات کلیدی زیر را در بخش [DEFAULT] اعمال کنید:
[DEFAULT] bantime = 1h findtime = 10m maxretry = 4 ignoreip = 127.0.0.1/8 ::1
bantime = 1h:مدت زمان مسدودی IP مهاجم (۱ ساعت).findtime = 10m:بازه زمانی بررسی تلاشهای ناموفق (۱۰ دقیقه).maxretry = 4:حداکثر تعداد خطای مجاز قبل از بن شدن.
۳. فعالسازی مانیتورینگ سرویس SSH
در انتهای همان فایل، بخش [sshd] را فعال کنید:
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3
سپس سرویس Fail2ban را ریاستارت و فعال نمایید:
sudo systemctl restart fail2ban sudo systemctl enable fail2ban
۴. بررسی وضعیت و آنبن (Unban) کردن IPها
برای مشاهده لیست IPهای بنشده در بخش SSH دستور زیر را اجرا کنید:
sudo fail2ban-client status sshd
در صورتی که IP خودتان اشتباهاً مسدود شد، با دستور زیر آن را آزاد کنید:
sudo fail2ban-client set sshd unbanip 1.2.3.4