Un de mes serveurs LAMP a récemment été abattu par une sorte de bot de script à la recherche d'exploits. À première vue, il faisait tellement de demandes par seconde, qu'il surchargeait la mémoire RAM du serveur et faisait tomber mon site entier pendant une heure. Ce «attacK» provenait tous d'une seule adresse IP.
Alors, comment puis-je bloquer automatiquement et temporairement une adresse IP faisant trop de hits sur mon serveur LAMP en peu de temps? Quel est le meilleur outil pour le travail, et dois-je résoudre ce problème au niveau du système d'exploitation ou via PHP?
Vous devez éviter d'essayer de le faire avec PHP. Au moment où PHP s'implique, 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 l'itinéraire 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 offensantes, vous devriez essayer de faire un meilleur usage de vos ressources. Si une demande prend 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 parce que PHP est chargé à l'intérieur de chaque processus enfant Apache. Cela signifie que même les requêtes 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 plus économes en ressources. Nginx est mon préféré. Il y a aussi Lighttpd. Beaucoup de gens aiment Litespeed (remplacement en remplacement d'Apache).
Si vous souhaitez vous en tenir à Apache, envisagez de le régler du mieux possible. Pensez à désactiver .htaccess. Voici une bonne explication pourquoi .
la source
Pour contrôler ou bloquer le trafic http, vous pouvez utiliser:
Cependant, sachez que ces outils peuvent également bloquer / ralentir les webspiders et donc avoir un impact sur le référencement.
la source
ossec peut faire ce type de chose automatiquement et de manière transparente en se basant sur les syslogs.
la source
man iptables
et à voir ce que signifie chaque drapeau et comment ils fonctionnent ensemble.NoooBS,
--- inonder ---
iptables -N logdrop iptables -A logdrop -m recent --set --name blacklist
iptables -A logdrop -m limit --limit 1 / s --limit-burst 1 -j LOG --log-prefix "Flood:"
iptables -A logdrop -j DROP
iptables -N ddos iptables -A ddos -m récent --rcheck --name blacklist --seconds 300 --hitcount 1 -j logdrop iptables -A ddos -m recent --set --name again iptables -A ddos -m recent --update --name again --seconds 60 --hitcount 2 -j logdrop iptables -A ddos -j RETURN
la source