Source : https://twitter.com/sebsauvage_net/status/1339977926276689923 ; voir aussi https://fr.wikipedia.org/wiki/Bombe_de_d%C3%A9compression
Le principe : piéger les bots qui arpentent le web en cherchant des failles. Ce n'est pas une protection, juste des mines pour enquiquiner les enquiquineurs les moins doués.
Nginx peut servir des fichiers précompressés, qui vont se décompresser côté client, remplissant leur disque dur et sollicitant les machines. On attaque ces crackbot là où ça fait mal : sur leur temps d'exécution.
Merci Tycho pour le détail !
On commence par créer le fichier compressé (choisissez, petite ou grosse bombe !) :
dd if=/dev/zero bs=1M count=$((1024)) | gzip >/var/www/anti_bots/small_bomb.gz dd if=/dev/zero bs=1M count=$((300*1024)) | gzip >/var/www/anti_bots/big_bomb.gz
Puis on créé /etc/nginx/custom/anti_bots.conf
à inclure dans chaque configuration de site sur Nginx :
location ~* /(wp-login\.php|wordpress|wp|wp2|old-wp|wp-includes|cms|.env|.git|composer.json|composer.lock|frontend_dev\.php|docker\.env|docker\.yml|docker.yaml|Docker.yaml|mysql\.env|mysql\.yml|mysql.yaml|config\.bak\.php|phpmyadmin|pma) { gzip on; gzip_static always; alias /var/www/anti_bots/small_bomb; # Do not specify .gz here, nginx infers it }
Ici la “location” va indiquer des motifs recherchés dans certains logiciels. Évitez de mettre ça tel quel si vous utilisez worpdress, docker, etc.
Puis relancez Nginx
nginx -t && nginx -s reload
Le fichier compressé est créé de la même façon.
Il faut activer deux modules :
a2enmod headers a2enmod deflate apachectl -t && apachectl graceful
Doc sur la compression dans Apache : https://httpd.apache.org/docs/2.4/fr/mod/mod_deflate.html
https://github.com/skeeto/endlessh
Ici le principe est similaire. Plutôt que de bannir des IP comme avec Fail2Ban, on va au contraire capturer le visiteur indésirable et lui faire perdre du temps en le laissant espérer une entrée.
Je suis moins convaincue par l'intérêt de ceci, car ça va garder une connexion active même si c'est dans un cul de sac.