Установка и настройка Fail2ban
Last updated
Was this helpful?
Last updated
Was this helpful?
Fail2Ban – это сервис для блокировки хостов, вызывающих множественные ошибки при попытках аутентификации.
Fail2Ban работает путем мониторинга файлов журналов (например, /var/log/auth.log, /var/log/apache/access.log и др.) для выбранных записей и запуска сценариев на их основе. Чаще всего это используется для блокировки выбранных IP-адресов, которые могут принадлежать хостам, пытающимся нарушить безопасность системы. Он может запретить любой IP-адрес хоста, который делает слишком много попыток входа в систему или выполняет любые другие нежелательные действия в течение периода времени, определенного администратором. Включает поддержку как IPv4, так и IPv6. Опционально более длительные запреты могут быть настроены специально для нарушителей, которые продолжают возвращаться.
Для установите Fail2Ban, необходимо открыть терминал.
выполните команды:
После успешной установки плагина, выполните команду чтобы открыть конфигурационный файл
Далее, добавьте конфигурацию с вашими данными
ip_addresses — замените на белый список ip адресов на которых не будет действовать правило
Например: 127.0.0.1 (Если хотите добавить несколько 127.0.0.1 127.0.0.2)
sender_email — укажите email с которого будет отправляться сообщение
recipient_email — укажите e-mail, куда будет получение сообщение
Для включение выполните команды
Все конфигурационные файлы Fail2ban хранятся в директории /etc/fail2ban. Структура файлов всегда одинаковая:
action.d — директория, в которой содержатся файлы для настройки исполняемых действий (actions);
fail2ban.conf — файл с настройками сервиса fail2ban;
fail2ban.d — директория, в которой хранятся файлы с пользовательскими настройками fail2ban, по умолчанию пустая;
filter.d — директория с шаблонами, которые предназначены для анализа лог-файлов;
jail.conf — файл с настройками по умолчанию для защиты сервисов (Apache, Nginx, SSH и т. д.);
jail.d — директория для файлов с пользовательскими настройками для защиты сервисов (Apache, Nginx, SSH и т. д.);
paths-arch.conf, paths-debian.conf, paths-opensuse.conf, paths-common.conf — файлы для различных операционных систем (Arch Linux, Debian, openSUSE и других), содержащие настройки путей для операционной системы, например пути расположения лог-файлов.
Переходим к настройке Fail2ban для защиты SSH.
1. Открываем файл на редактирование при помощи любого текстового редактора:
Нам необходимо отредактировать следующие параметры:
Значение и смысл параметров:
[DEFAULT] — секция по умолчанию. Параметры из нее применяются ко всем остальным секциям, если не будут переопределены заранее;
ignoreip — список IP-адресов, подсетей или DNS-имен, для которых не будут действовать правила Fail2ban. Эти адреса не будут блокироваться даже при неудачных попытках подключения. Список адресов указывается через пробел;
[sshd] — указывается секция с наименованием сервиса, для которого будут созданы параметры блокировки адресов. Для каждого сервиса необходимо создавать свою секцию. В этом примере мы настраиваем параметры для демона sshd;
enabled — параметр, предназначенный для включения или отключения секции с сервисом. Для включения секции необходимо задать значение true, для отключения — false;
findtime — время в секундах, в течение которого определенное действие (неудачная попытка подключения) должно повториться определенное количество раз (параметр maxretry), после чего адрес будет заблокирован;
maxretry — количество неудачных попыток в течение периода findtime, после которых адреса нужно заблокировать;
bantime — продолжительность блокировки хоста в секундах;
filter — название фильтра, содержащее регулярные выражения для поиска подозрительных действий в лог-файлах сервиса. Фильтры для различных сервисов хранятся в директории /etc/fail2ban/filter.d/;
logpath — полный путь до лог-файла, который Fail2ban будет использовать для поиска сетевых адресов. По умолчанию SSH записывает все попытки входа в файл /var/log/auth.log.
Теперь сохраняем изменения в файле и выходим из редактора.
3. Перезапускаем сервис fail2ban и добавляем его в автозагрузку:
4. Проверяем статус Fail2ban:
После того как программа запустится, она сразу начнет выявлять подозрительные хосты и блокировать их.
Для начала проверим, какие зоны присутствуют в нашей системе. Для этого выполняем команду:
Чтобы получить более подробную информацию о конкретной зоне, а также отобразить количество заблокированных IP-адресов, необходимо выполнить команду:
В разделе Filter отображено общее количество срабатываний фильтра: каждая неудачная попытка подключения увеличивает параметр Total failed на один. В примере фильтр сработал три раза и после этого был заблокирован (Currently banned) один IP-адрес 192.168.126.1 (Banned IP list).
Fail2ban ведет свой лог-файл — fail2ban.log, в котором также записывается информация о заблокированных IP-адресах. Посмотреть ход работы Fail2ban можно, воспользовавшись командой:
IP-адрес будет заблокирован столько времени, сколько было указано в параметре bantime конфигурационного файла jail.local, но адрес можно разбанить раньше срока вручную. Для этого надо выполнить команду:
Sshd — это имя зоны, которая заблокировала адрес, а 192.168.126.1 — это IP-адрес, который необходимо разблокировать.
Чтобы узнать, какая зона заблокировала необходимый IP-адрес, надо выполнить команду:
В выводе команды необходимо найти цепочку. В имени цепочки указана ранее созданная зона, например sshd. В этом примере цепочка называется f2b-sshd, в ней есть адрес 192.168.126.1.
Заблокировать IP-адрес тоже можно в ручном режиме. Для этого надо задать зону и IP-адрес. Команда для блокировки IP-адреса 192.168.126.1 для зоны sshd будет выглядеть следующим образом: