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-адресов в :
Защита службы
Поскольку Fail2ban следует запускать от имени суперпользователя, можно дополнительно защитить службу с помощью systemd.
Создайте конфигурационный drop-in файл для службы fail2ban.service
:
Параметр (в строке ) позволяет Fail2ban читать любые файлы и каталоги, а и CAP_NET_RAW
позволяют 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 (англ.)