
EttevĂ”te Variti arendab kaitset robotite ja DDoS-rĂŒnnakute eest ning viib lĂ€bi stressi- ja koormusteste. Konverentsil HighLoad++ 2018 rÀÀkisime, kuidas kaitsta ressursse erinevatest rĂŒnnakutest. LĂŒhidalt: isoleerige sĂŒsteemi osad, kasutage pilveteenuseid ja CDN-i ning vĂ€rskendage regulaarselt. Kuid ilma spetsialiseeritud kaitset pakkuvate ettevĂ”teteta ei saa te siiski hakkama đ
Enne teksti lugemist vĂ”ite tutvuda lĂŒhikeste kokkuvĂ”tetega .
Ja kui te ei armasta lugeda vÔi soovite lihtsalt videot vaadata, on meie ettekande salvestus all spoileris.
Ettekande video salvestus

Paljud ettevĂ”tted oskavad juba teha koormusteste, kuid mitte kĂ”ik ei tee stressiteste. MĂ”ned meie kliendid arvavad, et nende veebisait on kaitstud, kuna neil on highload sĂŒsteem, mis kaitseb hĂ€sti rĂŒnnakute eest. Me aga nĂ€itame, et see ei ole pĂ€ris tĂ”si.
Muidugi, enne testide lĂ€biviimist saame kliendilt loa, allkirja ja pitseriga; meie abiga ei saa DDoS-rĂŒnnakut teha kellelegi. Testimine toimub kliendi valitud ajal, mil tema ressursi kĂŒlastatavus on minimaalne, ja juurdepÀÀsu probleemid ei mĂ”juta kliente. Lisaks, kuna testimise kĂ€igus vĂ”ib alati midagi valesti minna, oleme pidevas kontaktis kliendiga. See vĂ”imaldab mitte ainult saavutatud tulemusi teatada, vaid ka testimise ajal muudatusi teha. Testimise lĂ”ppedes koostame alati aruande, milles toome vĂ€lja tuvastatud puudused ja anname soovitusi saidi nĂ”rkade kohtade likvideerimiseks.
Kuidas me töötame
Testimise lĂ€biviimisel emuleerime botivĂ”rku. Kuna me töötame klientidega, kes ei asu meie vĂ”rkudes, et test ei lĂ”ppeks esimesel minutil limiitide vĂ”i kaitse aktiveerimise tĂ”ttu, suuname koormuse mitte ĂŒhelt IP-lt, vaid oma alamvĂ”rgust. Lisaks, et tekitada mĂ€rkimisvÀÀrset koormust, on meil oma piisavalt vĂ”imas testiserver.
Postulaadid
Palju ei tÀhenda tingimata head
Mida vĂ€iksema koormusega suudame ressursi rikki viia, seda parem. Kui suudame teha nii, et veebisait lĂ”petab funktsioneerimise ĂŒhe pĂ€ringu sekundis vĂ”i isegi ĂŒhe pĂ€ringu minutis, oleks see suurepĂ€rane. Sest pahatahtlikult vĂ”i lihtsalt juhuslikult satuvad kasutajad vĂ”i rĂŒndajad just sellesse nĂ”rkusse.
Osaline rike on parem kui tÀielik
Soovitame alati luua heterogeenseid sĂŒsteeme. Need tuleks vĂ€lja jagada just fĂŒĂŒsilisel tasandil, mitte ainult konteineriseerimise teel. FĂŒĂŒsilise jagamise korral, isegi kui saidil midagi ebaĂ”nnestub, on suur tĂ”enĂ€osus, et see ei lakkaks tĂ€ielikult töötamast, ja kasutajatel oleks juurdepÀÀs vĂ€hemalt osale funktsionaalsusest.
Ăige arhitektuur on vastupidavuse alus
Ressursi rikke kindel ja tema vĂ”ime taluda rĂŒnnakuid ja koormusi tuleb kavandamise etapis, tegelikult juba esialgsete plokkdiagrammide joonistamise faasis, paika panna. Sest kui suurte vigadega rikutakse, on nende hilisem parandamine vĂ”imalik, kuid vĂ€ga keeruline.
Head ei peaks olema ainult koodis, vaid ka konfiguraatoris
Paljud arvavad, et hea arendustiim on teenuse usaldusvÀÀrsuse garantii. Hea arendustiim on tÔepoolest vajalik, kuid samuti on vajalik ka hea hooldus ja korralik DevOps. See tÀhendab, et on vaja spetsialiste, kes konfigureerivad Linuxi ja vÔrgu Ôigesti, kirjutavad nginx-i konfigureerimisfailid Ôigesti, seadistavad piirangud ja muud asjad. Vastasel juhul töötab ressurss hÀsti ainult testimisel, kuid tootmises vÔib see mingil hetkel kokku kukkuda.
Koormuse ja stressitestoerimise erinevused
Koormustestimine vĂ”imaldab tuvastada sĂŒsteemi toimimise piire. Stressitesting on suunatud sĂŒsteemi nĂ”rkade kohtade leidmisele ja selleks, et katsetada, kuidas sĂŒsteem kĂ€itub, kui osad sellest peaksid ebaĂ”nnestuma. Samuti on koormuse iseloom tavaliselt tellijale enne stressitesti algust teadmata.
L7 rĂŒnnakute eripĂ€rad
Me jagame tavaliselt koormusi L7 ja L3&4 tasemele. L7 on rakendustasandi koormus, mida mÔistetakse enamasti ainult HTTP-na, kuid meie all mÔistame igasugust koormust TCP protokolli tasemel.
L7 rĂŒnnakutel on teatud iseloomulikud jooned. Esiteks, need suunduvad otse rakendusse, mistĂ”ttu nende kajastamine vĂ”rgus on tĂ”enĂ€oliselt keeruline. Sellised rĂŒnnakud hĂ”lmavad loogikat ning seetĂ”ttu tarbivad nad vĂ€ga tĂ”husalt, isegi vĂ€ikese liikluse korral, CPU-d, mĂ€lu, ketast, andmebaasi ja muid ressursse.
HTTP Flood
Iga rĂŒnnaku korral on koormuse tekitamine lihtsam kui selle töötlemine, ja L7 puhul on see samuti tĂ”si. RĂŒnnaku liiklust ei ole alati lihtne eristada legitiimsest ja enamikul juhtudel on seda vĂ”imalik teha sageduse alusel, kuid kui kĂ”ik on targalt planeeritud, siis logide pĂ”hjal ei ole vĂ”imalik aru saada, kus on rĂŒnnak ja kus legitiimsed pĂ€ringud.
Esimese nĂ€itena vaatame HTTP Flood rĂŒnnakut. Graafikult on nĂ€ha, et sellised rĂŒnnakud on tavaliselt vĂ€ga tugevad, allolevas nĂ€ites ĂŒletas tipupĂ€ringute arv 600 000 minutis.

