همه سرورهایی که از طریق اینترنت قابل دسترسی هستند، در معرض حملات بدافزار قرار دارند. برای مثال، اگر برنامه‌ای دارید که از طریق شبکه عمومی قابل دسترسی است، مهاجمان می‌توانند از تلاش‌های brute-force برای دسترسی به برنامه استفاده کنند.

Fail2ban ابزاری است که به محافظت از ماشین لینوکس شما در برابر حملات brute-force و دیگر حملات خودکار با نظارت بر گزارش‌های سرویس‌ها برای فعالیت‌های مخرب کمک می‌نماید. این ابزار از regular expression برای اسکن فایل‌های گزارش استفاده می‌کند. بدین صورت که تمام ورودی‌های مطابق با الگوها شمارش می‌شوند و زمانی که تعداد آن‌ها به آستانه از پیش تعریف شده رسید، Fail2ban آدرس IP متخلف را با استفاده از فایروال سیستم برای مدت زمان مشخصی ممنوع می‌کند. هنگامی‌که دوره ممنوعیت به پایان می‌رسد، آدرس IP از لیست سیاه حذف می‌شود.

در این مقاله، به شرح ابزار Fail2ban پرداخته و نحوه نصب و پیکربندی آن در Debian 10 توضیح داده شده است.

 

 

این مطلب نیز ممکن است برای شما مفید باشد: دستور غیرفعالسازی فایروال در لینوکس

 

نصب Fail2ban در Debian

بسته Fail2ban در مخازن پیش فرض Debian 10 گنجانده شده است. برای نصب آن، کافیست دستور زیر را به عنوان کاربر root یا کاربری با امتیازات sudo اجرا کنید:

sudo apt update
sudo apt install fail2ban

پس از آن، سرویس Fail2ban به طور خودکار راه‌اندازی می‌شود. شما می‌توانید به صورت زیر وضعیت سرویس را تأیید نمایید:

sudo systemctl status fail2ban

خروجی دستور به صورت زیر خواهد بود:

output:
● fail2ban.service - Fail2Ban Service
   Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2021-03-10 18:57:32 UTC; 47s ago
...

اکنون، Fail2Ban روی سرور دبیان شما در حال اجرا است.

 

پیکربندی Fail2ban

نصب پیش‌فرض Fail2ban با دو فایل پیکربندی، /etc/fail2ban/jail.conf و /etc/fail2ban/jail.d/defaults-debian.conf ارائه می‌شود. شما نباید این فایل‌ها را تغییر دهید؛ زیرا ممکن است هنگام به روز رسانی بسته بازنویسی شوند.

