
EttevĂ”te Variti arendab botivastast kaitset ja DDoS-rĂŒnnakute vastu, samuti viib lĂ€bi stressi- ja koormustestimist. Konverentsil HighLoad++ 2018 rÀÀkisime, kuidas kaitsta ressursse erinevate rĂŒnnakute eest. LĂŒhidalt: isoleerige sĂŒsteemi osi, kasutage pilveteenuseid ja CDN-i ning uuendage regulaarselt. Kuid ilma spetsialiseeritud kaitsefirmadeta ei suuda te siiski hakkama saada đ
Enne teksti lugemist vĂ”ite tutvuda lĂŒhikeste kokkuvĂ”tetega .
Ja kui te ei armasta lugemist vÔi soovite lihtsalt videot vaadata, siis allpool spoliers jaotises on meie ettekande salvestus.
Ettekande video

Paljud ettevĂ”tted oskavad juba teha koormusteste, kuid mitte kĂ”ik ei tee stressiteste. MĂ”ned meie kliendid arvavad, et nende veebisait on haavatamatu, sest neil on highload sĂŒsteem, mis kaitseb rĂŒnnakute eest. Me nĂ€itame, et see ei ole kaugeltki tĂ”si.
Muidugi saame enne testide lĂ€biviimist kliendilt loa, allkirja ja templiga, ja meie abiga ei saa DDoS-rĂŒnnakut kellelegi teha. Testimine toimub kliendi valitud ajal, kui tema ressursi kĂŒlastatavus on minimaalne ja ligipÀÀsu probleemid ei kajastu klientides. Lisaks, kuna testimise ajal vĂ”ib alati juhtuda midagi ootamatut, on meil pidev kontakt kliendiga. See vĂ”imaldab mitte ainult saavutatud tulemusi edastada, vaid ka testimise kĂ€igus midagi muuta. Testimise lĂ”ppedes koostame alati aruande, kus mĂ€rgime avastatud puudused ja anname soovitusi nĂ”rkade kohtade kĂ”rvaldamiseks veebisaidil.
Kuidas me töötame
Testimise lĂ€biviimisel emuleerime botivĂ”rku. Kuna töötame klientidega, kes ei asu meie vĂ”rkudes, siis et test ei lĂ”ppeks esimese minuti jooksul limiitide vĂ”i kaitse aktiveerimise tĂ”ttu, suuname koormuse mitte ĂŒhelt IP-aadressilt, vaid oma alamvĂ”rgust. Lisaks on meil piisavalt vĂ”imas testserver, et genereerida mĂ€rkimisvÀÀrset koormust.
Postulaadid
Palju â ei tĂ€henda hĂ€sti
Mida vĂ€iksem on koormus, millega suudame ressursi rikki ajada, seda parem. Kui saame saavutada, et veebisait lĂ”petab toimimise ĂŒhe pĂ€ringu sekundis vĂ”i isegi ĂŒhe pĂ€ringu minutis, oleks see suurepĂ€rane. Sest Murphy seaduse kohaselt satuvad kasutajad vĂ”i pahatahtlikud isikud juhuslikult just sellesse haavasse.
Osaline rike on parem kui tÀielik
Soovitame alati, et sĂŒsteemid oleksid heterogeensed. Ja neid tuleks jagada fĂŒĂŒsilisel tasandil, mitte ainult konteineriseerimisega. FĂŒĂŒsilise eraldamise korral, isegi kui veebisaidil midagi ebaĂ”nnestub, on tĂ”enĂ€osus, et see ei lakkaks tĂ€ielikult toimimast, suur ja kasutajatel sĂ€ilib juurdepÀÀs vĂ€hemalt osa funktsionaalsusele.
Ăige arhitektuur on stabiilsuse alus
Ressursi tĂ”rke taluvus ja selle vĂ”ime taluda rĂŒnnakuid ja koormusi peaksid olema kavandatud juba projekteerimise etapil, sisuliselt esimestel mustritel joonistades. Sest kui sisse imbuvad fataalsed vead, on hiljem nende parandamine vĂ”imalik, kuid vĂ€ga keeruline.
Hea peaks olema mitte ainult kood, vaid ka konfiguratsioon
Paljud arvavad, et hea arendusmeeskond tagab teenuse tĂ”rke taluvuse. Hea arendusmeeskond on tĂ”epoolest vajalik, kuid vajalik on ka hea kasutus, hea DevOps. Ehk on vajalikud spetsialistid, kes konfigureerivad Ă”igesti Linuxi ja vĂ”rgu, kirjutavad Ă”igesti nginxâi konfiguratsioonid, seadistavad limiidid jne. Vastasel juhul töötab ressurss hĂ€sti ainult katses, kuid tootmises murdub mingi hetk kĂ”ik kokku.
Koormuse ja stressitestimise erinevused
Koormustestimine vĂ”imaldab tuvastada sĂŒsteemi toimimise piire. Stressitestimine on suunatud sĂŒsteemi nĂ”rkade kohtade leidmisele ja seda kasutatakse selleks, et sĂŒsteemi purustada ja vaadata, kuidas see kĂ€itub teatud osade rikke korral. Samas jÀÀb koormuse iseloom tavaliselt kliendile teadmata enne stressitestimise algust.
L7 rĂŒnnakute eripĂ€rad
Liike koormusi jagame tavaliselt L7 ja L3&4 tasemete koormusteks. L7 on rakenduse taseme koormus, mille alla mÔistetakse kÔige sagedamini ainult HTTP, kuid meie mÔistame alla igasugust koormust TCP protokolli tasemel.
L7 rĂŒnnakutel on teatavad iseloomulikud tunnused. Esiteks, need tulevad otse rakendusse, seega ei ole neid tĂ”enĂ€oliselt vĂ”imalik vĂ”rgu vahenditega peegeldada. Sellised rĂŒnnakud kasutavad loogikat ja seetĂ”ttu tarbivad nad vĂ€ga efektiivselt CPU-d, mĂ€lu, ketast, andmebaasi ja muid ressursse, isegi vĂ€ikese liikluse korral.
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 on sageli keeruline eristada seaduslikust liiklusest ning enamikul juhtudel on vĂ”imalik seda teha ainult sageduse pĂ”hjal. Kuid kui kĂ”ik on korralikult planeeritud, on logide pĂ”hjal vĂ”imatu mĂ”ista, kus on rĂŒnnak ja kus seaduslikud pĂ€ringud.
Esimese nĂ€itena vaatleme HTTP Flood rĂŒnnakut. Graafikult on nĂ€ha, et sellised rĂŒnnakud on tavaliselt vĂ€ga vĂ”imsad; allolevas nĂ€ites ĂŒletas haripunktis tehtud pĂ€ringute arv 600 000 minutis.