HTTP Flood â lihtsaim viis koormuse tekitamiseks. Selleks kasutatakse tavaliselt mĂ”nd koormustestimise tööriista, nĂ€iteks ApacheBench, kus mÀÀratakse pĂ€ring ja siht. Sellise lihtsa lĂ€henemisega on suur tĂ”enĂ€osus serveri vahemĂ€llu jÀÀda, kuid seda on lihtne vĂ€ltida, nĂ€iteks lisades pĂ€ringusse juhuslikke ridu, mis sunnib serverit pidevalt vĂ€rske lehte tagastama.
Ărge unustage ka kasutajaliidest koormuse loomise protsessis. Paljusid populaarsete testimise tööriistade kasutajaliideseid filtreerivad sĂŒsteemiadministraatorid, ja sellisel juhul koormus ei pruugi isegi tagasiside jĂ”uda. Oluliselt saab tulemust parandada, lisades pĂ€ringusse ĂŒmber vĂ”i vĂ€hem kehtiva brauseri pĂ€ise.
Kuigi HTTP Flood'i rĂŒnnakud on lihtsad, on neil ka oma puudused. Esiteks nĂ”uavad nad suurteressursse koormuse tekitamiseks. Teiseks, sellised rĂŒnnakud on vĂ€ga lihtsad tuvastada, eriti kui need tulevad ĂŒhelt aadressilt. LĂ”ppkokkuvĂ”ttes hakkavad pĂ€ringud kohe filtreerima kas sĂŒsteemiadministraatorid vĂ”i isegi teenusepakkuja tasemel.
Mida otsida
Selleks, et vĂ€hendada pĂ€ringute arvu sekundis, kaotamata samas efektiivsust, on vaja natuke loominguliselt lĂ€heneda ja uurida veebisaiti. Koormust saab jagada mitte ainult kanalile vĂ”i serverile, vaid ka rakenduse eriosadele, nĂ€iteks andmebaasidele vĂ”i failisĂŒsteemidele. Samuti tasub otsida veebisaidi kohti, kus toimuvad suured arvutused: kalkulaatorid, tootevalikulehed ja muud sarnased. LĂ”puks juhtub sageli, et veebisaidil on olemas php-skript, mis genereerib lehe sadadest tuhandetest ridadest. Selline skript koormab samuti serverit ja vĂ”ib saada rĂŒnnaku sihtmĂ€rgiks.
Kust otsida
Kui skanneerime ressursi enne testimist, vaatame esmalt muidugi veebisaiti ise. Otsime erinevaid sisendi murdekohti, suured failid - kÔike, mis vÔib ressursile probleeme tekitada ja selle tööd aeglustada. Abiks on ka tavalised arendustööriistad Google Chrome'is ja Firefoxis, mis nÀitavad lehe vastamisaegu.
Me scanime ka subdomeene. NÀiteks on veebipoe, abc.com, subdomeen admin.abc.com. TÔenÀoliselt on see administraatori liides, mis on kaitstud sisselogimisega, kuid kui sellele koormust rakendada, vÔib see tekitada probleeme pÔhiveebile.
Veebisaidil vĂ”ib olla subdomeen api.abc.com. TĂ”enĂ€oliselt on see ressurss mobiilirakenduste jaoks. Rakenduse vĂ”ib leida App Store'ist vĂ”i Google Play'ist, seadistada eripunkti, analĂŒĂŒsida API-d ja registreerida testkonto. Probleem on aga selles, et sageli arvavad inimesed, et kĂ”ik, mis on kaitstud sisselogimisega, on teenusetĂ”kestamise rĂŒnnakute suhtes haavatamatud. Oletatakse, et sisselogimine on parim CAPTCHA, kuid see ei ole tĂ”si. 10-20 testkontot loomine on lihtne, ja kui need on loodud, saame juurdepÀÀsu keerulisele ja katmata funktsionaalsusele.
Muidugi vaatame me ajaloo, robots.txt ja WebArchive'i kaudu, otsime lehe varasemaid versioone. Aeg-ajalt juhtub, et arendajad saavad kÀima nÀiteks mail2.yandex.net, samas kui vana versioon, mail.yandex.net, jÀÀb alles. See mail.yandex.net lÔpetab toetamised, selle arendustegevusele ei suunata ressursse, kuid see jÀtkab andmebaasi tarbimist. Seega saab vana versiooni abil efektiivselt kasutada tagaplaneerimise ja kÔigi nende ressursside potentsiaali, mis on seostatavad kujundusega. Loomulikult ei juhtu see alati, kuid sarnaste olukordadega kohtume siiski suhteliselt tihti.
Muidugi analĂŒĂŒsime kĂ”iki pĂ€ringuparametreid ja kĂŒpsiste struktuuri. NĂ€iteks saame kĂŒpsisesse JSON massiivi panna mingi vÀÀrtuse, luua suure sisemise struktuuri ja sundida ressursi toimima ebanormaalset pikka aega.
Koormus otsingus
Esimene asi, mis pĂ€he tuleb veebilehe uurimisel, on andmebaasi koormamine, kuna otsing on peaaegu kĂ”igil ja kahjuks on see enamasti halvasti kaitstud. Miks arendajad ei pööra otsingule piisavalt tĂ€helepanu? Siin on ĂŒks soovitus â Ă€rge tehke sarnaseid pĂ€ringuid, sest vĂ”ite kokku puutuda vahemĂ€luga, nagu HTTP ĂŒlekoormuse puhul.
Juhuslike pĂ€ringute tegemine andmebaasi pole ka alati tĂ”hus. Palju parem on koostada mĂ€rksĂ”nade nimekiri, mis on seotud otsinguga. Kui tuua nĂ€iteks internetipood: oletame, et veebileht mĂŒĂŒb autokehade ja vĂ”imaldab seadistada rehvide raadiust, auto tĂŒĂŒpi ja muid parameetreid. Seega, asjakohaste sĂ”nade kombinatsioonid panevad andmebaasi töötama palju keerulisemates tingimustes.
Lisaks tasub kasutada lehtede jagamist: otsingul on palju keerulisem esitada eelviimast tulemuste lehte kui esimest. TeisisÔnu, lehtede jagamisega saab koormust veidi mitmekesistada.
Alloleval nĂ€itel illustreerime otsingu koormust. On nĂ€ha, et juba testimise esimesel sekundil kĂŒmne pĂ€ringu sekundis kukkus leht kokku ja ei vastanud.

