Solution 1 :
Fail2Ban. La solution de référence/par défaut à ce problème sur la plate-forme Linux.
Solution 2 :
Vous devriez éviter d'essayer de faire cela avec PHP. Au moment où PHP s'en mêle, il est déjà trop tard - la mémoire a déjà été allouée.
Vous pouvez interdire les adresses IP à n'importe quelle couche, mais le niveau le plus bas qui utilise le moins de ressources est la route que vous souhaitez emprunter. Il s'agit généralement du pare-feu. À tout le moins, iptables (pare-feu Linux) est ce que vous souhaitez utiliser. Il existe des outils que d'autres ont mentionnés, tels que Fail2Ban, qui peuvent automatiser cela pour vous. Un pare-feu externe serait préférable.
En plus d'essayer d'interdire les adresses IP incriminées, vous devriez essayer de mieux utiliser vos ressources. Si une requête utilise moins de ressources, il faudra plus de temps pour qu'une attaque soit efficace.
Apache utilise également beaucoup de mémoire. Si vous utilisez mod_php, c'est encore pire car PHP est chargé à l'intérieur de chaque processus enfant Apache. Cela signifie que même les demandes de contenu statique (css/js/images) chargent PHP même lorsque PHP n'est pas utilisé. Vous pouvez résoudre ce problème en utilisant FastCGI à la place. mod_fcgid est une bonne option.
Il existe également d'autres serveurs Web qui sont plus économes en ressources. Nginx est mon préféré. Il y a aussi Lighttpd. Beaucoup de gens aiment Litespeed (en remplacement d'Apache).
Si vous voulez vous en tenir à Apache, envisagez de le régler du mieux que vous le pouvez. Envisagez de désactiver .htaccess. Voici une bonne explication pourquoi.
Solution 3 :
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
ossec peut faire ce genre de choses automatiquement et de manière transparente sur la base des syslogs.
Solution 4 :
Pour contrôler ou bloquer le trafic http, vous pouvez utiliser :
- module apache.
- iptable
- fail2ban comme indiqué ici par HopelessN0ob.
Cependant, sachez que ces outils peuvent également bloquer/ralentir les webspiders et donc avoir un impact sur le référencement.