HTTP Flood on kĂ”ige lihtsam viis koormuse tekitamiseks. Tavaaliselt kasutatakse selleks mingit koormustestimise tööriista, nĂ€iteks ApacheBench, ja mÀÀratakse pĂ€ring ja siht. Sellise lihtsa lĂ€henemise puhul on suur tĂ”enĂ€osus sattuda serveri caching'usse, kuid seda on lihtne ĂŒle petta. NĂ€iteks lisades pĂ€ringusse juhuslikke kujundeid, mis sunnib serverit pidevalt uuendama lehte.
Ărge unustage, et koormuse tekitamise protsessis on oluline ka user-agent. Paljusid populaarsest testimisest kasutatavad user-agent'id filtreerivad sĂŒsteemiadministratorid, ja siis vĂ”ib koormus lihtsalt mitte jĂ”uda taustsĂŒsteemi. Tulemusi on oluliselt vĂ”imalik parandada, lisades pĂ€ringusse enam-vĂ€hem valideeritud veebibrauseri pealkirja.
Maljerpoli all lihtsuses, HTTP Flood rĂŒnnakutel on ka oma puudused. Esiteks, koormuse tekitamiseks on vaja suurt vĂ”imsust. Teiseks, sellised rĂŒnnakud on vĂ€ga kergesti tuvastatavad, eriti kui nad tulevad ĂŒhest aadressist. LĂ”ppkokkuvĂ”ttes hakkavad pĂ€ringud koheselt filtreerima kas sĂŒsteemiadministraatorid vĂ”i isegi teenusepakkuja tasemel.
Mida otsida
Kuna vĂ€hendada sekundis esitatavate pĂ€ringute arvu, kaotamata samas efektiivsust, tuleb veidi loovust ja uurida saiti. Niisiis, koormata vĂ”ib mitte ainult kanalit vĂ”i serverit, vaid ka konkreetseid rakenduse osi, nĂ€iteks andmebaase vĂ”i failisĂŒsteeme. Samuti tasub otsida kohti saidil, mis teevad suuri arvutusi: kalkulaatorid, tooteotsingu lehed jne. LĂ”puks juhtub tihti, et saidil on mingi php-skript, mis genereerib lehe mitmest sajast tuhandest reast. Selline skript koormab samuti serverit suurel mÀÀral ja vĂ”ib muutuda rĂŒnnaku objektiks.
Kus otsida
Kui me skaneerime ressurssi enne testimise lĂ€biviimist, vaatame kĂ”igepealt loomulikult saiti endalt. Otsime igasuguseid sisendvĂ€lju, suuri faile â kĂ”ike, mis vĂ”ib ressursile probleeme tekitada ja selle tööd aeglustada. Siin aitavad tavalised arendustooted Google Chrome'is ja Firefoxis, mis nĂ€itavad lehe vastuseaega.
Samuti skaneerime alamdomeene. NÀiteks on olemas mingi veebipood, abc.com, ja sellel on alamdomeen admin.abc.com. TÔenÀoliselt on see administraatorirakendus, kuid kui sellele koormust rakendada, vÔib see peamise ressursi jaoks probleeme tekitada.
Saidil vĂ”ib olla alamdomeen api.abc.com. TĂ”enĂ€oliselt on see ressurss mobiilirakenduste jaoks. Rakenduse leidmiseks vĂ”ib minna App Store'i vĂ”i Google Play'sse, seadistada spetsiaalne juurdepÀÀsupunkt, analĂŒĂŒsida API-d ja registreerida testkonto. Probleem on selles, et tihti arvavad inimesed, et kĂ”ik, mis on autoriseerimisega kaitstud, on teenuse keelamise rĂŒnnakute suhtes haavatamatu. Oletatakse, et autoriseerimine on parim CAPTCHA, kuid see pole nii. 10â20 testkonto loomine on lihtne ja nende loomisega saame juurdepÀÀsu keerulisele ja avatud funktsionaalsusele.
Muidugi vaatame ajalugu, robots.txt ja WebArchive'i, ViewDNS-i, otsime ressursi vanu versioone. Vahel juhtub, et arendajad kĂ€ivitavad, ĂŒtleme, mail2.yandex.net, kuid vana versioon, mail.yandex.net, jÀÀb alles. See mail.yandex.net lĂ”petab toe saamise, selle arendamiseks ei eraldata ressursse, kuid see jĂ€tkab andmebaasi tarbimist. Seega saab vana versiooni abil tĂ”husalt kasutada tagapool olevaid ressursse ja kĂ”ike, mis on seotud kujundusega. Loomulikult see ei juhtu alati, kuid me kohtame sarnaste olukordadega ikka ja jĂ€lle suhteliselt tihti.
Muidugi uurime kĂ”iki pĂ€ringu parameetreid ja kĂŒpsiste struktuuri. Saame nĂ€iteks JSON-massiivi kĂŒpsisesse mingi vÀÀrtuse ja luua suure sisemise struktuuri, sundides ressursi töötama erilise aeglusega.
Otsingu koormus
Esimene asi, mis pĂ€he tuleb, kui uurida veebisaiti, on andmebaasi koormamine, kuna otsing on peaaegu kĂ”igis ja enamikul neist on kahjuks nĂ”rk kaitse. Miks arendajad jÀÀvad otsingu piisavalt tĂ€helepanuta? Kuid siin on soovitus â vĂ€ltige ĂŒhesuguste pĂ€ringute tegemist, sest vĂ”ite kokku puutuda vahemĂ€luga, nagu ka HTTP ĂŒlekoormuse korral.
Otsingu jaoks andmebaasi juhuslike pĂ€ringute tegemine ei ole ka alati efektiivne. Oluliselt parem on koostada loetelu mĂ€rksĂ”nadest, mis on seotud otsinguga. Kui pöörduda tagasi nĂ€ite juurde, kus veebipood mĂŒĂŒb autoteste ja vĂ”imaldab mÀÀrata rehvide raadiust, autotype'i ja muid parameetreid. Seega kombinatsioonid asjakohastest sĂ”nadest panevad andmebaasi töötama palju keerulisemates tingimustes.
Lisaks on soovitatav kasutada lehekĂŒlgede jagamist: otsingul on palju keerulisem nĂ€idata eelviimast otsingutulemust, kui esimest. Seega saab lehekĂŒlgede jagamise abil koormust veidi mitmekesistada.
Allpool on nĂ€idatud otsingu koormus. NĂ€hes, et juba testi esimesel sekundil kĂŒmne pĂ€ringu tasa hukkas sait ja ei vastanud.

