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

 

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


نصب Fail2ban در CentOS

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

sudo dnf install fail2ban

پس از اتمام نصب، سرویس Fail2ban را فعال و راه‌اندازی کنید:

sudo systemctl enable --now fail2ban

برای بررسی اینکه آیا سرور Fail2ban در حال اجرا است، دستور زیر را تایپ نمایید:

sudo systemctl status fail2ban
fail2ban.service - Fail2Ban Service
   Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-09-10 12:53:45 UTC; 8s ago
...

تا اینجا، Fail2Ban را روی سرور CentOS خود اجرا کرده‌اید.

 

پیکربندی Fail2ban

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

Fail2ban، فایل‌های پیکربندی را به ترتیب زیر می‌خواند:

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

هر فایل .local، تنظیمات موجود در فایل .conf را لغو می‌کند.

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

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

 

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

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

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

sudo nano /etc/fail2ban/jail.local

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

 

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

 

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

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

بدین منظور، خط آغاز شده با 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 دقیقه تنظیم شده است. به طور کلی، بیشتر کاربران می‌خواهند زمان ممنوعیت بیشتری تعیین نمایید. برای این کار می‌توان در فایل jail.local مقدار دلخواه را به صورت زیر تعیین کرد:

                     /etc/fail2ban/jail.local

bantime  = 1d

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

findtime، بازه زمانی از زمان رخداد خرابی‌ها تا قبل از بلاک کردن را تعیین می‌نماید. به عنوان مثال، اگر Fail2ban بخواهد IP را بعد از پنج رفتار مخربانه بلاک کند، این رفتارهای مخربانه تنها باید در طول مدت findtime اتفاق بیفتد.

               /etc/fail2ban/jail.local

findtime  = 10m

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

               /etc/fail2ban/jail.local

maxretry = 5

 

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

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

               /etc/fail2ban/jail.local

action = %(action_mw)s

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

شما همچنین می‌توانید، آدرس‌های مربوط به ارسال و دریافت ایمیل را به صورت زیر تنظیم کنید:

                /etc/fail2ban/jail.local

destemail = admin@linuxize.com

sender = root@linuxize.com

 

Fail2ban Jails

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

Fail2ban، دارای چندین Jail برای سرویس‌های مختلف است و شما می‌توانید تنظیمات Jail خود را ایجاد کنید.

به طور پیش فرض، در CentOS 8، هیچ Jailsای فعال نیست. برای فعال کردن آن، شما باید enabled = true را بعد از عنوان Jails اضافه نمایید. مثال زیر، نحوه فعال کردن Jails sshd را نشان می‌دهد:

              /etc/fail2ban/jail.local

[sshd]
enabled   = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

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

              /etc/fail2ban/jail.local

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

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

sudo systemctl restart fail2ban

 

کلاینت Fail2ban

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

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

fail2ban-client -h

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

 

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

sudo fail2ban-client status sshd

 

آزاد کردن یک IP:

sudo fail2ban-client set sshd unbanip 23.34.45.56

 

ممنوع کردن یک IP:

sudo fail2ban-client set sshd banip 23.34.45.56

 

 

 

منبع:

linuxize