Vaste sujet vraiment.
Je suis bousculé ces derniers temps dans ma petite stack hosting qui fonctionne pas trop mal depuis une vingtaine d'années...
J'ai vu passer anubis, un genre de challenge sans cloudflare, jamais testé, ça à l'air pas mal.
https://anubis.techaro.lol ?
A vrai dire j'ai plusieurs type de problèmes :
- Les bots légitimes qui font n'importe quoi (facebook, claudebot...)
- Les bot légitimes qui avant se comportait bien mais tu sens que ça devient compliqué (Google..)
- Les bots / scrapers agressif clairement destiné à mettre off line le site (proxy résidentiel comportant parfois plusieurs millions d'adresses IP) ou a faire exploser les coûts d'hébergement si tu es sur un cloud avec du scale automatique.
Dans ces 3 cas, pour moi Crowdsec ne sert à rien.
Je détaille un peu le 3eme cas, celui pour lequel Cloudflare peut devenir indispensable.
L'ajout de Ngnix m'a permis de ne plus craindre l’épuisement des workers apache quand tu te retrouves à gérer 5000 nouvelles connexions en une minute.
Je sais, c'est un standard depuis de nombreuses années mais, pourquoi bouger quand ça marche... Je suis en cours de migrations sur presque toutes mes machines.
Ensuite, il va y avoir le problème des workers PHP et des requêtes BDD -> épuisement des ressources CPU.
et là, je joue en fonction du profil du bot le plus problématiques, l'agressif.
Celui qui te balance 5 req / sec sur une page de listing avec tous un tas de filtre et affiche max du nombre de produits.
Chaque requête faite avec une adresses IP unique que tu revois 3 semaines plus tard... pour une nouvelle requête du mếme genre.
Bien sur ce ne sont que des IP résidentiels (Orange SFR etc...) Sinon c'est pas drôle tu peux ban l'AS complet.
Le user agent change également (c'est évident, sinon, encore une fois ce n'est pas drôle).
exemple de stat sur une minute :
ASN ORGANISATION PAYS IPS_UNIQUES REQUETES
7018 ATT-INTERNET4 - AT&T Enterp... US - Etats-Unis 429 447
21928 T-MOBILE-AS21928 - T-Mobile... US - Etats-Unis 188 193
22773 ASN-CXA-ALL-CCI-22773-RDC -... US - Etats-Unis 130 136
20001 TWC-20001-PACWEST - Charter... US - Etats-Unis 124 132
20115 CHARTER-20115 - Charter Com... US - Etats-Unis 124 128
6167 CELLCO-PART - Verizon Busin... US - Etats-Unis 103 109
5650 FRONTIER-FRTR - Frontier Co... US - Etats-Unis 91 97
11426 TWC-11426-CAROLINAS - Chart... US - Etats-Unis 70 73
5089 NTL, GB GB - Royaume-Uni 66 72
6128 CABLE-NET-1 - Cablevision S... US - Etats-Unis 69 71
10796 TWC-10796-MIDWEST - Charter... US - Etats-Unis 64 65
33363 BHN-33363 - Charter Communi... US - Etats-Unis 62 64
14593 SPACEX-STARLINK - Space Exp... US - Etats-Unis 44 48
2856 BT-UK-AS BTnet UK Regional ... GB - Royaume-Uni 42 43
5607 BSKYB-BROADBAND-AS, GB GB - Royaume-Uni 38 42
209 CENTURYLINK-US-LEGACY-QWEST... US - Etats-Unis 39 39
[...]
Ce n'est pas idéal mais j'ai pour le moment 2 stratégies :
Firewall netfilter
L'avantage c'est que la requêtes n’atteint jamais Nginx / apache / PHP / site web
Je suis passé l'année dernière à nftables en remplacement de Iptables. incroyablement plus performant et fonctionnel. un impératif quand tu commences à jouer avec des grands volumes d'IP / CIDR. Mais cela demande un vrai effort d'adaptation quand tu connais bien Iptables.
Conf Apache suivant le bot
La l'IA est une grande aide pour faire une sorte de profil du bot et faire un conf apache spécifiques pour que dans certaines conditions (URL, longueur de chaîne, User Agent, référer etc.) apache réponde par une 429.
Du coup très peu de ressources CPU et la plupart du temps le bot croit que l'attaque réussit et se calme.
Je cherche encore à faire un truc 100% auto, car j'en ai marre de recevoir des alertes. J'ai vu que Nginx offrait énormément de possibilités par rapport a apache sur pas mal d'aspect (et notament intercaler des demande de preuve d'humanité) mais pas eu le temps de creuser encore.