Variti izstrÄdÄ aizsardzÄ«bu pret robotprogrammatÅ«ru un DDoS uzbrukumiem, kÄ arÄ« veic stresa un slodzes testÄÅ”anu. HighLoad++ 2018 konferencÄ mÄs runÄjÄm par to, kÄ nodroÅ”inÄt resursus no dažÄda veida uzbrukumiem. ÄŖsÄk sakot: izolÄjiet sistÄmas daļas, izmantojiet mÄkoÅpakalpojumus un CDN un regulÄri atjauniniet. Bet jÅ«s joprojÄm nevarÄsit tikt galÄ ar aizsardzÄ«bu bez specializÄtiem uzÅÄmumiem :)
Pirms teksta lasīŔanas varat izlasīt īsos kopsavilkumus
Un, ja jums nepatÄ«k lasÄ«t vai vienkÄrÅ”i vÄlaties skatÄ«ties video, mÅ«su reportÄžas ieraksts atrodas zemÄk zem spoilera.
ReportÄžas video ieraksts
Daudzi uzÅÄmumi jau zina, kÄ veikt slodzes testÄÅ”anu, bet ne visi veic stresa testus. Daži no mÅ«su klientiem uzskata, ka viÅu vietne ir neievainojama, jo viÅiem ir augstas slodzes sistÄma un tÄ labi aizsargÄ pret uzbrukumiem. MÄs parÄdÄm, ka tÄ nav pilnÄ«gi taisnÄ«ba.
Protams, pirms testu veikÅ”anas mÄs saÅemam pasÅ«tÄ«tÄja atļauju, parakstÄ«tu un apzÄ«mogotu, un ar mÅ«su palÄ«dzÄ«bu DDoS uzbrukumu nevienam nevar veikt. TestÄÅ”ana tiek veikta klienta izvÄlÄtÄ laikÄ, kad viÅa resursa plÅ«sma ir minimÄla un piekļuves problÄmas klientus neietekmÄs. TurklÄt, tÄ kÄ testÄÅ”anas procesÄ vienmÄr kaut kas var noiet greizi, mums ir pastÄvÄ«gs kontakts ar klientu. Tas ļauj ne tikai ziÅot par sasniegtajiem rezultÄtiem, bet arÄ« kaut ko mainÄ«t testÄÅ”anas laikÄ. Pabeidzot testÄÅ”anu, mÄs vienmÄr sastÄdÄm ziÅojumu, kurÄ norÄdÄm uz atklÄtajiem trÅ«kumiem un sniedzam ieteikumus vietnes nepilnÄ«bu novÄrÅ”anai.
KÄ mÄs strÄdÄjam
PÄrbaudot, mÄs emulÄjam robottÄ«klu. TÄ kÄ mÄs strÄdÄjam ar klientiem, kuri neatrodas mÅ«su tÄ«klos, lai nodroÅ”inÄtu, ka pÄrbaude nebeidzas pirmajÄ minÅ«tÄ ierobežojumu vai iedarbinÄtas aizsardzÄ«bas dÄļ, mÄs piegÄdÄjam slodzi nevis no viena IP, bet gan no sava apakÅ”tÄ«kla. TurklÄt, lai radÄ«tu ievÄrojamu slodzi, mums ir savs diezgan jaudÄ«gs testa serveris.
PostulÄti
PÄrÄk daudz nenozÄ«mÄ labu
Jo mazÄk slodzes mÄs varam novest resursu lÄ«dz neveiksmei, jo labÄk. Ja jÅ«s varat likt vietnei pÄrtraukt darbÄ«bu, veicot vienu pieprasÄ«jumu sekundÄ vai pat vienu pieprasÄ«jumu minÅ«tÄ, tas ir lieliski. Jo saskaÅÄ ar nelietÄ«bas likumu lietotÄji vai uzbrucÄji nejauÅ”i nonÄks Å”ajÄ konkrÄtajÄ ievainojamÄ«bÄ.
DaļÄja neveiksme ir labÄka par pilnÄ«gu neveiksmi
MÄs vienmÄr iesakÄm padarÄ«t sistÄmas neviendabÄ«gas. TurklÄt ir vÄrts tos atdalÄ«t fiziskÄ lÄ«menÄ«, nevis tikai konteinerizÄjot. Fiziskas atdalÄ«Å”anas gadÄ«jumÄ, pat ja vietnÄ kaut kas neizdodas, pastÄv liela varbÅ«tÄ«ba, ka tÄ pilnÄ«bÄ nepÄrtrauks darboties, un lietotÄjiem joprojÄm bÅ«s piekļuve vismaz daļai funkcionalitÄtes.
Laba arhitektÅ«ra ir ilgtspÄjas pamats
Resursa defektu tolerance un tÄ spÄja izturÄt uzbrukumus un slodzes bÅ«tu jÄnosaka projektÄÅ”anas stadijÄ, faktiski jau pirmo blokshÄmu zÄ«mÄÅ”anas stadijÄ piezÄ«mjdatorÄ. Jo, ja piezogas liktenÄ«gas kļūdas, tÄs ir iespÄjams izlabot nÄkotnÄ, bet tas ir ļoti grÅ«ti.
Labam jÄbÅ«t ne tikai kodam, bet arÄ« konfigurÄcijai
Daudzi cilvÄki domÄ, ka laba izstrÄdes komanda ir kļūmju toleranta servisa garantija. Laba izstrÄdes komanda patieÅ”Äm ir nepiecieÅ”ama, taÄu ir jÄbÅ«t arÄ« labÄm darbÄ«bÄm, labiem DevOps. Tas ir, mums ir nepiecieÅ”ami speciÄlisti, kas pareizi konfigurÄs Linux un tÄ«klu, pareizi uzrakstÄ«s konfigurÄcijas nginx, noteiks ierobežojumus utt. PretÄjÄ gadÄ«jumÄ resurss labi darbosies tikai testÄÅ”anÄ, un vienÄ brÄ«dÄ« viss salÅ«zÄ«s ražoÅ”anÄ.
AtŔķirÄ«bas starp slodzes un stresa testÄÅ”anu
Slodzes pÄrbaude ļauj noteikt sistÄmas darbÄ«bas robežas. Stresa testÄÅ”ana ir vÄrsta uz sistÄmas vÄjo vietu atraÅ”anu, un to izmanto, lai izjauktu Å”o sistÄmu un redzÄtu, kÄ tÄ uzvedÄ«sies atseviŔķu daļu atteices procesÄ. Å ÄdÄ gadÄ«jumÄ slodzes veids parasti klientam paliek nezinÄms pirms stresa testÄÅ”anas sÄkuma.
L7 uzbrukumu atŔķirÄ«gÄs iezÄ«mes
MÄs parasti sadalÄm kravas veidus slodzÄs L7 un L3 un 4 lÄ«meÅos. L7 ir slodze lietojumprogrammas lÄ«menÄ«, visbiežÄk tas nozÄ«mÄ tikai HTTP, bet mÄs domÄjam jebkuru slodzi TCP protokola lÄ«menÄ«.
L7 uzbrukumiem ir noteiktas atŔķirÄ«gas iezÄ«mes. PirmkÄrt, tie nonÄk tieÅ”i lietojumprogrammÄ, tas ir, maz ticams, ka tie tiks atspoguļoti, izmantojot tÄ«kla lÄ«dzekļus. Å Ädi uzbrukumi izmanto loÄ£iku, un tÄpÄc tie ļoti efektÄ«vi un ar mazu trafiku patÄrÄ CPU, atmiÅu, disku, datu bÄzi un citus resursus.
HTTP plūdi
Jebkura uzbrukuma gadÄ«jumÄ slodzi ir vieglÄk izveidot nekÄ rÄ«koties, un L7 gadÄ«jumÄ tas arÄ« ir taisnÄ«ba. Ne vienmÄr ir viegli atŔķirt uzbrukuma trafiku no likumÄ«gas, un visbiežÄk to var izdarÄ«t pÄc biežuma, taÄu, ja viss ir pareizi izplÄnots, tad no žurnÄliem nevar saprast, kur atrodas uzbrukums un kur ir likumÄ«gi pieprasÄ«jumi.
KÄ pirmo piemÄru apsveriet HTTP plÅ«du uzbrukumu. DiagrammÄ redzams, ka Å”Ädi uzbrukumi parasti ir ļoti spÄcÄ«gi; zemÄk esoÅ”ajÄ piemÄrÄ maksimÄlais pieprasÄ«jumu skaits pÄrsniedza 600 tÅ«kstoÅ”us minÅ«tÄ.
HTTP plÅ«di ir vienkÄrÅ”Äkais veids, kÄ izveidot slodzi. Parasti tam ir nepiecieÅ”ams kÄds slodzes pÄrbaudes rÄ«ks, piemÄram, ApacheBench, un tiek iestatÄ«ts pieprasÄ«jums un mÄrÄ·is. Izmantojot Å”Ädu vienkÄrÅ”u pieeju, pastÄv liela varbÅ«tÄ«ba, ka tiks saglabÄta servera keÅ”atmiÅa, taÄu to ir viegli apiet. PiemÄram, pieprasÄ«jumam pievienojot nejauÅ”as virknes, kas liks serverim pastÄvÄ«gi apkalpot jaunu lapu.
TÄpat slodzes izveides procesÄ neaizmirstiet par lietotÄja aÄ£entu. Daudzus populÄro testÄÅ”anas rÄ«ku lietotÄju aÄ£entus filtrÄ sistÄmas administratori, un Å”ajÄ gadÄ«jumÄ slodze var vienkÄrÅ”i nesasniegt aizmugursistÄmu. RezultÄtu var ievÄrojami uzlabot, pieprasÄ«jumÄ ievietojot vairÄk vai mazÄk derÄ«gu pÄrlÅ«kprogrammas galveni.
Lai cik vienkÄrÅ”i bÅ«tu HTTP plÅ«du uzbrukumi, tiem ir arÄ« savi trÅ«kumi. PirmkÄrt, slodzes izveidoÅ”anai ir nepiecieÅ”ams liels jaudas daudzums. OtrkÄrt, Å”Ädus uzbrukumus ir ļoti viegli atklÄt, it Ä«paÅ”i, ja tie nÄk no vienas adreses. TÄ rezultÄtÄ pieprasÄ«jumus nekavÄjoties sÄk filtrÄt vai nu sistÄmas administratori, vai pat pakalpojumu sniedzÄja lÄ«menÄ«.
Ko meklÄt
Lai samazinÄtu pieprasÄ«jumu skaitu sekundÄ, nezaudÄjot efektivitÄti, jums ir jÄparÄda nedaudz iztÄles un jÄizpÄta vietne. TÄdÄjÄdi jÅ«s varat ielÄdÄt ne tikai kanÄlu vai serveri, bet arÄ« atseviŔķas lietojumprogrammas daļas, piemÄram, datu bÄzes vai failu sistÄmas. VietnÄ varat arÄ« meklÄt vietas, kurÄs tiek veikti lieli aprÄÄ·ini: kalkulatori, preÄu izvÄles lapas utt. Visbeidzot, bieži gadÄs, ka vietnÄ ir kaut kÄds PHP skripts, kas Ä£enerÄ vairÄkus simtus tÅ«kstoÅ”u rindiÅu lapu. Å Äds skripts arÄ« ievÄrojami noslogo serveri un var kļūt par uzbrukuma mÄrÄ·i.
Kur meklÄt
Kad mÄs skenÄjam resursu pirms testÄÅ”anas, mÄs, protams, vispirms skatÄmies uz paÅ”u vietni. MÄs meklÄjam visa veida ievades laukus, smagus failus - kopumÄ visu, kas var radÄ«t problÄmas resursam un palÄninÄt tÄ darbÄ«bu. Å eit palÄ«dz banÄli Google Chrome un Firefox izstrÄdes rÄ«ki, kas rÄda lapas atbildes laikus.
MÄs arÄ« skenÄjam apakÅ”domÄnus. PiemÄram, ir noteikts tieÅ”saistes veikals abc.com, un tam ir apakÅ”domÄns admin.abc.com. VisticamÄk, tas ir administratora panelis ar autorizÄciju, taÄu, ja to noslogojat, tas var radÄ«t problÄmas galvenajam resursam.
Vietnei var bÅ«t apakÅ”domÄns api.abc.com. VisticamÄk, tas ir resurss mobilajÄm lietojumprogrammÄm. Lietojumprogrammu var atrast App Store vai Google Play, instalÄt Ä«paÅ”u piekļuves punktu, izjaukt API un reÄ£istrÄt testa kontus. ProblÄma ir tÄ, ka cilvÄki bieži domÄ, ka viss, kas ir aizsargÄts ar autorizÄciju, ir imÅ«ns pret pakalpojumu atteikuma uzbrukumiem. DomÄjams, ka autorizÄcija ir labÄkÄ CAPTCHA, bet tÄ nav. Ir viegli izveidot 10ā20 testa kontus, taÄu, tos izveidojot, mÄs iegÅ«stam piekļuvi sarežģītai un neslÄptai funkcionalitÄtei.
Protams, mÄs aplÅ«kojam vÄsturi, robots.txt un WebArchive, ViewDNS un meklÄjam resursa vecÄs versijas. Dažreiz gadÄs, ka izstrÄdÄtÄji ir izlaiduÅ”i, teiksim, mail2.yandex.net, bet vecÄ versija, mail.yandex.net, paliek. Å is mail.yandex.net vairs netiek atbalstÄ«ts, tam netiek pieŔķirti izstrÄdes resursi, taÄu tas turpina patÄrÄt datu bÄzi. AttiecÄ«gi, izmantojot veco versiju, jÅ«s varat efektÄ«vi izmantot aizmugursistÄmas resursus un visu, kas atrodas aiz izkÄrtojuma. Protams, tas ne vienmÄr notiek, bet mÄs joprojÄm ar to sastopamies diezgan bieži.
Protams, mÄs analizÄjam visus pieprasÄ«juma parametrus un sÄ«kfailu struktÅ«ru. Varat, piemÄram, sÄ«kfailÄ ievietot kÄdu vÄrtÄ«bu JSON masÄ«vÄ, izveidot daudz ligzdoÅ”anas un likt resursam darboties nepamatoti ilgu laiku.
MeklÄÅ”anas slodze
PirmÄ lieta, kas nÄk prÄtÄ, pÄtot vietni, ir ielÄdÄt datu bÄzi, jo gandrÄ«z ikvienam ir meklÄÅ”ana, un gandrÄ«z ikvienam tÄ diemžÄl ir slikti aizsargÄta. KÄdu iemeslu dÄļ izstrÄdÄtÄji nepievÄrÅ” pietiekamu uzmanÄ«bu meklÄÅ”anai. Bet Å”eit ir viens ieteikums - jums nevajadzÄtu veikt viena veida pieprasÄ«jumus, jo jÅ«s varat saskarties ar keÅ”atmiÅu, kÄ tas ir HTTP flood gadÄ«jumÄ.
ArÄ« izlases veida vaicÄjumu veikÅ”ana datu bÄzÄ ne vienmÄr ir efektÄ«va. Daudz labÄk ir izveidot meklÄÅ”anai atbilstoÅ”u atslÄgvÄrdu sarakstu. Ja atgriežamies pie tieÅ”saistes veikala piemÄra: pieÅemsim, ka vietne pÄrdod automaŔīnu riepas un ļauj iestatÄ«t riepu rÄdiusu, automaŔīnas veidu un citus parametrus. AttiecÄ«gi atbilstoÅ”o vÄrdu kombinÄcijas piespiedÄ«s datubÄzi strÄdÄt daudz sarežģītÄkos apstÄkļos.
TurklÄt ir vÄrts izmantot lappusi: meklÄÅ”anai ir daudz grÅ«tÄk atgriezt meklÄÅ”anas rezultÄtu priekÅ”pÄdÄjo lapu nekÄ pirmo. Tas ir, ar lappuÅ”u palÄ«dzÄ«bu jÅ«s varat nedaudz dažÄdot slodzi.
TÄlÄk esoÅ”ajÄ piemÄrÄ ir parÄdÄ«ta meklÄÅ”anas slodze. Redzams, ka jau no pirmÄs testa sekundes ar Ätrumu desmit pieprasÄ«jumi sekundÄ vietne nokrita un nereaÄ£Äja.
Ja nav meklÄÅ”anas?
Ja nav meklÄÅ”anas, tas nenozÄ«mÄ, ka vietnÄ nav citu neaizsargÄtu ievades lauku. Å is lauks var bÅ«t autorizÄcija. MÅ«sdienÄs izstrÄdÄtÄjiem patÄ«k izveidot sarežģītus jaucÄjus, lai aizsargÄtu pieteikÅ”anÄs datu bÄzi no varavÄ«ksnes tabulas uzbrukumiem. Tas ir labi, taÄu Å”Ädas hashes patÄrÄ daudz CPU resursu. Liela viltus atļauju plÅ«sma izraisa procesora kļūmi, kÄ rezultÄtÄ vietne pÄrstÄj darboties.
Visu veidu komentÄru un atsauksmju veidlapu klÄtbÅ«tne vietnÄ ir iemesls, lai tur nosÅ«tÄ«tu ļoti lielus tekstus vai vienkÄrÅ”i radÄ«tu milzÄ«gus plÅ«dus. Dažreiz vietnes pieÅem pievienotos failus, tostarp gzip formÄtÄ. Å ajÄ gadÄ«jumÄ mÄs paÅemam 1 TB failu, saspiežam to lÄ«dz vairÄkiem baitiem vai kilobaitiem, izmantojot gzip, un nosÅ«tÄm uz vietni. PÄc tam to izvelk un iegÅ«st ļoti interesantu efektu.
Atpūtas API
Es vÄlÄtos pievÄrst nelielu uzmanÄ«bu tÄdiem populÄriem pakalpojumiem kÄ Rest API. AtpÅ«tas API nodroÅ”inÄÅ”ana ir daudz grÅ«tÄka nekÄ parasta vietne. Pat triviÄlas metodes aizsardzÄ«bai pret paroles brutÄlu spÄku un citÄm nelikumÄ«gÄm darbÄ«bÄm nedarbojas Rest API.
Rest API ir ļoti viegli uzlauzt, jo tÄ tieÅ”i piekļūst datu bÄzei. TajÄ paÅ”Ä laikÄ Å”Äda pakalpojuma neveiksme rada diezgan nopietnas sekas uzÅÄmÄjdarbÄ«bai. Fakts ir tÄds, ka Rest API parasti izmanto ne tikai galvenajai vietnei, bet arÄ« mobilajai lietojumprogrammai un dažiem iekÅ”Äjiem biznesa resursiem. Un, ja tas viss nokrÄ«t, tad efekts ir daudz spÄcÄ«gÄks nekÄ vienkÄrÅ”as vietnes kļūmes gadÄ«jumÄ.
Notiek smaga satura ielÄde
Ja mums piedÄvÄ testÄt kÄdu parastu vienas lapas aplikÄciju, galveno lapu vai vizÄ«tkarÅ”u vietni, kurai nav sarežģītas funkcionalitÄtes, mÄs meklÄjam smagu saturu. PiemÄram, lieli attÄli, kurus serveris sÅ«ta, binÄrie faili, pdf dokumentÄcija - mÄs cenÅ”amies to visu lejupielÄdÄt. Å Ädi testi labi ielÄdÄ failu sistÄmu un aizsprosto kanÄlus, tÄpÄc tie ir efektÄ«vi. Tas ir, pat ja jÅ«s nenoliekat serveri, lejupielÄdÄjot lielu failu ar mazu Ätrumu, jÅ«s vienkÄrÅ”i aizsÄrÄsit mÄrÄ·a servera kanÄlu un pÄc tam notiks pakalpojuma atteikums.
Å Ädas pÄrbaudes piemÄrs parÄda, ka ar Ätrumu 30 RPS vietne pÄrstÄja reaÄ£Ät vai radÄ«ja 500. servera kļūdas.
Neaizmirstiet par serveru iestatÄ«Å”anu. Bieži var konstatÄt, ka cilvÄks nopirka virtuÄlo maŔīnu, instalÄja tur Apache, pÄc noklusÄjuma visu konfigurÄja, instalÄja PHP aplikÄciju un zemÄk var redzÄt rezultÄtu.
Å eit slodze devÄs uz sakni un sasniedza tikai 10 RPS. MÄs gaidÄ«jÄm 5 minÅ«tes un serveris avarÄja. Tiesa, lÄ«dz galam nav zinÄms, kÄpÄc viÅÅ” krita, taÄu pastÄv pieÅÄmums, ka viÅam vienkÄrÅ”i bija pÄrÄk daudz atmiÅas un tÄpÄc viÅÅ” pÄrstÄja reaÄ£Ät.
Uz viļÅiem balstÄ«ta
PÄdÄjÄ gada vai divu laikÄ viļÅu uzbrukumi ir kļuvuÅ”i diezgan populÄri. Tas ir saistÄ«ts ar faktu, ka daudzas organizÄcijas pÄrk noteiktas aparatÅ«ras daļas DDoS aizsardzÄ«bai, kurÄm ir nepiecieÅ”ams noteikts laiks, lai uzkrÄtu statistiku, lai sÄktu filtrÄt uzbrukumu. Tas ir, viÅi nefiltrÄ uzbrukumu pirmajÄs 30-40 sekundÄs, jo viÅi uzkrÄj datus un mÄcÄs. AttiecÄ«gi Å”ajÄs 30ā40 sekundÄs vietnÄ varat palaist tik daudz, ka resurss ilgi gulÄs, lÄ«dz visi pieprasÄ«jumi tiks notÄ«rÄ«ti.
ZemÄk redzamÄ uzbrukuma gadÄ«jumÄ bija 10 minÅ«Å”u intervÄls, pÄc kura pienÄca jauna, modificÄta uzbrukuma daļa.
Tas ir, aizsardzÄ«ba mÄcÄ«jÄs, sÄka filtrÄt, bet nÄca jauna, pavisam cita uzbrukuma daļa, un aizsardzÄ«ba sÄka mÄcÄ«ties no jauna. Faktiski filtrÄÅ”ana pÄrstÄj darboties, aizsardzÄ«ba kļūst neefektÄ«va un vietne nav pieejama.
ViļÅu uzbrukumiem ir raksturÄ«gas ļoti augstas vÄrtÄ«bas maksimumÄ, tas var sasniegt simts tÅ«kstoÅ”us vai miljonu pieprasÄ«jumu sekundÄ L7 gadÄ«jumÄ. Ja runÄjam par L3&4, tad trafika var bÅ«t simtiem gigabitu vai attiecÄ«gi simtiem mpps, ja skaita paketÄs.
ProblÄma ar Å”Ädiem uzbrukumiem ir sinhronizÄcija. Uzbrukumi nÄk no robottÄ«kla, un tiem ir nepiecieÅ”ama augsta sinhronizÄcijas pakÄpe, lai izveidotu ļoti lielu vienreizÄju smaili. Un Ŕī koordinÄcija ne vienmÄr izdodas: dažreiz iznÄkums ir kaut kÄds parabolisks maksimums, kas izskatÄs diezgan nožÄlojami.
Ne tikai HTTP
Papildus HTTP pie L7 mums patÄ«k izmantot citus protokolus. Parasti parastai vietnei, Ä«paÅ”i parastai mitinÄÅ”anai, ir pasta protokoli un MySQL izceļas. Pasta protokoli ir pakļauti mazÄkai slodzei nekÄ datubÄzes, taÄu tos var arÄ« ielÄdÄt diezgan efektÄ«vi un rezultÄtÄ servera centrÄlais procesors ir pÄrslogots.
MÄs diezgan veiksmÄ«gi izmantojÄm 2016. gada SSH ievainojamÄ«bu. Tagad Ŕī ievainojamÄ«ba ir novÄrsta gandrÄ«z visiem, taÄu tas nenozÄ«mÄ, ka ielÄdi nevar iesniegt SSH. Var. VienkÄrÅ”i ir milzÄ«ga autorizÄciju slodze, SSH apÄd gandrÄ«z visu CPU serverÄ«, un tad vietne sabrÅ«k no viena vai diviem pieprasÄ«jumiem sekundÄ. AttiecÄ«gi Å”os vienu vai divus pieprasÄ«jumus, kuru pamatÄ ir žurnÄli, nevar atŔķirt no likumÄ«gas slodzes.
ArÄ« daudzi savienojumi, ko atveram serveros, joprojÄm ir aktuÄli. IepriekÅ” Apache bija vainÄ«gs pie tÄ, tagad nginx faktiski cieÅ” no tÄ, jo tas bieži tiek konfigurÄts pÄc noklusÄjuma. Savienojumu skaits, ko nginx var paturÄt atvÄrtus, ir ierobežots, tÄpÄc mÄs atveram Å”Ädu savienojumu skaitu, nginx vairs nepieÅem jaunu savienojumu, un rezultÄtÄ vietne nedarbojas.
MÅ«su testa klasterim ir pietiekami daudz CPU, lai uzbruktu SSL rokasspiedienam. PrincipÄ, kÄ liecina prakse, dažreiz robottÄ«kliem arÄ« patÄ«k to darÄ«t. No vienas puses, ir skaidrs, ka bez SSL neiztikt, jo Google rezultÄti, rangs, droŔība. No otras puses, SSL diemžÄl ir CPU problÄma.
L3&4
Kad mÄs runÄjam par uzbrukumu L3 un 4 lÄ«menÄ«, mÄs parasti runÄjam par uzbrukumu saites lÄ«menÄ«. Å Äda slodze gandrÄ«z vienmÄr ir atŔķirama no likumÄ«gas, ja vien tas nav SYN plÅ«du uzbrukums. ProblÄma ar SYN plÅ«du uzbrukumiem droŔības rÄ«kiem ir to lielais apjoms. MaksimÄlÄ L3&4 vÄrtÄ«ba bija 1,5-2 Tbit/s. Å Äda veida trafiku ir ļoti grÅ«ti apstrÄdÄt pat lieliem uzÅÄmumiem, tostarp Oracle un Google.
SYN un SYN-ACK ir paketes, kas tiek izmantotas savienojuma izveidei. TÄpÄc SYN-plÅ«dus ir grÅ«ti atŔķirt no likumÄ«gas slodzes: nav skaidrs, vai tas ir SYN, kas nÄca, lai izveidotu savienojumu, vai plÅ«du daļa.
UDP plūdi
Parasti uzbrucÄjiem nav tÄdu iespÄju, kÄdas ir mums, tÄpÄc uzbrukumu organizÄÅ”anai var izmantot pastiprinÄjumu. Tas ir, uzbrucÄjs skenÄ internetu un atrod vai nu neaizsargÄtus, vai nepareizi konfigurÄtus serverus, kas, piemÄram, reaÄ£Äjot uz vienu SYN paketi, atbild ar trim SYN-ACK. IzkrÄpjot avota adresi no mÄrÄ·a servera adreses, ir iespÄjams palielinÄt jaudu, piemÄram, trÄ«s reizes ar vienu paketi un novirzÄ«t trafiku uz upuri.
ProblÄma ar pastiprinÄjumiem ir tÄ, ka tos ir grÅ«ti noteikt. Nesenie piemÄri ietver sensacionÄlo gadÄ«jumu ar ievainojamo atmiÅu. TurklÄt tagad ir ļoti daudz IoT ierÄ«Äu, IP kameru, kuras arÄ« lielÄkoties ir konfigurÄtas pÄc noklusÄjuma, un pÄc noklusÄjuma tÄs ir konfigurÄtas nepareizi, tÄpÄc uzbrucÄji visbiežÄk veic uzbrukumus caur Å”ÄdÄm ierÄ«cÄm.
Grūti SYN-plūdi
SYN-plÅ«di, iespÄjams, ir visinteresantÄkais uzbrukuma veids no izstrÄdÄtÄja viedokļa. ProblÄma ir tÄ, ka sistÄmas administratori aizsardzÄ«bai bieži izmanto IP bloÄ·ÄÅ”anu. TurklÄt IP bloÄ·ÄÅ”ana skar ne tikai sistÄmu administratorus, kuri darbojas, izmantojot skriptus, bet diemžÄl arÄ« dažas droŔības sistÄmas, kas tiek iegÄdÄtas par lielu naudu.
Å Ä« metode var pÄrvÄrsties par katastrofu, jo, ja uzbrucÄji nomainÄ«s IP adreses, uzÅÄmums bloÄ·Äs savu apakÅ”tÄ«klu. Kad ugunsmÅ«ris bloÄ·Ä savu klasteru, izvade neizdosies ÄrÄjÄ mijiedarbÄ«bÄ un resurss neizdosies.
TurklÄt nav grÅ«ti bloÄ·Ät savu tÄ«klu. Ja klienta birojÄ ir Wi-Fi tÄ«kls vai ja resursu veiktspÄja tiek mÄrÄ«ta, izmantojot dažÄdas uzraudzÄ«bas sistÄmas, tad mÄs Åemam Ŕīs uzraudzÄ«bas sistÄmas IP adresi vai klienta biroja Wi-Fi un izmantojam to kÄ avotu. BeigÄs Ŕķiet, ka resurss ir pieejams, taÄu mÄrÄ·a IP adreses ir bloÄ·Ätas. TÄdÄjÄdi var tikt bloÄ·Äts HighLoad konferences Wi-Fi tÄ«kls, kurÄ tiek prezentÄts uzÅÄmuma jaunais produkts, un tas rada zinÄmas biznesa un ekonomiskÄs izmaksas.
PÄrbaudes laikÄ mÄs nevaram izmantot pastiprinÄjumu, izmantojot memcached ar ÄrÄjiem resursiem, jo āāir lÄ«gumi sÅ«tÄ«t trafiku tikai uz atļautajÄm IP adresÄm. AttiecÄ«gi mÄs izmantojam pastiprinÄÅ”anu caur SYN un SYN-ACK, kad sistÄma uz viena SYN nosÅ«tÄ«Å”anu reaÄ£Ä ar diviem vai trim SYN-ACK, un izejÄ uzbrukums tiek reizinÄts ar divÄm vai trÄ«s reizÄm.
Darbarīki
Viens no galvenajiem rÄ«kiem, ko izmantojam L7 darba slodzei, ir Yandex-tank. Jo Ä«paÅ”i fantoms tiek izmantots kÄ ierocis, kÄ arÄ« ir vairÄki skripti patronu Ä£enerÄÅ”anai un rezultÄtu analÄ«zei.
Tcpdump tiek izmantots, lai analizÄtu tÄ«kla trafiku, un Nmap tiek izmantots servera analÄ«zei. Lai izveidotu slodzi L3 un 4 lÄ«menÄ«, tiek izmantots OpenSSL un nedaudz mÅ«su paÅ”u burvju ar DPDK bibliotÄku. DPDK ir Intel bibliotÄka, kas ļauj strÄdÄt ar tÄ«kla interfeisu, apejot Linux steku, tÄdÄjÄdi palielinot efektivitÄti. Dabiski, ka DPDK izmantojam ne tikai L3&4, bet arÄ« L7 lÄ«menÄ«, jo tas ļauj izveidot ļoti augstu slodzes plÅ«smu, vairÄku miljonu pieprasÄ«jumu diapazonÄ sekundÄ no vienas maŔīnas.
MÄs izmantojam arÄ« noteiktus trafika Ä£eneratorus un Ä«paÅ”us rÄ«kus, ko rakstÄm konkrÄtiem testiem. Ja atceramies SSH ievainojamÄ«bu, iepriekÅ” minÄto kopu nevar izmantot. Ja mÄs uzbrÅ«kam pasta protokolam, mÄs izmantojam pasta utilÄ«tus vai vienkÄrÅ”i rakstÄm uz tiem skriptus.
Atzinumi
NobeigumÄ es gribÄtu teikt:
- Papildus klasiskajai slodzes pÄrbaudei ir nepiecieÅ”ams veikt stresa testÄÅ”anu. Mums ir reÄls piemÄrs, kur partnera apakÅ”uzÅÄmÄjs veica tikai slodzes testÄÅ”anu. Tas parÄdÄ«ja, ka resurss var izturÄt normÄlu slodzi. Bet tad parÄdÄ«jÄs nenormÄla slodze, vietnes apmeklÄtÄji sÄka izmantot resursu nedaudz savÄdÄk, un rezultÄtÄ apakÅ”uzÅÄmÄjs apgÅ«lÄs. TÄdÄjÄdi ir vÄrts meklÄt ievainojamÄ«bas pat tad, ja esat jau aizsargÄts pret DDoS uzbrukumiem.
- Ir nepiecieÅ”ams izolÄt dažas sistÄmas daļas no citÄm. Ja jums ir meklÄÅ”ana, jums tas ir jÄpÄrvieto uz atseviŔķÄm maŔīnÄm, tas ir, pat ne uz Docker. Jo, ja meklÄÅ”ana vai autorizÄcija neizdodas, vismaz kaut kas turpinÄs darboties. TieÅ”saistes veikala gadÄ«jumÄ lietotÄji turpinÄs atrast produktus katalogÄ, pÄriet no apkopotÄja, iegÄdÄsies, ja tie jau ir pilnvaroti, vai autorizÄs, izmantojot OAuth2.
- Nepalaidiet uzmanÄ«bu visu veidu mÄkoÅpakalpojumiem.
- Izmantojiet CDN ne tikai, lai optimizÄtu tÄ«kla aizkaves, bet arÄ« kÄ lÄ«dzekli aizsardzÄ«bai pret uzbrukumiem kanÄla izsmelÅ”anai un vienkÄrÅ”i iepludinÄÅ”anai statiskÄ trafikÄ.
- NepiecieÅ”ams izmantot specializÄtus aizsardzÄ«bas dienestus. JÅ«s nevarat pasargÄt sevi no L3&4 uzbrukumiem kanÄlu lÄ«menÄ«, jo, visticamÄk, jums vienkÄrÅ”i nav pietiekama kanÄla. Maz ticams, ka jÅ«s arÄ« cÄ«nÄ«sities pret L7 uzbrukumiem, jo āātie var bÅ«t ļoti lieli. TurklÄt mazu uzbrukumu meklÄÅ”ana joprojÄm ir speciÄlo dienestu, Ä«paÅ”u algoritmu prerogatÄ«va.
- RegulÄri atjauniniet. Tas attiecas ne tikai uz kodolu, bet arÄ« uz SSH dÄmonu, it Ä«paÅ”i, ja tie ir atvÄrti Ärpusei. PrincipÄ viss ir jÄatjaunina, jo maz ticams, ka jÅ«s pats spÄsiet izsekot noteiktÄm ievainojamÄ«bÄm.
Avots: www.habr.com