Было подобное нечто. Разбираться было некогда — был придуман наколенный костыль
ЭТО в крон на каждые 5 минут.
#!/bin/sh
tcpdump -c 20000 -n -i en0 dst host HOST and dst port 80> /var/tcpdump.log
cat /var/tcpdump.log | cut -d' ' -f3 | cut -d'.' -f1,2,3,4 | sort | uniq -c | sort -r -n > /var/block.txt
cat /var/block.txt | while read tt ip; do
if [ "$tt" -ge «70» ]; then
ipfw table 50 add $ip
fi
done
плюс строка
ipfw add 1 deny ip from table\(50\) to me 80
в свое время непозволила упасть сервису.
еще можно предложить nginx в режиме реверса с отдачей статики мимо апача, плюс фильтрование юзерагентов, плюс куча всего.