Программа для защиты серверов от атак методом грубой силы. Написанная на языке программирования Python, может работать на POSIX-системах имеющих встроенный менеджер пакетов и брандмауэр, например, iptables.
- Автор: Кирил Жакьер
- Разработчики: Кирил Жакьер, Ярослав Хальченко, Даниель Блэк, Стивен Хискокс, Артуро «Буанзо» Буслейман и другие.
Источники
Принцип работы
Fail2ban считывает логи (например, /var/log/apache2/error.log) и блокирует IP-адреса, активность которых является подозрительной(например, большое количество попыток войти с неправильно введенным паролем, выполнение опасных или бессмысленных действий и т.д.). В случае обнаружения подобных действий программа обновляет правила брандмауэра для блокировки такого IP-адреса на определенный промежуток времени. Программа может быть настроена и для выполнения другого действия (например, отправки электронного письма).
Конфигурация по умолчанию содержит фильтры для Apache, Lighttpd, sshd, vsftpd, qmail, Postfix, Courier Mail Server, Asterisk и других популярных серверных приложений. В фильтрах используются регулярные выражения, которые могут быть легко изменены и настроены в случае необходимости.
Fail2Ban сканирует файлы журналов, такие как /var/log/auth.log, регистрирует и блокирует IP-адреса, которые совершают слишком много неудачных попыток входа в систему. Для этого он обновляет правила системного брандмауэра, чтобы отклонять новые подключения с этих IP-адресов на настраиваемый период времени. Fail2Ban поставляется готовым к чтению многих стандартных файлов журналов, таких как файлы для sshd и Apache, и легко настраивается для чтения любого файла журнала по вашему выбору при обнаружении любой ошибки, которую вы пожелаете.
Хотя Fail2Ban способен снизить количество неправильных попыток аутентификации, он не может устранить риск, связанный со слабой аутентификацией. Настройте службы таким образом, чтобы они использовали только двухфакторные или общедоступные/частные механизмы аутентификации, если вы действительно хотите защитить службы.
Дополнительную документацию, часто задаваемые вопросы и инструкции можно найти на странице руководства по fail2ban(1), вики-странице, документации для разработчиков и веб-сайте: https://www.fail2ban.org
Пример настройки
liv@singularity:/etc/fail2ban/jail.local
[sshd]
enabled = true
sshd_backend = systemd
mode = aggressive
[recidive]
enabled = true
bantime = 9w
findtime = 3d
[DEFAULT]
action = %(action_)s
abuseipdb[abuseipdb_apikey=0axxxe1]
bantime.increment = true
bantime.rndtime = 30m
bantime.maxtime = 60d
bantime.factor = 2
bantime.formula = ban.Time * math.exp(float(ban.Count+1)*banFactor)/math.exp(1*banFactor)
bantime.overalljails = true
banaction = nftables
banaction_allports = nftables[type=allports]
Проверка списка заблокированных
liv@singularity:~$ sudo fail2ban-client banned
[[
{"sshd": ["170.64.185.217", "45.78.6.82", "64.23.201.81", "92.55.190.215", "51.159.103.10"]},
{"apache-auth": []},
{"apache-noscript": []},
{"apache-overflows": []},
{"apache-nohome": []},
{"recidive": []}
]]