Legitim trafik i DDoS-Guard-nÀtverket har nyligen överstigit hundra gigabit per sekund. Nu genererar 50 % av hela vÄr trafik webbservicen frÄn kunder. Det handlar om mÄnga tiotusentals domÀner, vÀldigt olika, och i de flesta fall som krÀver en individuell strategi.
Under ytan - hur vi hanterar frontnodarna och levererar SSL-certifikat för hundratusentals webbplatser.

Att konfigurera fronten för en enda webbplats, Àven en mycket stor, Àr enkelt. Vi tar nginx eller haproxy eller lighttpd, konfigurerar enligt guider och glömmer det. Om vi behöver Àndra nÄgot - gör vi en reload och glömmer igen.
Allt förÀndras nÀr du i realtid hanterar stora mÀngder trafik, bedömer legitimiteten av förfrÄgningar, komprimerar och cachar anvÀndarinnehÄll, och samtidigt Àndrar instÀllningar flera gÄnger per sekund. AnvÀndaren vill se resultatet pÄ alla externa noder direkt efter att hen Àndrat instÀllningarna i sitt konto. Dessutom kan anvÀndaren ladda upp flera tusen (ibland tiotusentals) domÀner med individuella trafikbehandlingsparameter via API. Allt detta mÄste ocksÄ fungera direkt, bÄde i Amerika, Europa och Asien - en uppgift som inte Àr sÀrskilt trivial, med tanke pÄ att det bara i Moskva finns flera fysiskt Ätskilda filtreringsnoder.
Varför etablera mÄnga stora, pÄlitliga noder över hela vÀrlden?
- Kvaliteten pÄ servicen för kundtraffic - förfrÄgningar frÄn USA mÄste bearbetas just i USA (inklusive med avseende pÄ attacker, parsing och andra anomalier), och inte dirigeras till Moskva eller Europa, vilket oförutsÀgbart ökar latensen för behandlingen.
- Angreppstrafik mÄste lokaliseras - transitoperatörer kan degradera under attacker, vars volym ofta överstiger 1Tbps. Att transportera angreppstrafik över transatlantiska eller transasiatiska lÀnkar Àr ingen bra idé. Vi har haft verkliga fall dÀr Tier-1-operatörer har sagt: "De angreppsmÀngder ni tar emot Àr farliga för oss". Det Àr just dÀrför vi tar emot inkommande strömmar sÄ nÀra deras kÀllor som möjligt.
- StrĂ€nga krav pĂ„ driftsĂ€kerhet â rensningscentraler fĂ„r inte vara beroende av varandra eller av lokala hĂ€ndelser i vĂ„r snabbt förĂ€nderliga vĂ€rld. Strömavbrott pĂ„ alla 11 vĂ„ningar i MMT9 i en vecka? â Ingen fara. Ingen kund som inte har fysisk anslutning i just den hĂ€r platsen kommer att pĂ„verkas, och webbtjĂ€nsterna kommer inte att drabbas under nĂ„gra omstĂ€ndigheter.
Hur hanterar man allt detta?
TjĂ€nstekonfigurationer mĂ„ste spridas sĂ„ snabbt som möjligt (idealiskt omedelbart) till alla frontnoder. Man kan inte bara ta och rekonstruera textkonfigurationer och starta om demonerna vid varje Ă€ndring â samma nginx hĂ„ller avslutande processer (worker shutting down) i flera minuter (eller till och med timmar om det finns lĂ„nga websocket-sessioner).
Vid omstart av nginx-konfigurationen Àr följande bild helt normal:

Om minnesanvÀndning:

