ipset
Наборы адресов для файрвола Linux: тысячи адресов проверяются одним правилом за микросекунды. Так на сервер подаётся список адресов ботов.
Правило файрвола на каждый адрес — плохая идея уже при сотнях адресов:
пакет проверяется по всем правилам по очереди. ipset хранит адреса в
хеш-таблице, и одно правило match-set отвечает на вопрос «есть ли
адрес в наборе» за постоянное время, сколько бы адресов там ни было.
Список адресов ботов от защиты обновляется каждые несколько минут, и скрипт на сервере по расписанию забирает его по API и перезаписывает набор целиком: адреса, которые перестали шуметь, уходят из набора через двое суток тишины. Запросы с адресов из набора отбрасываются до веб-сервера — для сервера их как будто нет.
Что с этим делать
Страницы о защите от того, что описано выше: как это выглядит на сайте и что делает BotBan.