Mida teha, kui otsingut ei leidu?
Kui otsingut ei leidu, ei tĂ€henda see, et saidil ei ole teisi haavatavaid sisestusvĂ€lju. Ăheks selliseks vĂ”ib olla autoriseerimine. Arendajad armastavad luua keerulisi rĂ€si, et kaitsta sisselogimise andmebaasi rĂŒnnakute eest radari tabelite abil. See on hea, kuid sellised rĂ€si nĂ”uavad suures mahus CPU ressursse. Suur valeautorisatsioonide voog vĂ”ib pĂ”hjustada protsessori ĂŒlekoormuse, mis omakorda toob kaasa saidi toimimise peatamise.
Saidil olevad erinevad kommentaaride ja tagasiside vormid vÔivad olla pÔhjus, miks sealt saadetakse vÀga suuri tekste vÔi luuakse lihtsalt massilist spÀmmimist. MÔnikord aktsepteerivad saidid manuseid, sealhulgas gzip formaadis. Sel juhul vÔtame 1TB faili, tihendame selle gzipiga mitme baitini vÔi kilobaidini ja saadame saidile. SeejÀrel dekomprimeeritakse see ja tulemuseks on vÀga huvitav efekt.
Rest API
Sooviksin pöörata veidi tĂ€helepanu sellistele tuttavatele teenustele nagu Rest API. Rest API kaitsmine on palju keerulisem kui tavalise veebisaidi kaitsmine. Rest API puhul ei toimi isegi elementaarsed paroolide rĂŒnnakute ja muu ebaseadusliku tegevuse kaitsemeetodid.
Rest API on vĂ€ga lihtne rikutud, kuna see teeb otseĂŒhenduse andmebaasiga. Sellise teenuse töö katkestamine toob kaasa tĂ”sised tagajĂ€rjed Ă€ritegevusele. Fakt on see, et Rest API on tavaliselt seotud mitte ainult peamise veebisaidiga, vaid ka mobiilirakendusega ning erinevate sisemiste Ă€riressurssidega. Ja kui see kĂ”ik kokku kukub, on mĂ”ju palju intensiivsem kui lihtsalt tavalise veebisaidi riknemisel.
Raske sisu koormus
Kui meile pakutakse vĂ€lja testida mĂ”nda tavapĂ€rast ĂŒhekordset rakendust, maandumislehte vĂ”i visiitkaardivetti, millel pole keerulist funktsionaalsust, otsime me rasket sisu. NĂ€iteks suured pildid, mida server edastab, binaarfailid, PDF-dokumendid â proovime kĂ”ike seda allalaadida. Sellised testid koormavad hĂ€sti failisĂŒsteemi ja ummistavad kanaleid, seega on need tĂ”husad. See tĂ€hendab, et isegi kui te ei pane serverit kinni, allalaadides suurt faili madalatel kiirusel, ummistate te lihtsalt sihtserveri kanali ja seega tekib teenuse tĂ”rge.
Sellise testi nÀitel on selgelt nÀha, et kiirusel 30 RPS lÔpetas veebisait vastamise vÔi andis vÀlja 500. serveri vead.