Gamla arbetare anvĂ€nder minne, bland annat, vilket inte Ă€r linjĂ€rt beroende av antalet anslutningar â det Ă€r normalt. NĂ€r de klientanslutningar stĂ€ngs, kommer detta minne att frigöras.
Varför var detta inte ett problem nÀr nginx just började utvecklas? Det fanns varken HTTP/2, WebSocket, eller massor av lÄnga keep-alive anslutningar. 70% av vÄr webtrafik Àr HTTP/2, vilket medför mycket lÄnga anslutningar.
Lösningen Ă€r enkel â att inte anvĂ€nda nginx, inte hantera fronterna baserat pĂ„ textfiler, och absolut inte skicka komprimerade textkonfigurationer över transatlantiska kanaler. Kanalerna Ă€r förstĂ„s garanterade och reserverade, men det gör dem inte mindre transkontinentala.
Vi har en egen front-server-balancer, vars inre strukturer kommer jag att berÀtta om i kommande artiklar. Det viktigaste den kan göra Àr att tillÀmpa tusentals konfigurationsÀndringar i sekunden utan omstarter, omladdningar, plötsliga minnesökningar och sÄ vidare. Det liknar mycket pÄ Hot Code Reload, till exempel i Erlang. Data lagras i en geo-distribuerad key-value databas och lÀses omedelbart av frontens exekveringsmekanismer. Det vill sÀga, du laddade upp SSL-certifikatet via webgrÀnssnittet eller API:t i Moskva, och inom nÄgra sekunder Àr det redan klart att anvÀndas i vÄrt rengöringscenter i Los Angeles. Om det skulle intrÀffa ett vÀrldskrig och internet skulle försvinna över hela vÀrlden, skulle vÄra noder fortsÀtta att fungera autonomt och ÄtgÀrda split-brain sÄ snart en av de dedikerade kanalerna Los Angeles-Amsterdam-Moskva, Moskva-Amsterdam-Hongkong-Los Angeles, eller Ätminstone en av backup-overlay GRE blir tillgÀnglig.
Denna mekanism gör det möjligt för oss att omedelbart utfĂ€rda och förlĂ€nga Letâs Encrypt-certifikat. Mycket förenklat fungerar det sĂ„ hĂ€r:
- SÄ snart vi ser minst en HTTPS-förfrÄgan för vÄr kunds domÀn utan certifikat (eller med ett utgÄnget certifikat), meddelar den externa nod som tagit emot förfrÄgan det interna certifieringscentret.

- Om anvĂ€ndaren inte har förbjudit utfĂ€rdande av Letâs Encrypt, formar certifieringscentret en CSR, fĂ„r en bekrĂ€ftelsetoken frĂ„n LE och sprider ut den till alla frontar via en krypterad kanal. Nu kan vilken nod som helst bekrĂ€fta valideringsförfrĂ„gan frĂ„n LE.

- Inom nĂ„gra ögonblick kommer vi att fĂ„ det korrekta certifikatet och den privata nyckeln och skickar dem pĂ„ samma sĂ€tt till frontarna. Ă
terigen utan att starta om demonerna.

- Sju dagar före utgÄngsdatumet initieras proceduren för att ÄterfÄ certifikatet.
Just nu roterar vi 350 000 certifikat i realtid, helt transparent för anvÀndarna.
I kommande artiklar i cykeln kommer jag att berÀtta om andra egenskaper hos realtidsbearbetning av stor webbtrafik - till exempel om analys av RTT baserat pÄ ofullstÀndiga data för att förbÀttra servicekvaliteten för transitkunder och övergripande om skydd av transittrafik mot terabit-attacker, om leverans och aggregering av trafikdata, om WAF, nÀstan obegrÀnsad CDN och mÄnga mekanismer för optimering av innehÄllsleverans.
Endast registrerade anvÀndare kan delta i omröstningen. Logga in, tack.
Vad skulle du vilja veta först?
- 14,3%Algoritmer för klustring och analys av webbtrafik<3
- 33,3%Inuti DDoS-Guard balanserare7
- 9,5%Skydd av L3/L4-transittrafik2
- 0,0%Skydd av webbplatser pÄ transittrafik0
- 14,3%WebbapplikationsbrandvÀgg3
- 28,6%Skydd mot parsing och klickbedrÀgerier6
Röstade 21 anvÀndare. 6 anvÀndare avstod.
KĂ€lla: habr.com



