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

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

Как установить Fail2Ban

Fail2Ban доступен в виде пакета почти для всех дистрибутивов Linux, поэтому установка очень проста.

Ubuntu/Debian

sudo apt update
sudo apt install fail2ban

После завершения установки запустите службу и настройте автоматический запуск при загрузке.

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Fail2Ban Overview

Как настроить Fail2Ban

Fail2Ban использует файл /etc/fail2ban/jail.conf в качестве основного конфигурационного файла, однако рекомендуется не редактировать этот файл напрямую, а создавать файл /etc/fail2ban/jail.local для настройки.

Создание файла jail.local:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Основные параметры настройки: - bantime: период блокировки (в секундах) - findtime: диапазон времени, который считается атакой (в секундах) - maxretry: максимальное количество допустимых попыток неудачи

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log

Примеры практического применения

1. Блокировка SSH брутфорса

При настройке jail [sshd] если происходит более 5 неудачных попыток входа, этот IP будет заблокирован на 1 час.

2. Блокировка атак на вход в Apache

[apache-auth]
enabled = true
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3

Если обнаруживаются 3 неудачные попытки авторизации на веб-сервере, будет осуществлена блокировка.

Как мониторить Fail2Ban

Существует несколько способов мониторинга работы Fail2Ban.

1. Проверка статуса через fail2ban-client

Вы можете проверить статус конкретного jail (например, sshd).

sudo fail2ban-client status sshd

Пример вывода:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 2
|  |- Total failed: 15
|  `- File list:    /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned: 3
   `- Banned IP list: 192.168.1.100

2. Мониторинг лог-файлов

Работа Fail2Ban записывается в файл /var/log/fail2ban.log.

tail -f /var/log/fail2ban.log

Этим способом можно в реальном времени следить за событиями блокировки и разблокировки.

Принцип работы Fail2Ban

  1. Мониторинг логов: Fail2Ban постоянно отслеживает заданные лог-файлы. (например, /var/log/auth.log, /var/log/apache2/error.log)

  2. Применение фильтров: Определенные шаблоны (неудачные входы, ошибки аутентификации и т.д.) обнаруживаются с помощью фильтров.

  3. Исполнение действий: Если превышается установленный maxretry, блокировка IP осуществляется через iptables или выполняется команда для межсетевого экрана, такая как firewall-cmd, nftables.

  4. Автоматическое снятие блокировки: По истечении bantime блокировка автоматически снимается.

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

Как установить постоянную блокировку для атак на SSH

Важно активно справляться с атаками на SSH. В Fail2Ban, установив bantime на -1, вы можете установить постоянную блокировку.

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

Таким образом, IP, у которого больше 5 неудачных попыток аутентификации SSH, будет постоянно заблокирован и не сможет получить доступ к серверу.

[Советы для продвинутых] Понимание базовой блокировки в Fail2Ban

Fail2Ban работает по умолчанию, не требуя отдельного определения action. Это связано с тем, что в настройках по умолчанию включены команды блокировки с использованием iptables.

  • Если action не определен отдельно, применяется настройка action = %(action_)s из раздела [DEFAULT].
  • %(action_)s выполняет действия по блокировке вредоносных IP, используя внутреннюю команду iptables.
  • Следовательно, IP будет заблокирован с помощью iptables, даже если вы не пишете action отдельно.

Пример базовой команды блокировки (см. action_.conf)

iptables -I INPUT -s <ip> -j REJECT

Таким образом, Fail2Ban автоматически управляет iptables для блокировки атакующих IP.

Внимание: - Если вы хотите использовать другие инструменты межсетевой блокировки, такие как UFW или firewalld, вам нужно будет явно установить action. - Кроме того, стоит учитывать, что правила блокировки могут исчезнуть после перезагрузки сервера, поэтому рекомендуется настроить автоматический запуск службы Fail2Ban при загрузке.


Дополнительно вы можете создавать и применять различные фильтры или настраивать уведомления по электронной почте и другие продвинутые настройки.


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