Настройте jail в Fail2ban для отслеживания кода состояния 302 для определенного файла.

Вопрос или проблема

Друзья… Я задал этот вопрос на сайте StackExchange, и мне предложили, что здесь было бы лучше…

У меня есть сайт на nginx, который получает множество запросов на несуществующий файл “mydata.html”. Эти запросы записываются в журнал доступа сайта со статус-кодами 302. Я хотел бы знать, как настроить jail Fail2ban, который будет отслеживать эти запросы и блокировать IP, если они чрезмерны.

Может кто-то предложить какое-то руководство, я совсем новичок в регулярных выражениях. Спасибо… RDK

Ответ или решение

Настройка Fail2ban для отслеживания кода состояния 302 и соответствующих действий — это задача, требующая понимания работы как nginx, так и самого Fail2ban. Давайте подробно разберём, как это сделать.

Теория

Fail2ban — это инструмент, который защищает серверы путём отслеживания лог-файлов и применения временных ограничений доступа на основе нежелательной активности. Он обычно используется для защиты от атак bruteforce, DDoS и других видов подозрительного поведения. Чтобы Fail2ban мог блокировать IP-адреса на основе специфичных событий, требуется создать "jail", который анализирует записи в логах и выполняет определённые действия по обнаружении заранее заданных условий.

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

Пример

Вы хотите отслеживать запросы с кодом состояния 302 для файла mydata.html. Для этого нужно настроить Fail2ban так, чтобы он распознавал эти события в логах nginx. Давайте создадим такой "jail":

Шаг 1: Создание фильтра

Создайте новый файл фильтра для вашей ситуации: /etc/fail2ban/filter.d/nginx-mydata.conf.

В этот файл добавьте следующий регулярный шаблон:

[Definition]
failregex = <HOST> -.*GET /mydata\.html HTTP/.*" 302

Эта регулярное выражение поймает запросы к mydata.html с кодом 302. <HOST> — это специальный маркер Fail2ban, который будет заменён на IP-адрес клиента, совершившего запрос.

Шаг 2: Настройка jail

Теперь создайте новый jail в /etc/fail2ban/jail.local или добавьте в существующий конфигурационный файл:

[nginx-mydata]
enabled  = true
filter   = nginx-mydata
action   = iptables[name=HTTP, port=http, protocol=tcp]
logpath  = /var/log/nginx/access.log
maxretry = 5
findtime = 600
bantime  = 3600
  • enabled: включает jail.
  • filter: указывает на созданный вами ранее фильтр.
  • action: указывает, какое действие предпримет Fail2ban (в данном случае добавление IP в правила iptables для блокировки).
  • logpath: путь к логу вашего сервера nginx.
  • maxretry: количество допустимых нескоординированных запросов перед блокировкой.
  • findtime: интервал времени (в секундах), в течение которого наблюдаются множественные попытки доступа.
  • bantime: время блокировки IP в секундах при превышении лимита запросов.

Шаг 3: Перезапуск Fail2ban

После внесения изменений перезапустите Fail2ban для применения новой конфигурации:

sudo systemctl restart fail2ban

Применение

После настройки каждый IP, который несколько раз в течение заданного времени (10 минут, в нашем примере) запрашивает mydata.html с кодом 302, будет заблокирован на 3600 секунд. Эту настройку можно подкорректировать в зависимости от специфики вашего трафика и уровня угрозы.

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

Возможно, стоит обратить внимание на то, что использование Fail2ban не устранит саму причину появления таких запросов — например, ошибки в конфигурации вашего сайта, уязвимости или даже ошибки в рекламе (если это легитимный трафик). Поэтому важно также изучить, откуда приходят такие запросы и какую цель они могут преследовать.

Следуя этим шагам, вы сможете эффективно управлять доступом к вашему серверу, выявлять и пресекать подозрительную активность до того, как она приведёт к серьёзным последствиям. Надеюсь, данная инструкция поможет вам успешно защитить вашу инфраструктуру.

Оцените материал
Добавить комментарий

Капча загружается...