Fail2ban (Русский)
Fail2ban (англ.) сканирует лог-файлы (например, /var/log/httpd/error_log) и блокирует IP-адреса, которые ведут себя подозрительно, к примеру, делая слишком много попыток входа с неверным паролем в попытках найти уязвимости и т.п. Обычно Fail2ban используется для обновления правил с целью блокировки IP-адресов на определённое время, но можно настроить и другие действия — например, отправку письма по электронной почте.
ignoreip.Установка
Установите пакет fail2ban.
Использование
Настройте Fail2ban, после чего включите и запустите службу fail2ban.service.
fail2ban-client
Утилита fail2ban-client позволяет следить за "клетками" (jails) (reload, restart, status и т.д.). Чтобы увидеть список всех доступных команд, введите:
$ fail2ban-client
Просмотр включённых "клеток" (jails):
# fail2ban-client status
Проверка статуса "клетки" на примере таковой для sshd:
# fail2ban-client status sshd
Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 9 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 0.0.0.0
Настройка
Рекомендуется создать файл /etc/fail2ban/jail.local, так как /etc/fail2ban/jail.conf может быть перезаписан во время обновления системы. К примеру, задать время блокировки в 1 день можно следующим образом:
/etc/fail2ban/jail.local
[DEFAULT] bantime = 1d
Также можно создавать отдельные файлы name.local в каталоге /etc/fail2ban/jail.d, например, /etc/fail2ban/jail.d/sshd.local.
Перезапустите службу fail2ban.service для применения изменений.
Включение "клеток"
По умолчанию все "клетки" отключены. Добавьте строку к конфигурации той "клетки", которую необходимо включить. Например, включение "клетки" OpenSSH выглядит следующим образом:
Почтовые уведомления
Для получения электронных писем при блокировке IP-адресов следует настроить SMTP-клиент (например, msmtp (англ.)) и изменить действие по умолчанию:
Советы и рекомендации
Пользовательская "клетка" SSH
Отредактируйте файл /etc/fail2ban/jail.d/sshd.local, добавив эту секцию и обновив список доверенных IP-адресов в :
- Может понадобиться задать
LogLevel VERBOSEв файле/etc/ssh/sshd_config, чтобы разрешить Fail2ban полноценный мониторинг. В противном случае, ошибки ввода пароля могут быть неправильно зарегистрированы. - Fail2ban поддерживает IPv6 с версии 0.10. Настройте межсетевой экран соответственно, например, запустите и включите службу
ip6tables.service. - Fail2ban поддерживает работу с пространствами имён журнала (которые задаются с помощью
LogNamespace=ваше_пространство_имёнв файлах юнитов). Задайте параметруbackend, к примеру, значениеbackend = systemd[journalfiles="/var/log/journal/*.ваше_пространство_имён/system.journal"], чтобы активировать эту возможность.
Защита службы
Поскольку Fail2ban следует запускать от имени суперпользователя, можно дополнительно защитить службу с помощью systemd.
Создайте конфигурационный drop-in файл для службы fail2ban.service:
Параметр (в строке ) позволяет Fail2ban читать любые файлы и каталоги, а CAP_NET_ADMIN и позволяют Fail2ban управлять любым межсетевым экраном c командной оболочкой. См. для получения более подробной информации.
При использовании параметра иерархия файловой системы будет доступна только для чтения, а позволит Fail2ban также вести запись в заданные каталоги.
От имени суперпользователя создайте каталог /var/log/fail2ban/ и пропишите в файл корректный путь :
Для применения изменений в файлах юнитов перезагрузите демон systemd и перезапустите службу fail2ban.service.
Смотрите также
- Using a Fail2Ban Jail to Whitelist a User (англ.)
- Optimising your Fail2Ban filters (англ.)
- Fail2Ban and sendmail (англ.)
- Fail2Ban and iptables (англ.)
- Fail2Ban 0.8.3 Howto (англ.)
- Monitoring the fail2ban log (англ.)