Смягчение бомбы 404 с помощью Nginx

Я получил 404 запроса, и это сбивает мою машину. Почти все мои страницы http кэшированы, и у меня есть некоторая базовая защита Dos с

limit_conn_zone $http_x_forwarded_for zone=addr:10m;
limit_conn addr 8;

limit_req_zone $http_x_forwarded_for zone=one:10m rate=2r/s;
limit_req zone=one burst=50;

client_body_timeout 5s;
client_header_timeout 5s;
send_timeout 10s;

Что я могу сделать, чтобы предотвратить эти 404 атаки, кроме вышеуказанных?

1 ответ

Решение

После настройки limit_req а также limit_conn в nginx вы их включили в виртуальном хосте? Как в:

server {
    # ...
    location / {
        limit_req zone=one;
        limit_conn addr 10;

    # ...
    }
}

Кроме того, fail2ban - это анализатор журнала для автоматического создания динамических правил в брандмауэре (iptables). Вы можете создать фильтр и действие в fail2ban, который фильтрует исходный IP-адрес 404 и блокирует их после нескольких попыток, или вы можете отфильтровать журналы limit_req и limit_conn, чтобы вместо этого можно было запретить эти IP-адреса (блокировка IP-адреса клиентов 404 может привести к некоторые нежелательные блоки).

vim /etc/fail2ban/jail.d/nginx.conf

Скопируйте это:

[nginx-req-limit]

enabled = true
filter = nginx-req-limit
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/*error.log
findtime = 600
bantime = 7200
maxretry = 10
  • findtime время в секундах для вхождений в maxretry, в этом случае он будет срабатывать после 10 событий за 10 минут (600 секунд).
  • bantime время занести в черный список IP-адрес в брандмауэре. Также в считанные секунды. В этом случае он заблокирует нарушающий IP на 2 часа (7200 секунд).
  • logpathэто журнал ошибок, который вы настроили для своего виртуального хоста в nginx.

Удостоверься что jail.conf включает в себя jail.d/*.conf Ссылка и перезапуск сервиса:

service fail2ban restart

Это должно помочь вам избежать DDoS-атак.

Другим вариантом, заслуживающим рассмотрения, является использование CDN, как указано в комментарии выше. Cloudflare имеет хорошую бесплатную версию, которая может сильно помочь, у него есть брандмауэр веб-приложений, который блокирует некоторых плохих ботов и прочее. Профессиональные / бизнес версии имеют больше возможностей, но стоят денег.

Другие вопросы по тегам