Mis juhtub, kui otsingut ei ole?
Kui otsingut ei ole, ei tĂ€henda see, et sait ei sisaldaks teisi haavatavaid sisendvĂ€lju. Selliseks vĂ€ljad vĂ”ivad olla autoriseerimine. Praegu armastavad arendajad luua keerulisi rĂ€si, et kaitsta sisselogimise andmebaasi rĂŒndamise eest kaarelistest tabelitest. See on hea, aga sellised rĂ€si tarbivad palju CPU ressurssi. Suur valeautoriseerimise voog toob kaasa protsessori kokkuvarisemise ja seetĂ”ttu lĂ”petab sait töötamise.
Erinevate kommentaari- ja tagasiside vormide olemasolu veebisaidil on pÔhjus saata sinna vÀga suuri tekste vÔi lihtsalt luua massilist rÀmpsposti. MÔnikord aktsepteerivad saidid ka sissehainetud faile, sealhulgas gzip-formaadis. Sellisel juhul vÔtame 1TB faili, komprimeerime selle gzip abil paariks baitiks vÔi kilobaitiks ja saadame saidile. Edasi dekompressitakse see ja saadakse vÀga huvitav efekt.
Rest API
Sooviksime pöörata natuke tÀhelepanu praegu populaarsetele teenustele, nagu Rest API. Rest API kaitsmine on palju keerulisem kui tavalise veebisaidi. Rest API jaoks ei tööta isegi tavalised paroolivÔtmise ja muu ebaseadusliku tegevuse kaitsemeetodid.
Rest API-d on vĂ€ga lihtne rikki minna, kuna see pöördub otse andmebaasi poole. Sellegipoolest vĂ”ib sellise teenuse vĂ€lja lĂŒlitamine kaasa tuua piisavalt tĂ”siseid tagajĂ€rgi Ă€ri jaoks. Asi on selles, et Rest API on tavaliselt seotud mitte ainult pea veebisaidiga, vaid ka mobiilirakenduste ja muude sisemiste Ă€riallikatega. Ja kui kĂ”ik see kokku kukub, on mĂ”ju palju tĂ”sisemat, kui lihtsalt tavalise veebisaidi rikki minek.
Raske sisu koormus
Kui meile pakutakse testida mĂ”nda tavalist ĂŒhe lehe rakendust, maandumist vĂ”i visiitkaarti, millel ei ole keerulisi funktsioone, siis otsime rasket sisu. NĂ€iteks suured pildid, mida server edastab, binaarfailid, pdf-dokumendid - proovime kĂ”ike seda alla laadida. Sellised testid koormavad hĂ€sti failisĂŒsteemi ja blokeerivad kanaleid, mistĂ”ttu on need tĂ”husad. Seega, isegi kui te ei kaota serverit, laadides alla suurt faili madalatel kiirusel, blokeerite te lihtsalt sihtserveri kanali ja siis tekib teenuse katkestus.
Sellise testi nÀitel on selge, et kiirusel 30 RPS peatus veebisait vastamast vÔi andis 500. viga serveris.