Fail2ban فایل‌های پیکربندی را به ترتیب زیر می‌خواند. هر فایل local. تنظیمات فایل conf. را بازنویسی می‌کند:

  • /etc/fail2ban/jail.conf
    
  • /etc/fail2ban/jail.d/*.conf
  • /etc/fail2ban/jail.local
  • /etc/fail2ban/jail.d/*.local

     

 

ساده‌ترین راه برای پیکربندی Fail2ban، کپی کردن jail.conf در jail.local و تغییر فایل local. است. کاربران پیشرفته‌تر می‌توانند یک فایل پیکربندی local. را از ابتدا بسازند. فایل local. لازم نیست شامل تمام تنظیمات فایل conf. مربوطه باشد، تنها کافیست موارد مورد نظر را بازنویسی نمایید.

توسط دستور زیر می‌توانید، با کپی کردن فایل پیش فرض jail.conf، یک فایل پیکربندی local. ایجاد کنید:

sudo cp /etc/fail2ban/jail.{conf,local}

برای شروع پیکربندی سرور Fail2ban، فایل jail.local را با ویرایشگر متن خود باز نمایید:

sudo nano /etc/fail2ban/jail.local

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

 

این مطلب نیز ممکن است برای شما مفید باشد: ذخیره دائمی قوانین فایروال iptables در لینوکس

 

لیست سفید آدرس‌های IP

آدرس‌های IP، محدوده IP یا میزبان‌هایی را که می‌خواهید از لیست سیاه حذف شوند، می‌توان به دستورالعمل ignoreip اضافه کرد. در اینجا باید آدرس IP رایانه محلی خود و سایر دستگاه‌هایی را که می‌خواهید در لیست سفید قرار دهید اضافه نمایید.
بدین منظور، خطی که با ignoreip شروع می‌شود را از حالت کامنت در آورده و آدرس‌های IP خود را با فاصله از هم اضافه کنید:

                   /etc/fail2ban/jail.local

ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24

 

تنظیمات ممنوعیت

گزینه‌های bantime ،findtime و maxretry، زمان و شرایط ممنوعیت را تنظیم می‌نمایند.

Bantime، مدت زمانی است که IP در لیست سیاه قرار می‌گیرد. هنگامی‌که هیچ واحدی بعد از آن مشخص نشود، به طور پیش فرض بر روی ثانیه تنظیم می‌گردد. مقدار bantime به طور پیش فرض روی 10 دقیقه تنظیم شده است. اکثر کاربران ترجیح می‌دهند، مدت زمان ممنوعیت طولانی‌تری را تعیین کنند. بنابراین، شما می‌توانید مقدار زیر را به دلخواه تغییر دهید:

                    /etc/fail2ban/jail.local

bantime  = 1d

برای ممنوعیت دائمی IP، از یک عدد منفی استفاده نمایید.

Findtime، مدت زمان بین تعداد شکست‌ها قبل از تعیین ممنوعیت است. به عنوان مثال، اگر Fail2ban به گونه‌ای باید تنظیم شود که یک IP را پس از پنج شکست در لیست سیاه قرار دهد (maxretry، در زیر ببینید)، این خرابی‌ها باید در مدت زمان Findtime رخ دهند.

                   /etc/fail2ban/jail.local

findtime  = 10m

،Maxretry تعداد شکست‌ها قبل از ممنوع شدن IP است. مقدار پیش فرض این پارمتر، روی 5 تنظیم شده است که برای اکثر کاربران مناسب است.

                    /etc/fail2ban/jail.local

maxretry = 5

 

این مطلب نیز ممکن است برای شما مفید باشد: مسدود کردن یک کشور با استفاده از فایروال CSF

 

اعلان‌های ایمیل

Fail2ban می‌تواند هشدارهای ایمیلی را زمانی که یک IP ممنوع شده است، ارسال کند. برای دریافت ایمیل‌ها، باید یک SMTP روی سرور خود نصب نمایید و action پیش‌فرض را تغییر دهید؛ بطوری‌که تنها IP را به %(action_mw)s ممنوع می‌کند:

                     /etc/fail2ban/jail.local

action = %(action_mw)s

%(action_mw)s، آدرس IP متخلف را در لیست سیاه قرار داده و یک ایمیل با گزارش whois ارسال می‌نماید. اگر می‌خواهید گزارش‌های مربوطه را در ایمیل اضافه کنید، action را برروی %(action_mwl)s تنظیم نمایید.

همچنین می‌توانید آدرس ایمیل ارسال و دریافت را به صورت زیر تغییر دهید:

                    /etc/fail2ban/jail.local

destemail = admin@linuxize.com

sender = root@linuxize.com

 

Fail2ban Jail

Fail2ban از مفهوم jail (زندان) استفاده می‌کند. jail یک سرویس را توصیف می‌کند و شامل فیلترها و actionهایی است. ورودی‌های گزارش مطابق با الگوی جستجو شمارش می‌شوند و زمانی که یک شرط از پیش تعریف‌شده برآورده شود، اقدامات مربوطه اجرا می‌گردند.

Fail2ban با تعدادی jail برای سرویس‌های مختلف ارسال می‌شود. شما می‌توانید تنظیمات مورد نظر خود را برای jail ایجاد نمایید. به طور پیش فرض، فقط ssh jail فعال است.

برای فعال کردن یک jail، باید enabled = true را بعد از عنوان آن jail اضافه کنید. مثال زیر نحوه فعال کردن jail مربوط به postfix را نشان می‌دهد:

                     /etc/fail2ban/jail.local

[postfix]
enabled  = true
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/mail.log

 

تنظیماتی که در بخش قبل توضیح داده شد، می‌توانند در هر jail تنظیم شوند. به عنوان مثال:

                  /etc/fail2ban/jail.local

[sshd]
enabled   = true
maxretry  = 3
findtime  = 1d
bantime   = 4w
ignoreip  = 127.0.0.1/8 11.22.33.44

فیلترها در پوشه /etc/fail2ban/filter.d قرار دارند و در فایلی با همان نام jail ذخیره می‌شوند. اگر تجربه کار با تنظیمات سفارشی و regular expression‌ها را داشته باشید، شما می‌توانید فیلترها را به خوبی تنظیم نمایید.

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

sudo systemctl restart fail2ban

 

این مطلب نیز ممکن است برای شما مفید باشد: نحوه راه اندازی فایروال UFW در سرور اوبونتو و دبیان

 

کلاینت Fail2ban

Fail2ban با یک ابزار خط فرمان به نام fail2ban-client ارسال می‌شود که می‌توانید از آن برای تعامل با سرویس Fail2ban استفاده کنید.

به منظور مشاهده تمام گزینه‌های موجود، دستور را با گزینه -h فراخوانی نمایید:

fail2ban-client -h

 

از این ابزار می‌توان برای ممنوعیت/لغو ممنوعیت آدرس‌های IP، تغییر تنظیمات، راه‌اندازی مجدد سرویس و موارد دیگر استفاده کرد. در اینجا چند نمونه ارائه شده است:

دریافت وضعیت فعلی سرور:

sudo fail2ban-client status

بررسی وضعیت jail:

sudo fail2ban-client status sshd

حذف یک IP:

sudo fail2ban-client set sshd unbanip 11.22.33.44

ممنوع کردن IP:

sudo fail2ban-client set sshd banip 11.22.33.44

 

 

 

منبع:

linuxize