Fail2Ban چیست؟ ابزاری است که رخدادهای ثبتشدهٔ سرویس را بررسی میکند و در صورت رسیدن خطاها به آستانهٔ تعیینشده، عملی مانند مسدودسازی موقت IP انجام میدهد. برای کاهش تلاشهای تکراری ورود مفید است، اما جای اصلاح آسیبپذیری، کلید SSH یا دفاع شبکه در برابر حملهٔ حجیم را نمیگیرد.
Fail2Ban چیست و jail چه نقشی دارد؟
هر jail، منبع رخداد، فیلتر تشخیص، آستانه و عمل پاسخ را کنار هم قرار میدهد. در توضیح سازوکار Fail2Ban این اجزا از هم جدا هستند. نصب بسته بهتنهایی ثابت نمیکند jail موردنیاز فعال است یا عمل فایروال درست اجرا میشود.
تعداد تلاش و زمان مسدودی یک مقدار ثابت جهانی نیست. همچنین action همیشه iptables نیست؛ بسته و تنظیمات سیستم ممکن است از روش دیگری استفاده کنند. مقادیر مؤثر همان سرور را بررسی کنید.
۱. نصب در اوبونتو
این نمونه برای اوبونتوی پشتیبانیشده با systemd و رخدادهای SSH در journal است. با حساب دارای sudo و کنسول بازیابی کار کنید:
sudo apt update
sudo apt install fail2ban python3-systemd
کتابخانهٔ Python برای backend مبتنی بر systemd لازم است. ارتقای بیبرنامهٔ تمام سیستم یا نصب سرویس ایمیل، پیشنیاز این مثال نیست. در توزیع دیگر، از بسته و روش نصب متناسب با همان توزیع استفاده کنید. دستور قدیمی CentOS 7 را برای یک سرور تازه مبنا قرار ندهید.
۲. ساخت تنظیم اختصاصی SSH
بهجای ویرایش فایل پیشفرض بسته، فایل /etc/fail2ban/jail.d/sshd.local را با ویرایشگر مدیریتی بسازید. اگر این فایل یا jail قبلاً تنظیم شده، ابتدا تنظیم موجود را بررسی کنید. نمونهٔ آموزشی:
[sshd]
enabled = true
backend = systemd
port = 22
maxretry = 5
findtime = 10m
bantime = 1h
پورت باید با SSH واقعی برابر باشد؛ برای پورت سفارشی مقدار را عوض کنید. این اعداد پیشنهاد نمونهاند و پیشفرض همهٔ نصبها نیستند. maxretry آستانهٔ خطا در بازهٔ findtime و bantime مدت مسدودی است.
طبق مرجع jail.conf، backend نوع systemd از journalmatch استفاده میکند؛ برای همین نمونه logpath را همزمان اضافه نکنید. اگر سرویس رخداد را جای دیگری مینویسد، backend و فیلتر باید با همان منبع هماهنگ شوند.
۳. آزمون تنظیم و فعالسازی
sudo fail2ban-client -t
sudo systemctl enable --now fail2ban
sudo fail2ban-client reload
sudo fail2ban-client status
sudo fail2ban-client status sshd
فقط اگر آزمون تنظیم موفق است، فعالسازی و بارگذاری را ادامه دهید. وضعیت sshd باید وجود jail را نشان دهد. صفر بودن شمارنده در شروع طبیعی است؛ آن را بدون بررسی منبع رخداد، نشانهٔ امنیت کامل یا خرابی قطعی ندانید.
عمل مسدودسازی را با فایروال واقعی سرور تطبیق دهید. در کانتینر یا محیط دارای محدودیت دسترسی، داشتن فهرست ban الزاماً به معنی اعمال موفق قانون شبکه نیست. گزارش خطای action را بررسی کنید.
۴. بررسی نتیجه و رفع مسدودی اشتباه
sudo journalctl -u fail2ban --no-pager -n 50
sudo fail2ban-client status sshd
برای رفع مسدودی یک نشانی تأییدشده، این ساختار را به کار ببرید:
sudo fail2ban-client set sshd unbanip 192.0.2.10
نشانی بالا صرفاً نمونه است؛ آن را با IP واقعیِ مجاز جایگزین کنید. مرجع fail2ban-client فرمانهای وضعیت و رفع ban را توضیح میدهد. اگر خطا دوباره تکرار شود، نشانی ممکن است دوباره مسدود شود؛ علت را نیز رفع کنید.
پیشگیری از قطع دسترسی مدیر
آزمون ورود ناموفق را از تنها اتصال مدیریتی خود انجام ندهید. در صورت نیاز، آزمایش کنترلشده را از یک مبدأ جدا و مجاز انجام دهید و کنسول را باز نگه دارید. IP مشترک سازمان یا NAT میتواند چند کاربر را همزمان تحت تأثیر ban قرار دهد.
فهرست استثنا را بیش از نیاز گسترده نکنید. حملهٔ توزیعشده با تعداد کم تلاش از IPهای متعدد یا حملهای که پهنای باند را اشباع میکند، با این ابزار بهتنهایی حل نمیشود؛ محدودیت دسترسی شبکه، پایش و سیاست احراز هویت همچنان ضروریاند.
مطالعهٔ مرتبط
بازبینی فنی: ۱۳ آبان ۱۴۰۵. تاریخ انتشار اولیه و نشانی قبلی حفظ شدهاند.