Ei tohiks unustada ka serverite seadistamist. Tihti vÔib kohata, et inimene on ostnud virtuaalserveri, installinud sinna Apache, seadistanud kÔik vaikeseadetega, paigaldanud PHP-rakenduse ja allpool vÔib nÀha tulemust.

Siin kulges koormus juurtasandil ja oli vaid 10 RPS. Ootasime 5 minutit ja server kukkus kokku. TĂ”epoolest, ei ole selge, miks see kukkus, aga on oletus, et see lihtsalt ĂŒletas mĂ€lu ja seetĂ”ttu lĂ”petas vastamise.
LainepÔhine
Viimase ĂŒhe kuni kahe aasta jooksul on laineatakid muutunud ĂŒsna populaarseks. See on tingitud sellest, et paljud organisatsioonid ostavad erinevaid seadmeid DDoS-i kaitseks, mis vajavad teatud aega statistika kogumiseks, enne kui nad hakkavad rĂŒnnakut filtreerima. See tĂ€hendab, et nad ei filtreeri rĂŒnnakut esimesed 30-40 sekundit, kuna koguvad andmeid ja Ă”pivad. Seega vĂ”ib nende 30-40 sekundi jooksul veebisaidile saata nii palju pĂ€ringuid, et ressurss on pikaks ajaks maas, kuni kĂ”ik pĂ€ringud on lĂ€bi töödeldud.
Antud rĂŒnnaku puhul oli vahemik 10 minutit, mille jĂ€rel tuli uus, muudetud rĂŒnnaku kogus.

