Ce qui se passe
Konstantin Ryabitsev, responsable de l'infrastructure de kernel.org, publie les chiffres qui manquaient jusqu'ici au débat sur les aspirateurs d'entraînement.
| Mesure | Valeur |
|---|---|
Requêtes quotidiennes sur git.kernel.org |
~6 millions |
| Repoussées d'emblée par Anubis | 66 % |
| Qui résolvent le défi et passent | 33 % |
| Trafic estimé légitime | ~2 % |
| Cœurs CPU mobilisés en permanence | 14 à 16 sur 90 |
| Nœuds géo-distribués | 5 |
Son résumé tient en une phrase : le serveur dépense plus de cycles à fabriquer
des pages de commits pour des robots que pour tous les accès légitimes réunis,
git clone compris.
Pourquoi ça compte
L'ironie est complète, et elle est le vrai sujet de l'article. Tout le contenu est déjà clonable, y compris les archives de LKML : une commande suffit à obtenir l'histoire entière, et l'équipe encourage à le faire. Les aspirateurs choisissent l'inverse — demander chaque commit rendu en HTML, un par un.
Le calcul de la surface exposée explique la suite :
- 1,48 million de commits dans
linux.git; - environ 922 forks hébergés, qui partagent les mêmes objets côté serveur mais offrent 922 chemins distincts vers les mêmes pages ;
- pour chacun,
cgitaccepte de générer les patchs, les rendus bruts et les diffs entre deux commits arbitraires.
Autrement dit : plusieurs milliards d'URL valides, qui aboutissent à 922 duplicatas du même million et demi de commits.
La défense a suivi une escalade instructive. D'abord fail2ban sur les IP
identifiées — les robots ont cessé de s'annoncer dans leur user-agent. Puis le
blocage par sous-réseau, puis par ASN entier. Aujourd'hui les requêtes viennent
de millions d'adresses résidentielles ou mobiles qui font quatre ou cinq appels
puis disparaissent : les bannir ne fait que gonfler le pare-feu. Ces adresses
sont louées via des SDK de proxy embarqués dans des applications grand public —
« votre téléviseur le fait probablement », note l'auteur.
Reste Anubis, un défi de preuve de travail : trouver la chaîne qui, combinée à l'IP du client et à un secret du serveur, produit un SHA-256 commençant par n zéros. Efficacité immédiate à sa mise en place il y a un an. Puis les robots ont su résoudre la difficulté 4, on est passé à 5, ils la résolvent aussi — et un mobile met désormais plusieurs secondes à répondre, en chauffant.
Ce que ça change
Si vous exposez une forge, une doc générée ou un wiki, la charge ne vient plus de vos utilisateurs. Trois enseignements transposables :
- La surface compte plus que le volume. Une interface qui génère des URL combinatoires (diff entre deux révisions quelconques) est un piège : ce n'est pas le nombre de pages qui explose, c'est leur produit cartésien.
- Le filtrage par identité est mort. User-agent, IP, ASN : les trois ont été contournés dans l'ordre. Seul le coût imposé au client tient encore, et partiellement.
- Ce qui va tomber, ce sont les fonctionnalités anonymes. C'est l'annonce explicite de l'équipe kernel.org, à contrecœur : réduire le nombre d'URL moissonnables et fermer les actions coûteuses. Les données resteront téléchargeables pour qui les demande.
Source : people.kernel.org (en anglais).