Você pode encontrar o número das 10 principais conexões TCP atuais (ou outro número) por IP com
netstat -tan| grep -v 'LISTEN'| awk '{print $5}'| grep -v 'and' |grep -v 'Address' |cut -d':' -f1 |sort -n | uniq -c | sort -rn | head -n10
E também os 10 principais IPs em arquivos de log do Apache com cd /var/log/apache2; for i in ./access.log*; do echo $i; cat $i | awk '{print $1}'| sort -n | uniq -c | sort -rn | head -n10; done
Depois de determinar os IPs abusivos, você pode bloqueá-los com iptables -A INPUT -s 1.2.3.4 -j DROP
.
Você também pode limitar as conexões com iptables, por exemplo, se você não quiser mais de 20 conexões por minuto de uma fonte:
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 20 -j DROP