Если 1 IP за время к примеру 20 секунд посетил одну динамическую
страницу больше чем N раз - бан ему на N часов.
Данный скрипт уже был написан моим приятелем (респект ему) и выложен в
публичку, пользуйтесь.
Так выложи свой вариант ...
Для себя делаю так, и вполне успешно....
в nginx все входящие запросы проверяю на наличие спец.кукиса, если такового нет, выставляю кукис и редирекчу на тот же урл, но с добавленным неким доп аргументом в URI. При редиректе ставлю кукис.
Но чуть ранее этой проверки проверяю в URI наличие этого доп.аргумента и своего кукиса. если все есть - пропускаем на апач. Если нет кукиса, но есть доп.аргумент, редиректим на страничку с предложением разрешить кукисы.
Кроме того учитываем поисковики по сетям IP адресов и-или юзер-агент полям (кому как нравится) и пропускаем их к себе без проверки кукисов.
Все это исключительно за счет настроек в конфиге nginx, без серверного сриптинга.
Разумеется это только часть комплекса. Сзади вебсервера присутвует скрипт анализа и файрволинга частых обращений, присутсвует соответвующий файрвол, да и сам софт что крутится на апаче используем memcached...
В итоге бывали ситуации когда сайт, в ту пору живший на 2.4 ГГц пеньке выдерживал атаку порядка с 15к ботов (столько наловил скрипт и добавил в файрвол) за несколько часов.
Все это под линухом, правда с ipset, connlimit и еще чемто (не помню), обычный iptables столько не отфильтрует.