See tĂ€hendab, et kaitse Ă”ppis, aktiveeris filtreerimise, kuid tuli tĂ€iesti uus, tĂ€iesti erinev rĂŒnnakuvoog, ja kaitse alustas uuesti Ă”ppimist. Tegelikult lakkab filtreerimine töötamast, kaitse muutub ebaefektiivseks ja veebisait ei ole kergesti ligipÀÀsetav.
Laineatakitele on iseloomulikud vÀga kÔrged tipud, vÔivad ulatuda saja tuhande vÔi miljoni pÀringuni sekundis L7 puhul. Kui rÀÀkida L3&4-st, siis seal vÔivad olla sadu gigabitte liiklust vÔi vastavalt sadu mpps, kui arvestada pakettide kaupa.
Selliste rĂŒnnakute probleem on sĂŒnkroniseerimine. RĂŒnnakud tulevad botivĂ”rgust ja suure sĂŒndmuse loomiseks on vajalik kĂ”rge sĂŒnkroniseerimisaste. See kooskĂ”lastamine ei Ă”nnestu alati: mĂ”nikord saadakse vĂ€ljundiks mingisugune paraboliline tipp, mis nĂ€eb ĂŒsna kaunis vĂ€lja.
Ei ainult HTTP
Lisaks HTTP-le L7 tasemel, me armastame ka teisi protokolle Ă€ra kasutada. Tavalise veebisaidi puhul, veelgi enam tavalise hostimise puhul, on vĂ€ljas postituse protokollid ja MySQL. Postituse protokollid on koormustele vĂ€hem vastuvĂ”tlikud kui andmebaasid, kuid neidki saab koormata ĂŒsna efektiivselt, saades vĂ€ljundiks serveri kĂ”rge CPU koormuse.
Oleme tĂ€iesti reaalselt saavutanud edu SSH 2016. aasta haavatavuse kaudu. Praegu on see haavatavus peaaegu kĂ”igis parendatud, kuid see ei tĂ€henda, et SSH-le ei saaks koormust anda. Saab. Lihtsalt antakse tohutu autoriseerimise koormus, SSH sööb peaaegu kogu serveri CPU ja seejĂ€rel visatakse veebisait maas juba ĂŒhest-kahest pĂ€ringust sekundis. Seega neid ĂŒhte-kahte pĂ€ringut logides ei saa kuidagi eristada seaduslikust koormusest.
JĂ€tkuvalt on olemas palju ĂŒhendusi, mida avame serverites. Varem oli sellega probleeme Apache'is, nĂŒĂŒd eksib selles osas tihti ka nginx, kuna see on tihti vaikimisi seadistatud. Nginx'i poolt avatav ĂŒhenduste arv on piiratud, seega kui see arv tĂ€is, ei saa uus ĂŒhendus enam luua, mistĂ”ttu veebisait ei tööta.
Meie testkluster omab piisavalt CPU-d, et rĂŒnnata SSL handshake'i. Praktika nĂ€itab, et botnetid armastavad seda ka teha. Ăhest kĂŒljest on selge, et SSL'ist ei saa mööda, kuna see mĂ”jutab Google'i vĂ€ljundit, jĂ€rjestust ja turvalisust. Teisest kĂŒljest on SSL-il kahjuks probleem CPU kasutuse poolest.
L3&4
Kui rÀÀgime L3&4 taseme rĂŒnnakutest, rÀÀgime tavaliselt kanalitaseme rĂŒnnakutest. Selline koormus on peaaegu alati eristatav legaalsest, kui tegemist ei ole SYN-flood rĂŒnnakuga. SYN-flood rĂŒnnakute probleemiks kaitsevahendite jaoks on suur maht. Maksimaalne L3&4 maht oli 1,5-2 Tbit/s. Sellist liiklust on vĂ€ga raske töödelda isegi suurtele ettevĂ”tetele, sealhulgas Oracle'ile ja Google'ile.
SYN ja SYN-ACK on paketid, mida kasutatakse ĂŒhenduse loomisel. SeetĂ”ttu on SYN-flood'i keeruline legaalsest koormusest eristada: pole selge, kas SYN tuli ĂŒhenduse loomiseks vĂ”i on see osa flood'ist.
UDP-flood
Tavaliselt ei ole kurjategijatel sama vĂ”imsust, mis meil, seega vĂ”ivad nad rĂŒnnakute korral kasutada amplifikatsiooni. See tĂ€hendab, et kurjategija skaneerib internetti ja leiab kas haavatavad vĂ”i valesti seadistatud serverid, mis nĂ€iteks vastavad ĂŒhele SYN-paketile kolme SYN-ACK paketiga. Petetades allika aadressi sihtserveri aadressiga, saab ĂŒhe paketiga suurendada vĂ”imsust nĂ€iteks kolm korda ja suunata liiklus ohvrile.

