Каждый день тысячи злоумышленников пытаются получить несанкционированный доступ к системам, выходящим в интернет, в том числе и к вашим серверам. Чтобы минимизировать риски взлома, необходимо выстроить надежную защиту вашей инфраструктуры, которая будет самостоятельно блокировать подозрительные активности. Разбираемся с одним из инструментов защиты Linux- и FreeBSD-серверов — Fail2Ban: как работает этот сервис, как его установить и настроить, какие задачи он будет решать на сервере.

Что такое Fail2Ban

Fail2Ban — открытый программный пакет, разработанный для защиты систем Linux от повторных атак. Эффективен в связке с SSH, Apache и Nginx, где частые неудачные попытки входа традиционно трактуются как признаки активной атаки. Программа анализирует лог-файлы (log), выявляет подозрительную активность — повторяющиеся неудачные попытки авторизации (fail) и при необходимости блокирует (ban) IP-адреса, с которых совершаются подобные действия.

Этот инструмент поставляется в виде набора скриптов и файлов конфигураций, прост в применении и гибок в настройке. Хотя изначально он был создан для работы с iptables, сегодня Fail2Ban умеет взаимодействовать с иными фаерволами — типа firewalld и nftables. Пакет поставляется с готовыми конфигурациями для популярных служб. Установка и работа с Fail2Ban не требует глубоких знаний — вы можете быстро настроить защиту, не имея большого опыта администрирования серверов.

Как Fail2Ban обнаруживает атаки

Этот сервис постоянно мониторит лог-файлы разных служб. Например, если злоумышленник пытается подобрать пароль к SSH, система будет записывать каждую попытку входа в соответствующий log-файл. Fail2Ban прочитает эти записи, распознает шаблоны неудачных авторизаций и определит, когда число попыток превысит заданный порог.

После этого программа выполнит заранее предусмотренное действие — обычно это блокировка (ban) IP-адреса на определённый промежуток времени. Таким образом Fail2Ban защищает servers от брутфорса и других типов автоматических attacks. Помимо блокировки адресов сервис может отправлять уведомления администратору, использовать свои собственные фильтры и вызывать внешние сценарии при обнаружении угроз.

Нужно понимать, что Fail2ban — всё же не полноценная система предотвращения вторжений, а лишь дополнительный слой безопасности. Он не заменяет антивирусы, фаерволы или другие средства защиты, но отлично дополняет их.

Как Fail2Ban обнаруживает атаки
Image by vectorjuice on Freepik.

Быстрая установка Fail2Ban (Ubuntu/Debian)

Она несложная и занимает всего пару минут. Наберите в терминале команды:

sudo apt update && sudo apt install fail2ban

Затем установите Fail2Ban server как автозапускаемый компонент:

sudo systemctl enable fail2ban

Проверьте его статус:

sudo systemctl status fail2ban

При необходимости запустите сервис вручную:

sudo systemctl start fail2ban

Далее для полноценной защиты понадобится дополнительная настройка.

Минимальная настройка: файл jail.local

После установки Fail2Ban использует файл /etc/fail2ban/jail.conf в качестве основного источника настроек. Однако не стоит редактировать его напрямую, поскольку при обновлении пакета содержимое может быть перезаписано. Вместо этого скопируйте файл etc/fail2ban/jail.conf в /etc/fail2ban/jail.local и пропишите желаемые параметры для каждой службы:

  • bantime — время блокировки IP;
  • findtime — временной интервал неудачных попыток;
  • maxretry — максимальное число неудачных попыток до бана.

Значения этих параметров определяют, как часто и при каких условиях будет происходить блокировка. Такой подход позволит сохранить пользовательские настройки после обновления.

SSH-защита

SSH — одна из часто атакуемых служб. Fail2Ban изначально уже содержит готовые правила мониторинга подключений и блокирования подозрительной активности.


                        [sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 900
findtime = 600

С такой конфигурацией при запуске Fail2Ban активируется мониторинг SSH-службы и устанавливается максимальное число неудачных попыток входа равным пяти, время блокировки — 15 минут, а временное окно для подсчета попыток — 10 минут.

Дополнительно возможно настроить исключения доверенных IP-адресов, чтобы предотвратить случайный бан административных подключений.

Защита служб Apache/Nginx

Для веб-серверов можно использовать фильтры от сканирования уязвимостей и брутфорсов.

Защита Apache:


                        [apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /va
r/log/apache2/error.log
maxretry = 5
bantime = 900

                        [apache-badbots]
enabled = true
port = http,https
filter = apache-badbots
logpath = /var/log/apache2/access.log
maxretry = 4
bantime = 900

Для Nginx конфигурация будет аналогичной, но с соответствующими путями к логам:


                        [nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 4
bantime = 900

Теперь перезапустите сервис fail2ban, чтобы инициировать новые настройки.

Полезные команды для проверки статуса

Завершив настройку, проверьте, что Fail2ban работает корректно. Вот несколько полезных команд:

  1. Просмотр статуса всех jail'ов:

    sudo fail2ban-client status
  2. Подробные сведения о конкретном jail'е:

    sudo fail2ban-client status sshd
  3. Перечень забаненных IP для SSH:

    sudo fail2ban-client get sshd banned
  4. Ручная блокировка адреса:

    sudo fail2ban-client set sshd banip 188.233.108.60
  5. Разблокировка IP:

    sudo fail2ban-client set sshd unbanip 188.233.108.60
  6. Перезагрузка конфигурации без остановки сервиса:

    sudo fail2ban-client reload

Эти команды обеспечивают полный контроль над работой Fail2ban — у вас будет возможность быстро реагировать на изменяющиеся условия безопасности.

Заключение

Если у вас до сих пор не установлен пакет Fail2ban, самое время развернуть его, настроить и начать работать над повышением уровня безопасности вашего Linux-сервера. Установка и конфигурация займут минимум времени, а эффект от работы вы ощутите практически сразу. Автоматическая блокировка подозрительных IP-адресов и регулярный анализ содержимого лог-файлов помогут вашему ресурсу противостоять многим типам атак, причем защита SSH, Apache, Nginx и других служб не приведет к заметному увеличению нагрузки на систему.

Установка и настройка Fail2Ban не потребуют больших усилий, а его функциональность значительно улучшит безопасность сервера. Надеемся, что теперь вы понимаете, как работает этот сервис и от каких угроз он может защитить ваши интернет-ресурсы.