Fail2Ban: руководство

Fail2Ban

Fail2Ban — это популярное средство для защиты серверов от атак методом подбора паролей (brute force) и других злонамеренных действий. Оно работает путем анализа логов и автоматического блокирования IP-адресов, которые демонстрируют подозрительное поведение. В этой статье мы рассмотрим назначение Fail2Ban, его установку, настройку, работу с логами и примеры использования.

Назначение Fail2Ban

Fail2Ban предназначен для защиты серверов от следующих угроз:

  • Brute Force атаки: Попытки подбора паролей к SSH, FTP, веб-серверам и другим службам.
  • DDoS атаки: Блокировка IP-адресов, которые совершают большое количество запросов.
  • Другие подозрительные действия: Например, многократные неудачные попытки входа в систему.

Fail2Ban анализирует логи сервера (например, /var/log/auth.log или /var/log/apache2/access.log) и автоматически добавляет правила в файервол (например, iptables или firewalld), чтобы блокировать подозрительные IP-адреса.

Установка Fail2Ban

Fail2Ban поддерживается большинством популярных дистрибутивов Linux. Ниже приведены инструкции по установке на нескольких популярных системах:

Установка на Ubuntu/Debian

sudo apt update
sudo apt install fail2ban

Установка на CentOS/RHEL

sudo yum install epel-release
sudo yum install fail2ban

Установка на Arch Linux

sudo pacman -S fail2ban

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

Настройка Fail2Ban

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

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

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

Основные параметры в jail.local

Вот пример базовой конфигурации:

[DEFAULT]
# IP-адреса, которые не будут блокироваться
ignoreip = 127.0.0.1/8 192.168.1.0/24

# Время блокировки в секундах
bantime = 600

# Количество неудачных попыток до блокировки
maxretry = 3

# Время, в течение которого учитываются неудачные попытки
findtime = 600

[sshd]
enabled = true

Параметры:

  • ignoreip: Список IP-адресов или подсетей, которые не будут блокироваться.
  • bantime: Время блокировки в секундах.
  • maxretry: Количество неудачных попыток, после которых IP-адрес блокируется.
  • findtime: Временное окно, в течение которого учитываются неудачные попытки.

Настройка фильтров

Фильтры определяют, какие строки в логах считаются подозрительными. Например, для SSH фильтр находится в /etc/fail2ban/filter.d/sshd.conf.

Пример фильтра:

[Definition]
failregex = ^%(__prefix_line)s(?:error: PAM: )?Authentication failure for .* from <HOST>$
ignoreregex =

Добавление новых правил

Вы можете создать свои собственные фильтры и правила. Например, чтобы защитить веб-сервер Apache, создайте файл /etc/fail2ban/jail.d/apache.conf:

[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
bantime = 600

Запуск и управление Fail2Ban

После настройки Fail2Ban необходимо перезапустить службу:

sudo systemctl restart fail2ban

Проверить статус службы:

sudo systemctl status fail2ban

Проверить статус конкретного правила (например, SSH):

sudo fail2ban-client status sshd

Просмотр логов

Логи Fail2Ban находятся в /var/log/fail2ban.log. Вы можете просматривать их с помощью команды:

sudo tail -f /var/log/fail2ban.log

Пример записи в логе:

2023-10-01 12:34:56,789 fail2ban.actions[12345]: WARNING [sshd] Ban 192.168.1.100

Примеры использования

Блокировка IP-адреса вручную

sudo fail2ban-client set sshd banip 192.168.1.100

Разблокировка IP-адреса

sudo fail2ban-client set sshd unbanip 192.168.1.100

Проверка статуса всех правил

sudo fail2ban-client status

Заключение

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