Amplifikatsioonide probleem seisneb nende keerulises avastamises. Viimaste nĂ€idete hulka kuulub tuntud juhtum haavatava memcached'iga. Lisaks on nĂŒĂŒd palju IoT seadmeid, IP-kaameraid, mis on samuti enamasti vaikimisi valesti seadistatud ja seetĂ”ttu saavad kurjategijad nende kaudu rĂŒnnakuid tihti teha.

Keeruline SYN-flood
SYN-flood on tĂ”enĂ€oliselt kĂ”ige huvitavam rĂŒnnakutĂŒĂŒp arendaja vaatenurgast. Probleem on see, et sĂŒsteemiadministraatorid kasutavad sageli kaitseks IP-blokeeringut. Kahjuks kannatavad IP-blokeeringu all mitte ainult administraatorid, kes jĂ€rgivad skripte, vaid ka mĂ”ned kalli raha eest ostetud kaitsesĂŒsteemid.
Selline meetod vĂ”ib osutuda katastroofiliseks, kuna kui kurjategijad annavad vale IP-aadressid, siis blokeerib ettevĂ”te omaenda alamsĂŒsteemi. Kui tulemĂŒĂŒri kaudu blokeeritakse oma klaster, vĂ”ivad vĂ€lised suhted kokku kukkuda ja ressurss puruneda.
Oma vĂ”rgu blokeerimine pole sugugi keeruline. Kui kliendi kontoris on WI-Fi-vĂ”rk, vĂ”i kui ressursside tööd mÔÔdetakse erinevate jĂ€lgimissĂŒsteemide abil, vĂ”tame selle jĂ€lgimisseadmest vĂ”i kontori WI-Fi kliendi IP-aadressi ja kasutame seda allikana. Tulemusena nĂ€ib, et ressurss on saadaval, kuid siht-IP-aadressid on blokeeritud. Nii vĂ”ib olla blokeeritud HighLoad konverentsi Wi-Fi-vĂ”rk, kus esitletakse ettevĂ”tte uut toodet, â ja see toob kaasa teatud Ă€rilised ja majanduslikud kulud.
Testimise kĂ€igus ei saa me kasutada memcachedi kaudu amplifikatsiooni mingite vĂ€liste ressursside kaudu, kuna on kokkulepped liikluse edastamiseks ainult lubatud IP-aadressidele. SeetĂ”ttu kasutame amplifikatsiooni SYN ja SYN-ACK kaudu, kui ĂŒhe SYN saatmisel vastab sĂŒsteem kahe vĂ”i kolme SYN-ACK-iga, ja lĂ”pptulemusena rĂŒnnak suureneb kaks kuni kolm korda.
Tööriistad
Ăks peamisi tööriistu, mida me L7 taseme koormuse jaoks kasutame, on Yandex-tank. TĂ€psemalt kasutatakse kui suurtĂŒkki fantoomi, lisaks on mitmeid skripte, et genereerida kuulid ja analĂŒĂŒsida tulemusi.
VĂ”rguliikluse analĂŒĂŒsimiseks kasutatakse Tcpdumpi, serveri analĂŒhĂŒĂŒsiks â Nmapi. L3&4 taseme koormuse tekitamiseks kasutatakse OpenSSL-i ja veidi oma maagiat DPDK raamatukoguga. DPDK on Intelilt saadud raamatukogu, mis vĂ”imaldab töötada vĂ”rgu liidesega, mööda minnes Linuxi virnast, parandades seelĂ€bi efektiivsust. Loomulikult kasutame DPDK-d mitte ainult L3&4 tasemel, vaid ka L7 tasemel, kuna see vĂ”imaldab genereerida vĂ€ga suurt koormust, ulatudes miljonite pĂ€ringuteni sekundis ĂŒhest masinast.
Kasutame ka teatud liiklust genereerivaid tööriistu ja spetsiaalseid vahendeid, mida kirjutame konkreetsete testide jaoks. Kui meenutada SSH haavatavust, siis eeltoodud komplektiga ei saa seda Ă€ra kasutada. Kui rĂŒndame e-posti protokolli, siis vĂ”tame kasutusele e-posti tööriistad vĂ”i kirjutame neile lihtsalt skripte.
JĂ€reldused
KokkuvÔtteks sooviksin öelda:
- Lisaks klassikalisele koormustestimisele tuleb kindlasti lĂ€bi viia ka stressitestimine. Meil on reaalne nĂ€ide, kus partneri alltöövĂ”tja viis lĂ€bi ainult koormustestimise. See nĂ€itas, et ressurss talub ettenĂ€htud koormust. Kuid seejĂ€rel ilmus ettenĂ€gematu koormus, veebisaidi kĂŒlastajad hakkasid ressursi kasutama veidi muul moel, â ja tulemuseks jĂ€i alltöövĂ”tja seisma. Seega, haavatavuste otsimine on vajalik, isegi kui te juba kaitsete end DDoS-rĂŒnnakute eest.
- On oluline isoleerida ĂŒhed osad sĂŒsteemist teistest. Kui teil on otsing, tuleb see viia eraldi masinatesse, isegi mitte Dockerisse. Sest kui otsing vĂ”i autentimine ebaĂ”nnestuvad, siis vĂ€hemalt midagi jĂ€tkab tööd. Internetipoe puhul saavad kasutajad jĂ€tkuvalt leida tooteid kataloogist, liikuda kinnisvaraportaalist, ostma, kui nad on juba autentitud, vĂ”i autentima end OAuth2 kaudu.
- Ărge alahinnake igasuguseid pilveteenuseid.
- Kasutage CDN-i mitte ainult vĂ”rgulĂ€henemise optimeerimiseks, vaid ka kaitsevahendina kanalite ammendamise rĂŒnnakute ja lihtsalt staatilise fludi eest.
- On vajalik kasutada spetsialiseeritud kaitsete teenuseid. L3&4 rĂŒnnakute kaitsmine kanalitasemel on keeruline, sest tĂ”enĂ€oliselt pole teil piisavalt kanalit. L7 rĂŒnnakutelt kaitsmine on samuti keeruline, kuna need vĂ”ivad olla vĂ€ga suured. Lisaks on vĂ€ikeste rĂŒnnakute leidmine siiski spetsiaalsete teenuste ja algoritmide privileeg.
- Uuendage regulaarselt. See kehtib mitte ainult tuuma, vaid ka SSH deemonite kohta, eriti kui need on avatud vĂ€ljastpoolt. Ăldiselt tuleks uuendada kĂ”ike, sest te tĂ”enĂ€oliselt ei suuda iseseisvalt jĂ€lgida teatud haavatavusi.
Allikas: habr.com