Ărge unustage serverite seadistamist. Tihti juhtub, et inimene ostab virtuaalmasina, paigaldab sinna Apache'i, seadistab kĂ”ik vaikimisi ja paigutab php-rakenduse; allpool nĂ€ete selle tulemusi.

Siin toimus koormus juurest ja see oli vaid 10 RPS. Ootasime 5 minutit ja server kukkus. TÔsi on see, et lÔpuni ei ole teada, miks see kukkus, kuid on oletus, et lihtsalt mÀlu jagus otsa ja seetÔttu lÔpetas see vastamise.
PÔhjaline laine
Viimase aasta-kahe jooksul on lainepĂ”hised rĂŒnnakud muutunud ĂŒsna populaarseks. See on tingitud sellest, et paljud organisatsioonid ostavad teatud riistvara DDoS-i kaitseks, mis nĂ”uab teatud aega statistika kogumiseks rĂŒnnaku filtrimiseks. See tĂ€hendab, et nad ei filtreeri rĂŒnnakut esimestel 30-40 sekundil, kuna koguvad andmeid ja Ă”pivad. Seega on nendel 30-40 sekundil vĂ”imalik saata veebisaidile nii palju, et ressurss jÀÀb pikaks ajaks maas, kuni kĂ”ik pĂ€ringud saavad lahendatud.
Antud rĂŒnnaku puhul oli intervall 10 minutit, pĂ€rast mida saabus uus, muudetud rĂŒnnaku osa.

