Le trafic légitime sur le réseau DDoS-Guard a récemment dépassé les cent gigabits par seconde. Actuellement, 50 % de tout notre trafic provient des services web de nos clients. Il s'agit de plusieurs dizaines de milliers de domaines, trÚs variés et nécessitant, dans la plupart des cas, une approche individualisée.
Sous le couvercle â comment nous gĂ©rons les nĆuds frontaux et Ă©mettons Certificats SSL pour des centaines de milliers de sites.

Configurer un frontal pour un seul site, mĂȘme trĂšs grand, câest simple. Nous prenons nginx ou haproxy ou lighttpd, nous le configurons selon les guides et nous oublions. Si nous devons changer quelque chose, nous faisons un reload et nous oublions encore.
Tout change lorsque vous traitez en temps rĂ©el de gros volumes de trafic, Ă©valuez la lĂ©gitimitĂ© des requĂȘtes, compressez et mettez en cache le contenu utilisateur, tout en modifiant les paramĂštres plusieurs fois par seconde. L'utilisateur veut voir le rĂ©sultat sur tous les nĆuds externes immĂ©diatement aprĂšs avoir modifiĂ© les paramĂštres dans son espace personnel. De plus, l'utilisateur peut tĂ©lĂ©charger via l'API plusieurs milliers (parfois mĂȘme des dizaines de milliers) de domaines avec des paramĂštres de traitement du trafic individuels. Tout cela doit Ă©galement fonctionner immĂ©diatement en AmĂ©rique, en Europe et en Asie â une tĂąche pas si triviale, sachant que rien qu'Ă Moscou, il y a plusieurs nĆuds de filtrage physiques dispersĂ©s.
Pourquoi avoir beaucoup de nĆuds fiables et importants Ă travers le monde ?
- La qualitĂ© du service du trafic client â les requĂȘtes en provenance des Ătats-Unis doivent ĂȘtre traitĂ©es prĂ©cisĂ©ment aux Ătats-Unis (y compris en ce qui concerne les attaques, le parsing et d'autres anomalies), et non pas transportĂ©es Ă Moscou ou en Europe, augmentant de maniĂšre imprĂ©visible la latence de traitement.
- Le trafic d'attaque doit ĂȘtre localisĂ© â les opĂ©rateurs de transit peuvent dĂ©gĂ©nĂ©rer lors des attaques dont le volume dĂ©passe souvent 1Tbps. Transporter le trafic d'attaque par des liaisons transatlantiques ou transasiatiques nâest pas la meilleure idĂ©e. Nous avons eu des cas rĂ©els oĂč des opĂ©rateurs de niveau 1 ont dĂ©clarĂ© : « Les volumes d'attaque que vous recevez sont dangereux pour nous. » C'est pourquoi nous acceptons les flux entrants aussi prĂšs que possible de leurs sources.
- Les exigences strictes en matiÚre de continuité des services stipulent que les centres de traitement ne doivent pas dépendre les uns des autres ni des événements locaux de notre monde en constante évolution. Une coupure de courant de tout un étage du MMTS-9 pendant une semaine ? Pas de soucis. Aucun client ne sera affecté s'il n'est pas physiquement connecté à cet emplacement, et les services web ne subiront aucune interruption, quelles que soient les circonstances.
Comment gérer tout cela ?
Les configurations des services doivent ĂȘtre diffusĂ©es le plus rapidement possible (de prĂ©fĂ©rence instantanĂ©ment) sur tous les nĆuds frontaux. Il n'est pas acceptable de simplement modifier les fichiers de configuration texte et de redĂ©marrer les dĂ©mons Ă chaque changement â le mĂȘme nginx maintient des processus en cours (worker shutting down) pendant encore quelques minutes (voire quelques heures si des sessions websocket longues sont en cours).
Lors du redémarrage de la configuration, il est tout à fait normal d'observer le tableau suivant :

Concernant l'utilisation de la mémoire :

Les anciens travailleurs consomment de la mémoire, y compris celle qui n'est pas linéairement dépendante du nombre de connexions, ce qui est normal. Lorsque les connexions des clients seront fermées, cette mémoire sera libérée.
Pourquoi cela n'était-il pas un problÚme lorsque nginx a commencé à se développer ? Il n'y avait ni HTTP/2, ni WebSocket, ni connexions keep-alive longues massivement utilisées. 70 % de notre trafic web utilise HTTP/2, ce qui représente des connexions trÚs longues.
La solution est simple : ne pas utiliser nginx, ne pas gérer les fronts sur la base de fichiers texte, et surtout, ne pas envoyer des configurations texte compressées par les canaux transpacifiques. Les canaux, bien sûr, sont garantis et réservés, mais cela ne les rend pas moins transcontinentaux.
Nous avons notre propre serveur frontal-balanceur, dont je parlerai dans les prochains articles. La principale capacitĂ© est qu'il peut appliquer des milliers de modifications de configuration par seconde en temps rĂ©el, sans redĂ©marrages, rechargements, ni pics de consommation de mĂ©moire, et tout ça. C'est trĂšs similaire au Hot Code Reload, par exemple en Erlang. Les donnĂ©es sont stockĂ©es dans une base de donnĂ©es clĂ©-valeur gĂ©odistribuĂ©e et sont lues immĂ©diatement par les mĂ©canismes d'exĂ©cution en frontal. C'est-Ă -dire que vous avez chargĂ© le certificat SSL via l'interface web ou l'API Ă Moscou, et en quelques secondes, il est dĂ©jĂ prĂȘt Ă fonctionner dans notre centre de purification Ă Los Angeles. Si jamais une guerre mondiale se produisait et que l'internet disparaissait dans le monde entier, nos nĆuds continueraient Ă fonctionner de maniĂšre autonome et rĂ©pareraient le split-brain dĂšs qu'un des canaux dĂ©diĂ©s Los Angeles-Amsterdam-Moscou, Moscou-Amsterdam-Hong Kong-Los Angeles ou au moins l'un des GRE de secours serait disponible.
Ce mĂȘme mĂ©canisme nous permet de publier et de prolonger instantanĂ©ment des certificats Letâs Encrypt. TrĂšs schĂ©matiquement, cela fonctionne comme suit :
- DĂšs que nous recevons au moins une requĂȘte HTTPS pour le domaine de notre client sans certificat (ou avec un certificat expirĂ©), le nĆud externe qui a reçu la requĂȘte informe le centre de certification interne.

- Si l'utilisateur n'a pas interdit l'Ă©mission de Letâs Encrypt, le centre de certification gĂ©nĂšre un CSR, reçoit un token de confirmation de LE et le diffuse Ă tous les fronts par un canal chiffrĂ©. Maintenant, n'importe quel nĆud peut confirmer la requĂȘte de validation de LE.

- Dans quelques instants, nous recevrons le certificat correct et la clĂ© privĂ©e et nous les distribuerons de la mĂȘme maniĂšre aux fronts. Encore une fois, sans redĂ©marrer les dĂ©mons.

- Sept jours avant la date d'expiration, la procédure de renouvellement du certificat est initiée.
En ce moment mĂȘme, nous rotatif en temps rĂ©el 350 000 certificats de maniĂšre totalement transparente pour les utilisateurs.
Dans les prochains articles de la série, je parlerai d'autres caractéristiques du traitement en temps réel d'un important trafic web - par exemple, de l'analyse du RTT avec des données incomplÚtes pour améliorer la qualité de service des clients de transit, et en général de la protection du trafic de transit contre les attaques de plusieurs térabits, de la livraison et de l'agrégation des informations sur le trafic, du WAF, d'un CDN presque illimité et de nombreux mécanismes d'optimisation de la restitution du contenu.
Seuls les utilisateurs enregistrés peuvent participer au sondage. Connectez-vous, s'il vous plaßt.
Sur quoi aimeriez-vous en savoir plus en premier ?
- 14,3%Algorithmies de clustering et d'analyse de la qualité du trafic web<3
- 33,3%Intérieurs des équilibreurs DDoS-Guard7
- 9,5%Protection du trafic transit L3/L42
- 0,0%Protection des sites web sur le trafic transit0
- 14,3%Pare-feu d'application web3
- 28,6%Protection contre le scraping et le click fraud6
21 utilisateurs ont voté. 6 utilisateurs se sont abstenus.
Source : habr.com



