Fail2Ban: Защита серверов от атак методом перебора
02.07.2025
5 минут
Пошаговая инструкция: установка и настройка Fail2Ban на Linux — защита от bruteforce‑атак через SSH, Apache, Nginx. Простая конфигурация jails и фильтров.



Fail2Ban - это мощный инструмент с открытым исходным кодом, предназначенный для защиты серверов от атак методом перебора (brute-force) и других автоматизированных угроз. Он анализирует логи серверных служб, выявляет подозрительную активность и автоматически блокирует IP-адреса злоумышленников, предотвращая несанкционированный доступ. В этой статье мы рассмотрим, что такое Fail2Ban, как он работает, его основные возможности и процесс настройки.
Что такое Fail2Ban?
Fail2Ban - это программное обеспечение, написанное на Python, которое работает в фоновом режиме и отслеживает попытки несанкционированного доступа к серверу. Оно взаимодействует с системными логами (например, /var/log/auth.log для SSH) и использует правила (фильтры), чтобы определять подозрительные действия, такие как многократные неудачные попытки входа. После обнаружения таких попыток Fail2Ban добавляет IP-адрес атакующего в черный список, используя межсетевой экран (например, iptables или firewalld), чтобы заблокировать дальнейший доступ.
Fail2Ban широко используется для защиты различных служб, включая SSH, веб-серверы (Apache, Nginx), почтовые серверы (Postfix, Dovecot) и другие.
Как работает Fail2Ban?
Работа Fail2Ban основана на трех ключевых компонентах:
- Фильтры (Filters): Регулярные выражения, которые определяют, какие строки в логах указывают на подозрительную активность. Например, фильтр для SSH может искать строки, содержащие "Failed password" в логе auth.log.
- Действия (Actions): Набор команд, которые выполняются при обнаружении нарушений. Обычно это добавление IP-адреса в черный список с помощью iptables, ufw или другого межсетевого экрана.
- Тюрьмы (Jails): Конфигурации, связывающие фильтры и действия для конкретной службы. Например, "тюрьма" для SSH определяет, сколько неудачных попыток входа допустимо, прежде чем IP будет заблокирован, и на какой срок.
Пример работы:
- Злоумышленник пытается войти на сервер через SSH с неверным паролем.
- Fail2Ban замечает это в логе /var/log/auth.log с помощью фильтра.
- Если количество неудачных попыток превышает установленный лимит (например, 5 попыток за 10 минут), Fail2Ban добавляет IP-адрес в черный список через iptables.
- После истечения заданного времени блокировки (например, 1 час) IP-адрес автоматически разблокируется, если не продолжаются подозрительные действия.
В данной статье рассмотрим установку fail2ban на Ubuntu 20.04
Установку будем производить на наших серверах, которые вы можете оформить по ссылке: https://dline-media.com/vps-cheap
Для установки нам подойдет тарифный план №1, который включает в себя:
- 10 ГБ NVMe
- 512 МБ RAM
- 1 шт. vCPU

Установка fail2Ban на сервер
1) Подключение к серверу и подготовка
Подключаемся к серверу командой ssh root@ip, вводим пароль и первым делом обновляем репозитории командой:
“sudo apt update”
“apt upgrade”
2)Установка и настройка Fail2Ban
Затем устанавливаем сам пакет командой
“apt install -y fail2ban”
После чего создаем конфиг файл командой
“nano /etc/fail2ban/jail.loc”
И вписываем туда следующий конфиг
[DEFAULT]
bantime = 86400
findtime = 600
maxretry = 3
action = %(action_mw)s
[sshd]
enabled = true
разберем каждый параметр
Секция [DEFAULT]:
- bantime = 86400: Блокирует IP на 86400 секунд (24 часа) после превышения лимита попыток.
- findtime = 600: Устанавливает окно времени (600 секунд = 10 минут), в течение которого учитываются неудачные попытки.
- maxretry = 3: Максимум 3 неудачные попытки входа в течение findtime приводят к блокировке.
- action = %(action_mw)s: Использует действие action_mw, которое обычно означает блокировку IP через фаервол (например, iptables) и отправку уведомления по почте (если настроена почта). Это стандартное действие в Fail2Ban, определённое в /etc/fail2ban/action.d/.
Секция [sshd]:
- enabled = true: Включает защиту для сервиса SSH (обычно sshd), применяя указанные в [DEFAULT] настройки.
- Fail2Ban будет отслеживать логи SSH (обычно /var/log/auth.log или /var/log/secure) на предмет неудачных попыток входа.
Сохраняем и перезапускаем сервис systemctl restart fail2ban, также не забываем добавить сервис в автозагрузку systemctl enable fail2ban
На этом установка завершена!
Автоматическая установка fail2ban с помощью скрипта
А для тех, кто не хочет заморачиваться с установкой, мы предлагаем автоматическую установку с помощью встроенных скриптов, которыми может воспользоваться любой из наших клиентов. Для этого:
Выбираем нашу vps и жмем кнопку перейти

Затем 3 точки напротив сервера

В поиске вбиваем fail, выбираем Fail2Ban, затем жмем “запустить скрипт”. В результате будет установлен скрипт, аналогичный, которому мы разбирали в данной статье
