Я получил 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, помимо указанных выше?
После установки 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 есть хорошая бесплатная версия, которая может очень помочь, у него есть брандмауэр веб-приложений, который блокирует некоторых плохих ботов и прочее. Версии pro / business имеют больше возможностей, но стоят денег.