Это не проблема, но я получаю огромное количество сканеров уязвимостей и скриптовых детишек, постоянно посещающих мой сайт.
На моем сайте не работает WordPress, но он постоянно сканируется на наличие уязвимостей WordPress и пытается найти несуществующие URL-адреса, такие как /admin
/wp-admin.php
.
Что я хотел бы сделать, так это ограничить частоту определенных IP-адресов, когда они попадут в любой URL-адрес в черном списке. Я знаю, что не могу полностью остановить сценаристов, но я бы хотел их замедлить, чтобы не допустить этого. Например:
/wp-admin.php
.Есть ли способ добиться этого исключительно с помощью конфигурации Nginx? Я знаю, что это достижимо с использованием OpenResty / Lua, но насколько мне известно, это относительно трудоемкая задача.
Fail2ban также не подходит, поскольку я использую балансировщик нагрузки, и поэтому мне нужно полагаться на X-Forwarded-For
заголовки, которые явно не могут соответствовать iptables.
Согласно эта почта можно было бы ограничить Nginx следующим образом:
location /account/login/ { # apply rate limiting limit_req zone=login burst=5; # boilerplate copied from location / proxy_pass http://myapp; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; }
и протестируйте его после перезапуска следующим образом:
for i in {0..20}; do (curl -Is https://example.com/accounts/login/ | head -n1 &) 2>/dev/null; done