Ehk siis kaitse on Ă”ppinud, kĂ€ivitanud filtreerimise, kuid saabub uus, tĂ€iesti erinev rĂŒnnakute osa ja kaitse alustab uuesti Ă”ppimist. Tegelikult lĂ”petab filtreerimine töötamise, kaitse muutub ebaefektiivseks ja veebileht ei ole enam ligipÀÀsetav.
Laine rĂŒnnakutele on iseloomulikud vĂ€ga kĂ”rged vÀÀrtused haripunktis, need vĂ”ivad ulatuda sadade tuhandete vĂ”i miljoni pĂ€ringuni sekundis, kui rÀÀkida L7-st. L3 ja L4 puhul vĂ”ib seal olla sadu gigabitte liiklust, vĂ”i vastavalt sadu mpps, kui arvestada pakettide kaupa.
Selliste rĂŒnnakute probleem seisneb sĂŒnkroonimises. RĂŒnnakud tulevad botivĂ”rkudest, ja et luua vĂ€ga suur ĂŒhekordne tipp, on vajalik kĂ”rge sĂŒnkroonimise tase. Ja see koordineerimine ei alati Ă”nnestu: mĂ”nikord saadakse vĂ€lja mingi paraboolne tipp, mis nĂ€eb ĂŒsna kahtlane vĂ€lja.
Ei ela HTTP ainuĂŒksi
Lisaks L7 taseme HTTP-le, meeleme kasutada ka teisi protokolle. Ăldiselt vĂ€ljastavad tavalised veebi saidid, eriti tavalise hostimisega, vĂ€lja postitusprotokolle ja MySQL-i. Postitusprotokollid taluvad koormusi vĂ€hem kui andmebaasid, kuid neid saab koormata siiski ĂŒsna efektiivselt, mille tulemuseks on serveri kĂ”rge CPU koormus.
Me saavutasime tĂ€iesti reaalselt SSH 2016. aasta haavatavuse abil edu. Praeguseks on see haavatavus enamikus sĂŒsteemides parandatud, kuid see ei tĂ€henda, et SSH-le ei saaks koormust anda. Saab kĂŒll. Lihtsalt antakse tohutut autoriseerimiskoormust, SSH kasutab peaaegu kogu serveri CPU-d ja edasi veebisait kukub alla juba ĂŒhe vĂ”i kahe pĂ€ringu tĂ”ttu sekundis. Seega ei saa logide pĂ”hjal neid ĂŒhte vĂ”i kahte pĂ€ringut kuidagi eristada legaalsest koormusest.
Kas meie serverites avatakse endiselt palju ĂŒhendusi. Varem polnud sellega probleeme Apache'is, kuid praegu on see nĂ€htav ka nginx'is, kuna seda seadistatakse sageli vaikimisi. Nginx suudab hoida avatud teatud arvu ĂŒhendusi, mistĂ”ttu kui see piir on ĂŒletatud, ei aktsepteeri nginx uut ĂŒhendust ja veebisait ei tööta.
Meie testklaster omab piisavalt CPU-d, et rĂŒnnata SSL handshake'i. Tegelikkuses meeldib seda mĂ”nikord teha ka botnet'idele. Ăhelt poolt on selge, et SSL on hĂ€davajalik, kuna see mĂ”jutab Google'i otsingu tulemust, jĂ€rjestust ja turvalisust. Teisalt, kahjuks on SSL-l ka teatud probleemid CPU kasutuses.
L3&4
Kui rÀÀgime L3&4 tasandi rĂŒnnakutest, rÀÀgime tavaliselt kanalitasandi rĂŒnnakust. Selline koormus on peaaegu alati eristatav legaalsest, vĂ€lja arvatud juhul, kui tegemist on SYN-flood rĂŒnnakuga. SYN-flood rĂŒnnakute probleemiks kaitsemeetmete jaoks on suur maht. L3&4 maksimaalne kiirus ulatus 1,5-2 Tbit/s. Sellist liiklust on isegi suurte ettevĂ”tete, sealhulgas Oracle'i ja Google'i, jaoks vĂ€ga keeruline töödelda.
SYN ja SYN-ACK on pakette, mida kasutatakse ĂŒhenduse loomisel. SeetĂ”ttu on SYN-floodi raske eristada legitiimsest koormusest: pole selge, kas see on SYN, mis tuli ĂŒhenduse loomiseks, vĂ”i osa flood'ist.
UDP-flood
Tavaliselt ei ole kurjategijatel nii suured ressursid nagu meil, seetĂ”ttu vĂ”ib rĂŒnnakute korraldamiseks kasutada amplifikatsiooni. See tĂ€hendab, et kurjategija skaneerib Internetti ja leiab kas haavatavad vĂ”i valesti seadistatud serverid, mis nĂ€iteks vastavad ĂŒhe SYN-paketi peale kolme SYN-ACK paketi. Petlikult allika aadressi muutes vĂ”imalik ĂŒhe paketiga suurendada vĂ”imsust nĂ€iteks kolm korda ja suunata liiklus ohvrile.

