У меня есть веб-сайт, на котором каждый день злоупотребляют ботами, пытающимися рассылать спам, не уважая robots.txt и так далее. Однако самая большая проблема - это повторяющиеся попытки массового сбора данных с веб-сайта. Прямо сейчас у меня есть собственный скрипт, который использует Nginx для блокировки некорректных IP-адресов. В этом списке около 100000+ ips, и он продолжает расти.
Теперь проблема: я переношу свой сайт на новый сервер. Прошу совета, как заблокировать такое количество IPS. Самым популярным решением является Fail2Ban, однако с его помощью можно запретить использование iptables, у которых есть свои ограничения (около 4500 правил, см. Сколько правил поддерживает iptables?) Так что блокировки на максимум 4500 ips мне однозначно мало.
Я хотел бы знать, как лучше всего преодолеть это ограничение.
Следует ли мне добавить правила в fail2ban для блокировки IP-адресов с помощью nginx или следует использовать другой подход?
В любом случае, я получил работу с Fail2Ban, установив Ipset и изменив действие Fail2Ban по умолчанию на использование ipset для запрета IPS.
Я бы посоветовал изучить mod_security (https://www.modsecurity.org/). Он может ограничивать количество запросов, что, вероятно, именно то, что вы ищете.