نحوه نصب و راه اندازی Fail2ban بر روری Ubuntu 20.04
نصب و تنظیمات Fail2ban
هر سرویسی که در سیستم به طریقی با اینترنت در ارتباط باشد، در معرض حملات مختلف قرار دارد. برای مثال اگر سرویسی دارید که بر روی یک شبکه عمومی قابل دسترس است، مهاجم میتواند به سادگی و با استفاده از ابزارهایی مانند Ncrack بر روی آن حمله Brute-force کرده و از این طریق به اطلاعات کاربری سرویس شما دسترسی پیدا کند.
Fail2ban ابزاریست که به شما کمک میکند تا از طریق مانیتورینگ لاگهای مربوط به سرویسهای سیستم لینوکس و پیدا کردن فعالیتهای مشکوک در بین این لاگها از حمله Brute-force یا سایر حملات اتوماتیک جلوگیری نمایید. Fail2ban در اصل از عبارات منظم برای اسکن لاگها استفاده میکند. بنابراین همه ورودیهایی که با الگوی مورد نظر مطابقت داشته باشند به تعداد تلاشها اضافه میشود و اگر این عدد از آستانه تعریف شده عبور کند، Fail2ban آدرس IP متخلف را از طریق فایروال سیستم برای مدت زمان مشخصی مسدود میکند. در صورت اتمام این زمان، آدرس IP مجددا از لیست مسدود شدهها خارج میشود.
نصب Fail2 ban بر روی Ubuntu
پکیچ مربوط به Fail2ban به صورت پیشفرض در Repositoryهای Ubuntu وجود دارد. بنابراین برای نصب آن از دستورات زیر استفاده کنید.
Iranshell@Fail2ban:~$ sudo apt update
Iranshell@Fail2ban:~$ sudo apt install fail2ban
بعد از اتمام نصب نرم افزار Fail2ban، این نرم افزار به صورت اتوماتیک شروع به کار میکند. برای چک کردن وضعیت سرویس از دستور زیر استفاده میکنیم.
Iranshell@Fail2ban:~$ systemctl status fail2ban
در صورت نصب صحیح برنانه، خروجی این دستور شبیه عکس زیر خواهد بود.
تنظیمات Fail2ban
به صورت پیش فرض Fail2ban شامل دو فایل تنظیمات زیر میشود. این به هیچ وجه توصیه نمیشود که تنظمیات مد نظر در داخل این فایلها ذخیره شود. زیرا ممکن است در هنگام بروزسانی این فایلها بازنویسی شده و از بین بروند.
Iranshell@Fail2ban:~$ nano /etc/fail2ban/jail.conf
Iranshell@Fail2ban:~$ nano /etc/fail2ban/jail.d/default-debian.conf
در هنگامی که سرویس Fail2ban شروع به کار میکند، تنظیمات موجود در مسیر نرم افزار را به ترتیب زیر میخواند. هر فایل با پسوند local تنظیمات موجود در فایل conf را بازنویسی میکند.
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.d/jail.local
/etc/fail2ban/jail.d/*.local
برای بیشتر کاربران سادهترین راه کپی کردن فایل jail.conf داخل فایل jail.local و انجام تنظیمات مورد نیاز میباشد. اما کاربران حرفهای به جای کپی کردن این فایل، از اول آن را ایجاد و تنظیم میکنند. نکته دیگر نیز در مورد این فایل این است که نیاز نیست همه تنظیمات داخل فایل conf داخل این فایل دقیقا باشد. فقط کافیست تنظیماتی که قرار است بازنویسی شود در داخل آن وارد شود.
برای شروع انجام تنظیمات، یک فایل با پسوند local از فایل تنظیمات پیشفرض fail2ban ایجاد میکنیم.
Iranshell@Fail2ban:~$ cp /etc/fail2ban/jail.{conf ,local}
لیست آدرسهای مجاز (Whitelist IP Addresses)
آدرسها ونج IPها و آدرس ایستگاههایی کاری که میخواهیم از قاعده مسدود شدن مستثنا باشند را میتوانیم در بخش ignoreip اضافه کنیم. درواقع در این قسمت IP لوکال سیستم خودمان و سیستمهایی دیگری که میخواهیم جزء لیست سفید باشند را اضافه میکنیم.
برای اینکار خطی که با ignoreip شرورع میشود را از کامت در آورده و IPها را به شکل زیر اضافه میکنیم.
تنظمات مسدود سازی (Ban settings)
مقادیر گزینههای findtime ،Bantime و maxretry برای تعریف بازه زمانی مسدودسازی و شرایط آن میباشد.
متغییر bantime بازه زمانی مربوط به مسدودسازی IP را مشخص میکند. زمانی که این مقدار بدون واحد تعریف شود به صورت پیشفرض واحد ثانیه برای آن در نظر گرفته میشود. همچنین در صورت عدم مشخص کردن مقدار برای آن، به صورت پیشفرض مقدار 10 دقیقه برای آن در نطر گرفته میشود که میتوانیم ان را بر روی هر مقدداری تنظیم کنیم.
bantime = 1d
findtime نیز متغیری است که بازه زمانی بین تعداد تلاشهای ناموفق قبل از انسداد IP را مشخص میکند. برای مثال اگر شما تنظیم کنید که Fail2ban بعد از 5 بار تلاش ناموفق IP مورد نظر را مسدود کند، این اتفاق بایستی در بازه زمانی findtime اتفاق بیافتد.
findtime = 10m
maxretry در واقع تعداد تلاشهای ناموفق یک آدرس IP قبل انسداد میباشد. این عدد به صورت پیشفرض 5 در نظر گرفته شده است که به نظر برای بسیاری از کاربران مناسب باشد.
maxretry = 5
تنظیمات Email برای اطلاع رسانی
Fail2ban علاوه بر مسدودسازی IP متخلف میتواند از طریق Email این موضوع را به مدیر سیستم اطلاع دهد. برای ارسال ایمیل نیاز است که بر روی سرور سرویس SMTP را نصب کنیم و همچنین تنظیمات مربوط به مسدود کردن ادرسهای متخلف را از مقدار پیشفرض به مقدار زیر تغییر دهیم.
Iranshell@Fail2ban:~$ nano /etc/fail2ban/jail.local
action = %(action_mw)s
با تنظیم این مقدار، Fail2ban علاوه بر مسدودسازی IP، ایمیلی شامل اطلاعات IP مسدود شده را نیز برای مدیر سیستم ارسال میکند. اگر بخواهیم لاگهای مرتبط با IP نیز به همراه ایمیل ارسال شود از مقدار زیر را برای action تنظیم میکنیم.
Iranshell@Fail2ban:~$ nano /etc/fail2ban/jail.local
(action_mwl)s
تنظیمات مربوط به ایمیل فرستنده و گیرنده.
Iranshell@Fail2ban:~$ nano /etc/fail2ban/jail.local
destemail = [email protected]
sender = [email protected]
Fail2ban jails
Fail2ban از مفهوم محدودیت برای انجام کار خود استفاده میکند. یک محدودیت شامل تعریف یک سرویس، فیلترها مربوط به آن سرویس و اقدامات مد نظر میباشد. برای اعمال محدویتها لاگهای تولید شده توسط سرویس با الگوی مورد جستجو تطابق داشته میشوند و در صورت تطابق، این لاگها در یک بازه زمانی خاص شمارش میشوند. در صورتی که وضعیت تعریف شده برآورده شود، اقدام مورد انتظار اتخاذ می شود.
در فایل تنظیمات Fail2ban تعدادی محدودیت پیشفرض برای سرویسهای مختلف وجود دارد که می توانیم در کنار آنها تنظیمات مد نظر خودمان را نیز تعریف کنیم. در فایل تنظیمات به صورت پیشفرض فقط محدودیت مربوط به ssh فعال میباشد. برای فعال کردن یک محدودیت کافیست فقط بعد از عنوان محدودیت از عبارت enabled = true استفاده کنیم.
[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 4w
ignoreip = 127.0.0.1/8 192.168.3.0/24
Fail2ban-Client
به صورت پیشفرض fail2ban دارای یک ابزار خط فرمان به نام fail2ban-client میباشد که از طریق آن میتوان به صورت مستقیم با سرویس fail2ban تعامل کرد.
برای مشاهده کلیه گزینههای قابل استفاده دستور زیر را به همراه فلگ h در ترمینال اجرا کنید.
fail2ban -h
این ابزار میتواند برای مسدود سازی و از مسدود خارج کردن آدرسهای IP، تغییر تنظیمات، رستارت کردن سرویس و سایر موارد استفاده شود. در زیرسه دستور برای چک کردن وضعیت سرویس، مسدود کردن و از مسدود خارج کردن یک آدرس IP آورده شده است.
چک کردن وضعیت jail
Iranshell@Fail2ban:~$ sudo fail2ban-client status sshd
از مسدود خارج کردن آدرس IP
Iranshell@Fail2ban:~$ sudo fail2ban-client set sshd unbanip 192.168.3.10
مسدود کردن آدرس IP
Iranshell@Fail2ban:~$ sudo fail2ban-client set sshd banip 192.168.3.10
دیدگاهتان را بنویسید