Amplifikatsioonide probleem seisneb nende keerulises tuvastamises. Viimaste nĂ€idete seas vĂ”ib tuua vĂ€lja kuulsa juhtumi haavatavast memcached'ist. Lisaks on nĂŒĂŒd palju IoT-seadmeid, IP-kaameraid, mis on ka peamiselt vaikeseadistusega ja valesti seadistatud, mistĂ”ttu kurjategijad kasutavad tihti just selliseid seadmeid rĂŒnnakute lĂ€biviimiseks.

Keeruline SYN-flood
SYN-flood on ilmselt kĂ”ige huvitavam rĂŒnnaku tĂŒĂŒp arendaja vaatenurgast. Probleem on selles, et sageli kasutavad sĂŒsteemiadministraatorid kaitseks IP-aadresside blokeerimist. Samuti kannatavad IP-aadresside blokeerimise all mitte ainult adminnid, kes jĂ€rgivad skripte, vaid kahjuks ka mĂ”ned kallid kaitsesĂŒsteemid.
Selline meetod vĂ”ib tuua kaasa katastroofi, sest kui kurjategijad asendavad IP-aadressid, blokeerib ettevĂ”te enda alamvĂ”rgu. Kui tulemĂŒĂŒr blokeerib enda klastrit, siis vĂ€lised suhted lagunevad ja ressurss puruneb.
Oma vĂ”rgu blokeerimine pole keeruline. Kui kliendi bĂŒroos on Wi-Fi-vĂ”rk, vĂ”i kui ressursi töökindlust mÔÔdetakse erinevate monitooringute abil, siis vĂ”tame selle monitooringusĂŒsteemi vĂ”i bĂŒroo kliendi Wi-Fi IP-aadressi ja kasutame seda allikana. Tulemuseks nĂ€ib ressurss olevat saadaval, kuid siht-IP-aadressid on blokeeritud. Nii vĂ”ib olla blokeeritud nĂ€iteks HighLoad konverentsi Wi-Fi-vĂ”rk, kus esitletakse ettevĂ”tte uut toodet, mis toob endaga kaasa teatud Ă€rilised ja majanduslikud kulud.
Testimise kĂ€igus ei saa me kasutada memcached'i suurendamist vĂ€liste ressursside kaudu, kuna on kokkulepped, et liiklus suunatakse ainult lubatud IP-aadressidesse. Seega kasutame amplifikatsiooni SYN ja SYN-ACK kaudu, kus ĂŒhe SYN saatmise peale vastab sĂŒsteem kahe vĂ”i kolme SYN-ACK'iga, ja tulemuseks on rĂŒnnaku kahekordistumine vĂ”i kolmekordistumine.
Tööriistad
Ăks peamisi tööriistu, mida kasutame L7 taseme koormuse tekitamiseks, on Yandex-tank. EelkĂ”ige kasutatakse tohutuna Phantom'i, lisaks on meil mitmeid skripte, mis genereerivad kuulide koormust ja analĂŒĂŒsivad tulemusi.
VĂ”rguliikluse analĂŒĂŒsimiseks kasutatakse Tcpdump'i ja serveri analĂŒĂŒsiks Nmap'i. L3&4 taseme koormuse tekitamiseks kasutatakse OpenSSL'i ja veidi oma maagiat DPDK raamatukoguga. DPDK on Inteli raamatukogu, mis vĂ”imaldab töötada vĂ”rgu liidesega, mööda minnes Linuxi virnast, suurendades efektiivsust. Loomulikult kasutame DPDK't mitte ainult L3&4 tasemel, vaid ka L7 tasemel, kuna see vĂ”imaldab luua vĂ€ga kĂ”rge koormuse voolu, ulatudes miljonite pĂ€ringuteni sekundis ĂŒhest masinast.
Kasutame ka teatud liiklust genereerivaid tööriistu ja spetsiaalseid tööriistu, mida kirjutame konkreetsete testide jaoks. Kui meenutada SSH haavatavust, siis ei saa sissetoodud meetodit kasutada. Kui rĂŒndame postiprotokolli, kasutame postiteenuseid vĂ”i kirjutame lihtsalt nende peale skripte.
JĂ€reldused
KokkuvÔtteks tahaksime öelda:
- Lisaks klassikalisele koormustestimisele on hĂ€davajalik teha ka stressitestimist. Meil on reaalsed nĂ€ited, kus partneri alltöövĂ”tja teostas ainult koormustestimist. See nĂ€itas, et ressursid taluvad normaalset koormust. Kuid hiljem tekkis ebatavaline koormus, ja veebisaidi kĂŒlastajad hakkasid ressurssi veidi teisiti kasutama â ja lĂ”puks jooksis alltöövĂ”tja kokku. Seega on oluline otsida haavatavusi, isegi kui olete juba DDoS-rĂŒnnakute eest kaitstud.
- Oluline on isoleerida sĂŒsteemi osad ĂŒksteisest. Kui teil on otsing, tuleks see viia eraldi masinatele, mitte isegi konteinerisse. Sest kui otsing vĂ”i autentimine ebaĂ”nnestub, jÀÀb vĂ€hemalt midagi tööle. Internetipoe puhul saavad kasutajad jĂ€tkuvalt tooteid katalooge kaudu otsida, liikuda agregaatorkeskkondadest ja osta, kui nad on juba sisse logitud, vĂ”i registreeruda OAuth2 kaudu.
- Ărge alahindage erinevaid pilveteenuseid.
- Kasutage CDN-i mitte ainult vĂ”rgu viivituste optimeerimiseks, vaid ka kanali ammendamise rĂŒnnakute ja staatika selliste rĂŒnnakute eest kaitsmiseks.
- Kasutage spetsialiseeritud kaitseteenuseid. Te ei saa ise kaitsta L3&4 rĂŒnnakute eest kanalitasemel, sest tĂ”enĂ€oliselt pole teil lihtsalt piisavalt kanalit. L7 rĂŒnnakute vastu on samuti vĂ€ga keeruline kaitsta, kuna need vĂ”ivad olla vĂ€ga suured. Pluss, vĂ€ikeste rĂŒnnakute leidmine jÀÀb tĂ”epoolest spetsialistide teenuste ja algoritmide ĂŒlesandeks.
- Hoia regulaarselt uuendusi. See kehtib mitte ainult kernel'i, vaid ka SSH deemonite kohta, eriti kui need on vĂ€ljas avatud. Ăldiselt on soovitatav uuendada kĂ”ike, kuna on keeruline ise jĂ€lgida erinevaid haavatavusi.
Allikas: habr.com
