Fail2ban ви позволява да блокирате достъпа до сървъра или работещите услуги въз основа на анализа на регистрационните файлове и връзките. Fail2Ban може автоматично да създава правила за защитна стена, за да блокира конкретни IP адреси, ако действията от този IP адрес бъдат открити като подозрителни. И така, Fail2Ban може да защити вашия сървър от намиране на парола чрез SSH, DDoS атаки, експлоатират опити за експлоатация и извършване на забранени действия.
Всяка сървърна услуга, чиито портове са отворени към външния свят, е потенциално уязвима. Пристанищата на някои услуги могат да бъдат затворени, но не всички могат да направят това. Например, ако искате вашата SMTP пощенска услуга да работи пълноценно, не можете да я деактивирате или да блокирате порта на защитната стена и от време на време можете да видите в регистрационните файлове данни за опита за избор на парола за акаунта. Това се случва с други услуги..
Обикновено на всичките си сървъри затварям SSH достъп отвън, защото Свързвам се към сървърите си от статичния си IP адрес или чрез OpenVPN връзка. Но това не винаги е възможно. Подмяната на стандартни портове идва на помощ или конфигурира на сървъра за услуги fail2ban. В този пример ще покажем как да инсталирате и използвате fail2ban на CentOS, но можете да използвате тази инструкция и за други Linux дистрибуции..
Съдържание:
- Инсталиране и първоначална настройка на Fail2Ban в CentOS 8/7
- Използване на Fail2Ban за защита на SSH от проверка на паролата
- Регистрация Fail2Ban
- Осигуряване на Apache с Fail2Ban
- Конфигуриране на пакети Fail2Ban и Nginx
- Осигуряване на MySQL с Fail2Ban
- Правила на Fail2Ban за Exim
- Fail2Ban IP списък, IP деблокиране
Инсталиране и първоначална настройка на Fail2Ban в CentOS 8/7
Пакетът за инсталиране на fail2ban е в хранилището на Epel, ние ще го свържем:
# yum инсталирате epel-release -y
След като свържете хранилището, можете да инсталирате fail2ban чрез yum или dnf (в CentOS 8):
# yum инсталирате fail2ban -y
Както всяка друга услуга, fail2ban трябва да се добави към стартиране, така че да се стартира автоматично, когато системата се рестартира:
[root @ server ~] # systemctl активира fail2ban
Създаден symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service → /usr/lib/systemd/system/fail2ban.service.
офис fail2ban съхранява конфигурационни файлове в директория / и т.н. / fail2ban. Основен конфигурационен файл - /etc/fail2ban/jail.conf. Тъй като този файл може да бъде презаписан при актуализиране на услугата, за да работи, трябва да създадете файл jail.local. Също така файлове в директория /etc/fail2ban/jail.d/ може да се използва за отмяна на настройките в горните файлове. Файловете се прилагат в следния ред:
- /etc/fail2ban/jail.conf
- /etc/fail2ban/jail.d/*.conf
- /etc/fail2ban/jail.local
- /etc/fail2ban/jail.d/*.local
Използване на Fail2Ban за защита на SSH от проверка на паролата
Създайте файл и направете настройките:
# nano /etc/fail2ban/jail.local
И добавете съдържанието към него:
[DEFAULT] # Ban хостинг за един час: bantime = 3600 # Override /etc/fail2ban/jail.d/00-firewalld.conf: banaction = iptables-multiport [sshd] enable = true
Тази конфигурация задава ново време за блокиране на IP адреси за всички услуги, задава използването IPTABLES за брави и защитата за sshd е разрешена.
За да използвате firewalld за филтриране, посочете:
banaction = firewallcmd-ipset
След промяна на настройките, рестартирайте услугата:
# systemctl рестартиране fail2ban
За да видите състоянието на fail2ban и да проверите списъка със защитени услуги, изпълнете командата:
[root @ server ~] # fail2ban-status на клиента
Състояние | - Брой на затвора: 1 '- Списък на затвора: sshd
Можете да поискате текущото състояние на заключване на fail2ban за конкретна услуга:
# fail2ban-status на клиента sshd
Във файл jail.conf може да опише общи параметри, които няма да бъдат отменени jail.local.
Отключете линията:
ignoreip = 127.0.0.1/8
Променете следните стойности:bantime = 10м
- време, за което IP ще бъде блокиранfindtime = 10м
- време, през което неуспешните опити за упълномощаване ще бъдат отчетени.макретри = 3
- брой опити преди блокирането
За да получавате известия по имейл, трябва да конфигурирате следните опции:destemail = [email protected]
-получателятsender = [email protected]
- подателmta = постфикс
- SMTP услуга, чрез която изпраща
За да конфигурирате блокиране за отделни услуги във файла /etc/fail2ban/jail.local след блока [DEFAULT] се създава блок за желаната услуга, например, както при sshd. Добавете някои настройки към него:
[sshd] активиран = истински порт = ssh logpath =% (sshd_log) s
Посочихме кой порт да блокираме и къде да напишем блокиращите регистрационни файлове. Обърнете внимание на директорията /etc/fail2ban/filter.d, там са описани филтри, с помощта на които ще бъдат анализирани записите в дневника и да се провери дали този или онзи запис показва неуспешна автентификация. Ако изброите файловете в директория, можете да намерите правила за fail2ban за най-популярните услуги:# ls /etc/fail2ban/filter.d
Файловете са описани много подробно и можете да изучавате какво трябва да разберете как се извършват проверките в журнала..
Регистрация Fail2Ban
За да проверите дневника fail2ban, изпълнете командата:
# journalctl -b -u fail2ban
Можете също да проверите дневниците в реално време:
# опашка -F /var/log/fail2ban.log
Изход на дневника:
2019-12-05 12: 13: 26,914 fail2ban.action [9750]: БЕЛЕЖКА [sshd] Възстановяване на бан 222.186.180.17 2019-12-05 12: 13: 26.930 fail2ban.action [9750]: БЕЛЕЖКА [sshd] Възстановяване на бан 222.186 .180.223 2019-12-05 12: 13: 26,944 fail2ban.action [9750]: ЗАБЕЛЕЖКА [sshd] Възстановяване на забрана 36.72.82.10 2019-12-05 12: 13: 26.958 fail2ban.action [9750]: ЗАБЕЛЕЖКА [sshd] Възстановяване Забрана 40.117.135.57 2019-12-05 12: 13: 26.973 fail2ban.action [9750]: БЕЛЕЖКА [sshd] Възстановяване на бан 45.55.155.224 2019-12-05 12: 13: 26,988 fail2ban.action [9750]: ЗАБЕЛЕЖКА [sshd ] Възстановяване на забрана 67.205.135.127 2019-12-05 12: 13: 27,003 fail2ban.action [9750]: ЗАБЕЛЕЖКА [sshd] Възстановяване на забрана 83.171.107.216 2019-12-05 12: 13: 43.362 fail2ban.filter [9750]: INFO [sshd] Намерено 183.87.134.98 - 2019-12-05 12:13:42 2019-12-05 12: 13: 45,571 fail2ban.filter [9750]: INFO [sshd] Намерено 183.87.134.98 - 2019-12-05 12 : 13: 45 2019-12-05 12: 15: 46,109 fail2ban.filter [9750]: INFO [sshd] Намерено 112.64.170.178 - 2019-12-05 12:15:45 2019-12-05 12: 17: 05,317 fail2ban.action [9750]: ЗАБЕЛЕЖКА [sshd] Unba n 222.186.175.216
Както виждате, fail2ban работи и периодично блокира или премахва блокиране за IP адреси.
За да проверите кои IP адреси са блокирани в iptables от fail2ban, направете:
# iptables -L
Както можете да видите, когато ssh е отворен навън, от време на време някой се опитва да вземе парола и да влезе. Ако проверите статистиката след известно време, можете да видите, че броят на блокираните IP адреси расте.
Осигуряване на Apache с Fail2Ban
Ако искате да персонализирате fail2ban за вашия apache (httpd), добавете следните настройки към jail.local:
# откриване на неуспешни опити за парола [apache] активиран = истински порт = http, https filter = apache-auth logpath = / var / log / httpd / error_log maxretry = 3 # блокира IP адреси, които директно имат достъп до скриптове с разширението php, asp, exe, pl, cgi, scgi [apache-noscript] активиран = истински порт = http, https filter = apache-noscript logpath = / var / log / httpd / error_log maxretry = 3 # откриване на опити за преливане на Apache [apache-overflows] enable = true port = http, https filter = apache-overflows logpath = / var / log / httpd / error_log maxretry = 2 # откриване на неуспешни опити за търсене в домашната директория на сървъра [apache-nohome] активиран = true port = http, https filter = apache -nohome logpath = / var / log / httpd / * error_log maxretry = 2
След като променим конфигурационния файл, рестартираме услугата и проверяваме състоянието:
[root @ server ~] # fail2ban-client status apache
Състояние на затвора: apache | - Filter | | - В момента не е успешно: 0 | | - Общо не е успешно: 0 | '- Списък с файлове: / var / log / httpd / error_log' - Действия | - В момента е забранен: 0 | - Общо забранено: 0 '- Забранен IP списък:
За теста инсталирах на сървъра Joomla, след което се опитах да отворя несъществуващ файл и fail2ban блокира ме:
[root @ server httpd] # fail2ban-client status apache-noscript
Състояние на затвора: apache-noscript | - Filter | | - В момента не е успешно: 1 | | - Общо не е успешно: 6 | '- Списък с файлове: / var / log / httpd / error_log' - Действия | - В момента забранени: 1 | - Общо забранени: 1 '- Забранен IP списък: *. *. *. *
Конфигуриране на пакети Fail2Ban и Nginx
Ако сте уеб сървър Nginx и сайтът има секции, изискващи разрешение, може да имате проблеми с опитите за изброяване на пароли. за fail2ban можем да определим да използваме файла Nginx-HTTP-auth.conf, По подразбиране той вече е описан в конфигурационния файл. /etc/fail2ban/jail.conf:
[root @ server ~] # cat /etc/fail2ban/jail.conf | grep nginx
[nginx-http-auth] logpath =% (nginx_error_log) s # За да използвате затвора 'nginx-limit-req', трябва да имате 'ngx_http_limit_req_module' # и да определите 'limit_req' и 'limit_req_zone', както е описано в nginx документация # http: / /nginx.org/en/docs/http/ngx_http_limit_req_module.html # или например вижте в „config / filter.d / nginx-limit-req.conf“ [nginx-limit-req] logpath =% (nginx_error_log) s [ nginx-botsearch] logpath =% (nginx_error_log) s logpath =% (nginx_access_log) s
Трябва ли да го включим в конфигурационния файл /etc/fail2ban/jail.local като добавите:
[nginx-http-auth] активиран = true
След всички настройки, не забравяйте да рестартирате услугата:
# systemctl рестартиране fail2ban
Осигуряване на MySQL с Fail2Ban
За да защитите MySQL, трябва да добавите отделен блок към конфигурационния файл jail.local:
[mysqld-auth] активиран = истински филтър = mysqld-auth порт = 3306 logpath = /var/log/mysql/error.log
Тази настройка ще ви предпази от намиране на парола за mysql потребителя (това е много честа сила).
Правила на Fail2Ban за Exim
За да конфигурирате защита за услугата Exim поща, направете следната конфигурация:
[exim] активиран = true filter = exim action = iptables-multiport [name = exim, port = "25,465,587"] logpath = / var / log / exim / mainlog
Така че можете да персонализирате fail2ban да работите с почти всички популярни услуги и вашият сървър ще стане възможно най-сигурен.
Fail2Ban IP списък, IP деблокиране
За да отключите IP, който е блокиран fail2ban, използвайте командата:
# fail2ban-client set SECTION изключване на IP
- където SECTION е името на секцията в конфигурационния файл, според правилата на който вашият IP адрес е блокиран. Например:
# fail2ban-client set apache-noscript unbanip 185. *. *. *
Можете да добавите конкретни IP адреси към изключения от fail2ban (белият списък). За да направите това, в конфигурационния файл jail.conf въведете IP в реда:
ignoreip = 185. *. *. *
Като добавих моя IP адрес към изключенията, извърших няколко атаки като предишната и блокирането не се случи.
Както можете да видите, fai2ban е доста проста за настройка, но е доста ефективно средство за допълнителна защита на вашия сървър от натрапници. За Windows, за съжаление, не съм виждал безплатни програми с подобна функционалност (можете да опитате да блокирате IP адреси с помощта на PowerShell - вижте статията Защита на RDP от проверка с парола).