در حملات جستجوی فراگیر، مهاجمان رمزهای مختلف را امتحان میکنند تا زمانی که رمز صحیح را تشخیص دهند. اگرچه اجرای این حمله سایبری برای شناسایی کلمات عبور ضعیف بسیار کاربردی است ولی افزایش طول رمزها ارتباط مستقیمی با کرک کردنشان دارد. بنابراین قدم اول برای مقابله با حملات جستجوی فراگیر، استفاده از کلمات عبور قوی و پیچیده است.
در این مقاله سیستم لینوکس Fail2Ban که برای حفاظت از سرور ایمیل Axigen در برابر حملات مخرب طراحی شده مورد بررسی قرار میدهیم.
حفاظت از Axigen در برابر حمله جستجوی فراگیر با استفاده از ادغام لینوکس Fail2Ban
Fail2Ban یک سیستم پیشگیری از نفوذ است که قابلیت حفاظت از سرورهای ایمیل در برابر حملات جستجوی فراگیر را دارد. این سیستم بر فایلهای ثبت وقایع نظارت کرده و پس از بررسی logهای سیستم، آیپیهایی را که در بازه زمانی تعریف شده تلاشهای زیادی برای ورود یا اقدامات نامطلوب دیگری انجام میدهند مسدود میکند. مدیر سرور برای هر نوع فعالیتی در سرور مرزی را مشخص میکند. برای مثال Fail2Ban ورود کاربرانی را که بیش از ۳ بار پسورد اشتباه به سرور درخواست دادهاند بلاک میکند. انجام این کار از ایجاد لاگهای متوالی و زیاد که پردازشگر سرور را درگیر میکند جلوگیری میکند.
همچنین میتوانید از Fail2Ban برای تنظیم اقدامات لازم جهت مقابله با مهاجمانی که دوباره برای حمله برمیگردند، استفاده کنید.
سیستم در حالت پیشفرض بهگونهای تنظیم شده که پس از گذشت مدتی مشخص، میزبانهای مسدود شده را به حالت عادی برگرداند تا دسترسیهای مجاز به دلیل اشتباه در پیکربندی قطع نشوند. بازه زمانی معمولاً چند دقیقه برای لغو مسدود شدن مناسب است و به پیشگیری از سیل درخواستهای اتصال توسط مهاجمان کمک میکند. این بازه زمانی همچنین احتمال اجرای موفق حملات واژهنامه را کاهش میدهد.
Fail2Ban میتواند پس از شناسایی آیپیهای متخلف اقدامات زیر را انجام دهد:
- به روزرسانی Netfilter[1]/ جداول آیپی یا قوانین فایروال؛
- مسدود یک آیپی؛
- ارسال اعلانهای ایمیلی؛
- هر اقدام تعریف شده توسط کاربر که امکان اجرای آن با استفاده از یک اسکریپت پایتون وجود داشته باشد.
چگونه Fail2Ban را برای ادغام با Axigen نصب و پیکربندی کنیم؟
برای افزایش سطح مقاومت سرور در برابر حملات جستجوی فراگیر، میتوانید با اجرای مراحل زیر Fail2Ban را بر روی سرور نصب کنید.
1. فعال کردن ثبت رویدادهای امنیتی در Axigen با استفاده از این فرمانها
فرمانهای فعالسازی ثبت رویدادهای امنیتی
<#> config server
<server#> config log
<server-log#> set enableSecurityLog yes
<server-log#> commit
<server#> commit
<#> save config
<#> quit
ریاستارت کردن سرویس Axigen
/etc/init.d/axigen restart
2. نصب Fail2Ban با استفاده از ابزار مدیریت پکیج سیستمعامل
برای CentOS / RedHat
نصب مخزن Epel
yum install epel-release
نصب Fail2Ban
yum install Fail2Ban
برای اوبونتو/دبیان
Install Fail2Ban
sudo apt install Fail2Ban
3. ایجاد فایل axigen.conf در پوشه /etc/Fail2Ban/filter.d و اضافه کردن پیکربندی زیر
# Fail2Ban filter for axigen
#
# Revision: 2016040601
#
# If you want to protect Axigen from being bruteforced by password
# authentication then configure enableSecurityLog = yes in axigen.cfg
# and reload configuration.
#
# Log file: ${AXIGEN_WORK_DIR}/log/security.txt
# Log example: 2016-03-08 12:41:29 +0200 02 aximon SECURITY:PROXY_WEBMAIL;0002607C;82.36.25.70;61707;OP_FAIL;root@q.me;Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Firefox/45.0;Authentication error; Invalid password
#
#
# Notes:
# * Feature introduced by Axigen version 9.0
# * Axigen 9 default separator was ‘:’
# * Axigen 10 default separator switched to ‘;’ (due to IPv6 address format)
#
[INCLUDES]
# Read common prefixes. If any customizations available — read them from
# common.local
before = common.conf
[Definition]
_daemon = axigen
failregex = ^%(__prefix_line)s.* SECURITY:[A-Z3_\-]+[:;][0-9A-F]+[:;]<HOST>[:;][0-9]+[:;]OP_FAIL[:;].*$
ignoreregex =
[Init]
# “maxlines” is number of log lines to buffer for multi-line regex searches
maxlines = 10
4. ویرایش فایل /etc/fail2Ban/jail.d/jail.local و اضافه کردن خطوط زیر به انتهای آن
etc/fail2ban/jail.d/jail.local
[axigen]
enabled = true
backend = polling
logpath = /var/opt/axigen/log/security.txt
banaction = iptables-allports
maxretry = 10
findtime = 600
bantime = 600
اگر فایل /etc/fail2Ban/jail.d/jail.local موجود نیست، آن را ایجاد کنید.
اگر فایل لازم (security.txt) در مسیر پیش فرض قرار ندارد، مقدار logpath را تغییر داده و مقدار درست را در آن قرار دهید.
5. اضافه کردن آیپیهای قابل اطمینان به لیست سفید
برای پیشگیری از قطع دسترسی مدیر به سیستم، میتوانید در فایل /etc/fail2ban/jail.conf آیپیهایی که همیشه مجاز به دسترسی هستند را مشخص کنید:
# “ignoreip” can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban
# will not ban a host which matches an address in this list. Several addresses
# can be defined using space (and/or comma) separator.
ignoreip = 192.168.1.10 192.168.2.0/24
6. فعالسازی و شروع سرویس fail2Ban
systemctl enable fail2ban
systemctl start fail2Ban
7. بررسی فهرست آیپیهای مسدود شده
fail2ban-client status <JAIL_NAME>
مثال
# fail2ban-client status axigen Status for the jail: axigen
|- Filter
| |- Currently failed: 0
| |- Total failed: 10
| `- File list: /var/opt/axigen/log/security.txt `- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 192.168.4.145
8. لغو مسدود شدن یک آیپی
fail2ban-client set <YOUR_JAIL_NAME> unbanip <IP_ADDRESS>
مثال:
# fail2ban-client set axigen unbanip 192.168.4.145
1
# fail2ban-client status axigen Status for the jail: axigen
|- Filter
| |- Currently failed: 0
| |- Total failed: 10
| `- File list: /var/opt/axigen/log/security.txt `- Actions
|- Currently banned: 0
|- Total banned: 1
:`- Banned IP list
[1] ساختار Netfilter جهت پردازش پویای بسته های شبکه در سیستم عامل لینوکس طراحی و پیادهسازی شده است.
منبع: axigen