GNU/Linux >> Tutoriels Linux >  >> Linux

Comment bloquer automatiquement et temporairement une adresse IP faisant trop de hits sur le serveur en peu de temps ?

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.


Linux
  1. Comment bloquer l'adresse IP sur le serveur Linux

  2. Comment bloquer l'adresse IP sur le serveur Linux

  3. Comment installer le serveur Web OpenLiteSpeed ​​PHP et MariaDB sur Ubuntu 20.10

  4. Comment autoriser ou bloquer le port et l'adresse IP à l'aide de Firewalld, de tables IP et d'UFW sous Linux ?

  5. Comment forcer Linux à réacquérir une nouvelle adresse IP auprès du serveur DHCP ?

Comment installer Linux, Apache, MySQL et PHP (LAMP) sur un serveur cloud Ubuntu 20.04

Comment installer Nginx, MySQL et PHP (LEMP) sur un serveur Ubuntu 15.04

Comment installer Linux, Apache, MySQL et PHP (LAMP) sur un serveur cloud Ubuntu 12.04

Comment installer OpenLiteSpeed ​​Web Server avec MariaDB et PHP

Comment installer et configurer Caddy Web Server avec PHP sur Rocky Linux 8

Comment installer et configurer le pare-feu CSF pour Linux