Les mauvaises pratiques s'accumulent, et si le crawl sauvage a toujours existé, il devient problématique à l'excès, menant à faire tomber les services web.
Avant de bloquer tout azimut, il faut définir ce qu'on veut bloquer. On peut par exemple décider, par conviction éthique, de bloquer les moteurs de recherhes et indexeurs LLM, ou bien les tolérer.
Je reprendrais tout cela proprement plus tard, là je note juste de quoi faire face aux DDOS du moment. Des DDOS non ciblés, juste parce que le capitalisme, c'est de la merde favorisant ce genre de connerie.
Dans les dépôts debian. Doc sur https://goaccess.io.
Il faut les logs personnalisés apache.
LogFormat "%h ☆ %v ☆ %t ☆ Code %>s ☆ %O o ☆ \"%r\" ☆ \"%{User-Agent}i\" ☆ \"%{Referer}i\" " vhost_maison CustomLog ${APACHE_LOG_DIR}/access.log vhost_maison
Puis modifier la config de goaccess.
# Format de l'heure comme Apache le gère datetime-format %d/%b/%Y:%H:%M:%S %z # Notre regex transcrite en langage goaccess log-format %h ☆ %v ☆ [%x] ☆ Code %>s ☆ %O o ☆ \"%r\" ☆ \"%u\" ☆ \"%R\"
%t devient [%x] parce que c'est le “datetime-format” dans goaccess et non “time-format”. Ça marche, on ne va pas chercher. Les autres trucs ont aussi quelques nuances mais ça reste proche.Il n'y a pas une solution miracle, mais la mise en place de diverses techniques qui, cumulées, peuvent baisser les dégâts que font ces enquiquineurs.
Certaines solutions sont propres au type de service.
Solutions type iocaine, anubis, cloudfront : je leur trouve pas mal de défaut sur les utilisatrices (typiquement je ne peux pas aller sur ce genre de site avec mon smartphone qui a peu de ram) pour un résultat discutable.
Les deux vont un peu ensemble.
D'abord, les listes d'ip bloquées.
Ensuite, les listes d'ip autorisées :
Un souci compliqué. Grâce aux objets connectés moisis, les attaques peuvent venir d'ip résidentielles, et bannir largement va poser quelques soucis à des utilisatrices légitimes, sans parler de la charge mémoire de bloquer autant.
Un blocage géographique peut dépanner temporairement mais n'est pas une solution à long terme. Pulkomandy indique que ces bots “ont tendance à utiliser des user agents ne correspondant pas à la toute dernière version”, cela peut être un critère de détection, mais qui me semble délicat à manier.
Ce n'est pas exactement ça, mais ça en fait partie.
La problématique : des milliers d'ip faisant chacune 1 requête. Fail2ban/reaction/les modules apaches ont du mal à détecter ça mais ça le serveur à genou.
Notes en brouillon.
Trouver l'ASN lié à une ip :
whois -h whois.radb.net 192.*.*.*
Une fois qu'on a le nom du fournisseur de datacenter qui merdouille, on peut pister son infra avec https://bgp.he.net/ : entrer le nom fourni (par exemple AWS) et on a toutes les plages qui lui sont attribuées. Le souci c'est qu'il y en a vraiment beaucoup. Le souci aussi est que certains réseaux sont mixtes : service de téléphonie+datacenters. Or on va essayer de limiter le ban du premier.
Un outil pour réduire les plages d'ip : aggregate. Usage (y'a ptet plus propre) :
cat badip_vrac.txt| aggregate -q > badip_concat.txt
aggregate encore pour fusionner.