Содержание

#утилита

Описание

Файлы конфигов

/etc/fail2ban/jail.local

Настройки Fail2Ban. Определяет фильтр nginx-limit-req для блокировки IP, превышающих лимит запросов, и отключает sshd jail.

Комментарий: Автоматически банит злоумышленников, снижая риск атак.

Пример

# Отключение фильтра для SSH (sshd), чтобы Fail2Ban не пытался искать логи SSH
[sshd]
enabled = false

# Фильтр для Nginx, отслеживающий превышение лимита запросов
[nginx-limit-req]
# Включение фильтра (true = активно)
enabled = true
# Название фильтра, определённого в /etc/fail2ban/filter.d/nginx-limit-req.conf
filter = nginx-limit-req
# Путь к лог-файлу, который анализируется (ошибки Nginx)
logpath = /var/log/nginx/error.log
# Максимальное количество попыток (ошибок) за findtime секунд, после которых IP блокируется
maxretry = 50
# Временное окно (в секундах) для подсчёта попыток (600 секунд = 10 минут)
findtime = 600
# Время блокировки IP (в секундах, 3600 = 1 час)
bantime = 3600
# Действие при превышении: блокировка портов http и https через iptables
action = iptables-multiport[name=nginx, port="http,https", protocol=tcp]

/etc/fail2ban/filter.d/nginx-limit-req.conf

Фильтр Fail2Ban для анализа /var/log/nginx/error.log на ошибки limiting requests.

Комментарий: Определяет, какие записи логов считаются попытками атаки.

Пример

[Definition]
failregex = limiting requests, excess:.*client: ,
ignoreregex =

Команды

Проверка заблокированных ip

sudo fail2ban-client status nginx-limit-req

Status for the jail: nginx-limit-req
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- File list:        /var/log/nginx/error.log
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list: 79.100.100.100

В данном премере заблокирован на 1 час 79.100.100.100

Для разблокировки

sudo fail2ban-client unban 79.100.100.100