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 для защиты вашего сервера.