{"id":31924,"date":"2019-10-31T21:44:01","date_gmt":"2019-10-31T18:44:01","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy\/"},"modified":"2019-10-31T21:44:01","modified_gmt":"2019-10-31T18:44:01","slug":"ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","title":{"rendered":"DDoS Assistance: How We Conduct Stress and Load Testing","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"DDoS Assistance: How We Conduct Stress and Load Testing\" src=\"\/wp-content\/uploads\/2019\/04\/9e01506f9103d69af131c7a419b10e42.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Podjetje Variti razvija za\u0161\u010dito pred boti in DDoS napadi ter izvaja stresne in obremenitvene teste. Na konferenci HighLoad++ 2018 smo govorili o tem, kako za\u0161\u010dititi vire pred razli\u010dnimi vrstami napadov. Na kratko: izolirajte dele sistema, uporabljajte obla\u010dne storitve in CDN ter redno posodabljajte. Vendar brez specializiranih podjetij za za\u0161\u010dito se vseeno ne boste mogli za\u0161\u010dititi \ud83d\ude42<\/i><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPred branjem besedila se lahko seznanite s kratkimi tezami <noindex><a rel=\"nofollow\" href=\"http:\/\/www.highload.ru\/moscow\/2018\/abstracts\/4201\">na strani konference<\/a><\/noindex>.<br \/>\n\u010ce ne marate branja ali preprosto \u017eelite gledati video, je posnetek na\u0161ega predavanja spodaj v skrivenem delu.<\/p>\n<p><b class=\"spoiler_title\">Posnetek predavanja<\/b><center><div class=\"youtube-placeholder\" data-id=\"Lu4tsUvfYRc\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/Lu4tsUvfYRc\/hqdefault.jpg\" alt=\"Predvajaj video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Mnoge dru\u017ebe \u017ee znajo izvajati obremenitvene teste, vendar ne vse izvajajo stresne teste. Nekateri na\u0161i naro\u010dniki menijo, da je njihova spletna stran neprobojena, ker imajo visokointenzivni sistem, ki dobro \u0161\u010diti pred napadi. Mi pa dokazujemo, da to ni \u010disto res. <br \/>\nSeveda pred izvedbo testov pridobimo dovoljenje naro\u010dnika z podpisom in \u017eigom, in z na\u0161o pomo\u010djo DDoS napadov na nikogar ni mogo\u010de izvesti. Testiranje poteka v \u010dasu, ki ga izbere naro\u010dnik, ko je obremenitev njegovega vira minimalna in te\u017eave z dostopom ne vplivajo na stranke. Poleg tega, ker se lahko med testiranjem vedno zgodi kaj nepri\u010dakovanega, imamo stalni stik z naro\u010dnikom. To nam omogo\u010da, da ne le poro\u010damo o dose\u017eenih rezultatih, ampak tudi spreminjamo nekatere stvari med testiranjem. Ob zaklju\u010dku testiranja vedno pripravimo poro\u010dilo, v katerem navajamo odkrite pomanjkljivosti in dajemo priporo\u010dila za odpravo \u0161ibkih mest spletne strani. <\/p>\n<h3>Kako delamo<\/h3>\n<p>\nPri izvajanju testiranja emuliramo botnet. Ker delamo s strankami, ki niso v na\u0161ih omre\u017ejih, da test ne bi kon\u010dal takoj v prvi minuti zaradi delovanja omejitev ali za\u0161\u010dite, nalagamo obremenitev ne iz enega IP, temve\u010d iz svoje podmre\u017ene skupine. Poleg tega imamo za ustvarjanje bistvene obremenitve svoj dovolj zmogljiv testni stre\u017enik.<\/p>\n<h3>Postulati<\/h3>\n<p><\/p>\n<blockquote><p><b>Veliko \u2014 ne pomeni dobro<\/b><br \/>\n\u010cim manjim optere\u0107enjem mo\u017eemo do\u0107i do kvara resursa, to je bolje. Ako uspemo da napravimo situaciju da sajt prestane da funkcioni\u0161e samo od jednog zahteva u sekundi, ili \u010dak od jednog zahteva u minutu, to bi bilo odli\u010dno. Zato \u0161to po zakonu ru\u017eno\u0107e, korisnici ili zlonamernici slu\u010dajno padnu ba\u0161 na ovu ranjivost. <\/p><\/blockquote>\n<blockquote><p><b>Delimi\u010dni kvar je bolji od potpunog<\/b><br \/>\nUvek savetujemo da sistemi budu heterogeni. I treba ih deliti upravo na fizi\u010dkom nivou, a ne samo kontejnerizacijom. U slu\u010daju fizi\u010dkog razdvajanja, \u010dak i ako ne\u0161to na sajtu zaka\u017ee, postoji velika verovatno\u0107a da ne\u0107e do\u0107i do potpunog prestanka rada, a korisnicima \u0107e biti omogu\u0107en pristup barem delu funkcionalnosti.<\/p><\/blockquote>\n<blockquote><p><b>Ispravna arhitektura je osnova otpornosti<\/b><br \/>\nOtpornost resursa i njegova sposobnost da izdr\u017ei napade i optere\u0107enja treba da se ugrade u fazi projektovanja, zapravo u fazi crtanja prvih blok dijagrama u svin\u010dniku. Jer ako se unesu fatalne gre\u0161ke, mogu\u0107e ih je ispraviti kasnije, ali veoma je te\u0161ko.<\/p><\/blockquote>\n<blockquote><p><b>Dobar treba da bude ne samo kod, ve\u0107 i konfiguracija<\/b><br \/>\nMnogi misle da dobra razvojna ekipa garantuje otpornost servisa. Dobra razvojna ekipa je zaista potrebna, ali tako\u0111e je potrebna i dobra eksploatacija, dobar DevOps. To zna\u010di da su potrebni stru\u010dnjaci koji \u0107e pravilno konfigurirati Linux i mre\u017eu, pravilno napisati konfiguracije u nginx, postaviti limite i ostalo. U suprotnom, resurs \u0107e dobro raditi samo u testu, a u produkciji \u0107e s vremenom do\u0107i do kvara.<\/p><\/blockquote>\n<blockquote><p><b>Razlike izme\u0111u optere\u0107enja i stres testiranja<\/b><br \/>\nOptere\u0107enje testiranje omogu\u0107ava da otkrijemo granice funkcionisanja sistema. Stres testiranje je usmereno na pronala\u017eenje slabih ta\u010daka sistema i koristi se da se taj sistem pokvari i vidi kako \u0107e se pona\u0161ati u procesu kvara odre\u0111enih delova. Pri tom tip optere\u0107enja obi\u010dno ostaje nepoznat klijentu do po\u010detka stres testiranja.<\/p><\/blockquote>\n<p><\/p>\n<h3>Odlike L7 napada<\/h3>\n<p>\nVrste optere\u0107enja obi\u010dno delimo na optere\u0107enja na L7 i L3&amp;4 nivou. L7 je optere\u0107enje na nivou aplikacije, naj\u010de\u0161\u0107e se pod tim podrazumeva samo HTTP, dok mi podrazumevamo bilo koje optere\u0107enje na nivou TCP protokola.<br \/>\nL7 \u043d\u0430\u043fadi imajo dolo\u010dene zna\u010dilnosti. Prvi\u010d, prihajajo neposredno v aplikacijo, kar pomeni, da jih je z omre\u017enimi sredstvi te\u017eko odpraviti. Tak\u0161ni napadi uporabljajo logiko in zaradi tega zelo u\u010dinkovito in z malo prometa porabljajo CPU, pomnilnik, disk, bazo podatkov in druge vire.<\/p>\n<h3>HTTP Flood<\/h3>\n<p>\nPri katerem koli napadu je la\u017eje ustvariti obremenitev kot jo obdelovati, in to velja tudi za L7. Napadni promet ni vedno enostavno razlikovati od legitimnega, najpogosteje je to mogo\u010de narediti po pogostosti, vendar \u010de je vse dobro na\u010drtovano, je nemogo\u010de razumeti iz logov, kje je napad in kje so legitimni zahtevki. <br \/>\nKot prvi primer si poglejmo napad HTTP Flood. Iz grafikona je razvidno, da so taki napadi obi\u010dajno zelo mo\u010dni; v spodnjem primeru je vrhunec \u0161tevila zahtevkov presegel 600.000 na minuto.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS Assistance: How We Conduct Stress and Load Testing\" src=\"\/wp-content\/uploads\/2019\/04\/a2bcd4b2babbb3362a717f93a3f3d1b3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHTTP Flood je najla\u017eji na\u010din za ustvarjanje obremenitve. Obi\u010dajno se za to vzame nek instrument za obremenitveno testiranje, na primer ApacheBench, in se zastavi zahteva in cilj. Pri tak\u0161nem preprostem pristopu je velika verjetnost, da naletimo na predpomnjenje stre\u017enika, vendar ga je enostavno obiti. Na primer, tako da dodamo naklju\u010dne vrstice v zahtevo, kar prisili stre\u017enik, da vedno vrne sve\u017eo stran. <br \/>\nPrav tako ne smemo pozabiti na user-agent pri ustvarjanju obremenitve. Mnogi user-agenti priljubljenih orodij za testiranje se filtrirajo s strani sistemskih administratorjev, in v tem primeru lahko obremenitev preprosto ne dose\u017ee backend-a. Rezultat se lahko znatno izbolj\u0161a, \u010de v zahtevo vklju\u010dimo bolj ali manj veljaven naslov iz brskalnika. <br \/>\nKljub preprostosti napada HTTP Flood ima tudi svoje pomanjkljivosti. Prvi\u010d, za ustvarjanje obremenitve so potrebne velike zmogljivosti. Drugi\u010d, taki napadi se zelo enostavno odkrijejo, zlasti \u010de prihajajo iz enega naslova. Rezultat je, da se zahtevki takoj za\u010dnejo filtrirati bodisi s strani sistemskih administratorjev bodisi celo na ravni ponudnika. <\/p>\n<h3>Kaj iskati<\/h3>\n<p>\nDa bi zmanj\u0161ali \u0161tevilo zahtevkov na sekundo, ne da bi pri tem izgubili u\u010dinkovitost, je potrebno nekaj domi\u0161ljije in raziskovanja spletne strani. Obremenitev lahko povzro\u010di ne samo povezava ali stre\u017enik, ampak tudi posamezni deli aplikacije, kot so baze podatkov ali datote\u010dni sistemi. Pravno je dobro raziskati mesta na spletni strani, ki izvajajo velike izra\u010dune: kalkulatorji, strani za izbiro produktov in podobno. Kon\u010dno se pogosto zgodi, da obstaja nek php skript, ki generira stran iz ve\u010d sto tiso\u010d vrstic. Tak skript prav tako znatno obremeni stre\u017enik in lahko postane tar\u010da napada.<\/p>\n<h3>Kje iskati<\/h3>\n<p>\nKo skeniramo vir pred testiranjem, najprej pogledamo seveda na samo spletno stran. I\u0161\u010demo razli\u010dna polja za vnos, te\u017eke datoteke \u2014 na splo\u0161no vse, kar lahko povzro\u010di te\u017eave viru in upo\u010dasni njegovo delovanje. Tukaj pomagajo enostavna orodja za razvijalce v Google Chrome in Firefoxu, ki prikazujejo \u010das odziva strani. <br \/>\nPrav tako skeniramo poddomene. Na primer, obstaja nek spletni prodajalec, abc.com, in ima poddomeno admin.abc.com. Verjetno gre za admin panel z prijavo, vendar \u010de vanj spu\u0161\u010damo obremenitev, lahko povzro\u010di te\u017eave za glavni vir. <br \/>\nSpletna stran ima lahko poddomeno api.abc.com. Verjetno gre za vir za mobilne aplikacije. Aplikacijo je mogo\u010de najti v App Store ali Google Play, namestiti posebno dostopno to\u010dko, dekonstruirati API in registrirati testne ra\u010dune. Problem je v tem, da mnogi ljudje pogosto mislijo, da je vse, kar je za\u0161\u010diteno z avtentikacijo, neobranljivo za napade na zavrnitev storitve. Domnevno je avtentikacija najbolj\u0161a CAPTCHA, vendar to ni res. Ustvarjanje 10-20 testnih ra\u010dunov je enostavno, in ko jih enkrat ustvarimo, pridobimo dostop do kompleksne in ne za\u0161\u010ditene funkcionalnosti. <br \/>\nSeveda gledamo zgodovino, robots.txt in WebArchive, ViewDNS in i\u0161\u010demo stare verzije vira. V\u010dasih se zgodi, da so razvijalci izdali, recimo, mail2.yandex.net, medtem ko je stara razli\u010dica, mail.yandex.net, ostala. Ta mail.yandex.net ne preneha s podporo, na njega se ne namenjajo razvojni viri, vendar \u0161e naprej porablja podatkovno bazo. Tako je mogo\u010de z uporabo stare razli\u010dice u\u010dinkovito izkoristiti vire backend-a in vsega, kar stoji za oblikovanjem. Seveda se to ne zgodi vedno, vendar se s tem kljub temu soo\u010damo kar pogosto. <br \/>\nSeveda, analiziramo vse parametre poizvedbe, strukturo pi\u0161kotkov. Lahko na primer vpi\u0161emo vrednost v JSON polje znotraj pi\u0161kotka, ustvarimo veliko hierarhijo in prisilimo vir, da deluje nerazumno dolgo.<\/p>\n<h3>Obremenitev pri iskanju<\/h3>\n<p>\nPrvo, kar pride na misel pri preu\u010devanju spletnega mesta, je obremenitev baze podatkov, saj skoraj vsak ima iskalnik, in skoraj vsi so, na \u017ealost, slabo za\u0161\u010diteni. Razvijalci iz neznanega razloga ne posve\u010dajo dovolj pozornosti iskanju. Vendar je tukaj ena priporo\u010dilo \u2014 ne smete opravljati enotnih poizvedb, saj se lahko sre\u010date z okrepljenjem, kot pri HTTP floodu. <br \/>\nPrav tako naklju\u010dno poizvedovanje v bazo podatkov ni vedno u\u010dinkovito. Bolje je ustvariti seznam klju\u010dnih besed, ki se nana\u0161ajo na iskanje. \u010ce se vrnemo k primeru spletne trgovine: recimo, da spletna stran prodaja avtomobilske pnevmatike in omogo\u010da vnos premera pnevmatik, tip avtomobila in druge parametre. Kombinacije relevantnih besed bodo povzro\u010dile, da bo baza podatkov delovala v mnogo bolj zapletenih pogojih. <br \/>\nPoleg tega je smiselno uporabiti paginacijo: iskanju je veliko te\u017eje vrniti predzadnjo stran rezultatov kot prvo. To pomeni, da lahko s paginacijo nekoliko popestrite obremenitev. <br \/>\nV spodnjem primeru prikazujemo obremenitev pri iskanju. Vidimo, da je \u017ee od prve sekunde testa z desetimi poizvedbami na sekundo spletna stran padla in ni odgovarjala.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS Assistance: How We Conduct Stress and Load Testing\" src=\"\/wp-content\/uploads\/2019\/04\/dd888d9f3cc0e5058ac9508cee8cc3d5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Kaj pa, \u010de iskanja ni?<\/h3>\n<p>\n\u010ce iskanja ni, to ne pomeni, da spletna stran ne vsebuje drugih ranljivih vnosnih polj. Tak\u0161no polje je lahko avtentikacija. Zdaj razvijalci raje uporabljajo zapletene hashe, da za\u0161\u010ditijo bazo prijav pred napadi z mavri\u010dnimi tabelami. To je dobro, vendar tak\u0161ni hashi porabijo velike CPU vire. Velik pretok la\u017enih avtentikacij privede do odpovedi procesorja, in posledi\u010dno spletna stran preneha delovati. <br \/>\nPrisotnost razli\u010dnih obrazcev na spletnem mestu za komentarje in povratne informacije je prilo\u017enost, da tja po\u0161ljemo zelo velike besedila ali preprosto ustvarimo mno\u017ei\u010den spamming. V\u010dasih spletna mesta sprejemajo tudi vgrajene datoteke, vklju\u010dno s formatom gzip. V takem primeru vzamemo datoteko velikosti 1TB, jo z gzip-om stisnemo na nekaj bajtov ali kilobajtov in jo po\u0161ljemo na spletno stran. Nato se razpakira in rezultat je zelo zanimiv. <\/p>\n<h3>Rest API<\/h3>\n<p>\n\u017deleli bi posvetiti malo pozornosti trenutno popularnim uslugama poput Rest API. Za\u0161tititi Rest API mnogo je te\u017ee nego obi\u010dnu web stranicu. \u010cak i banalne metode za\u0161tite od poku\u0161aja poga\u0111anja lozinki i druge nelegitimne aktivnosti ne rade za Rest API. <br \/>\nRest API se vrlo lako mo\u017ee slomiti, jer se direktno obra\u0107a bazi podataka. Posljedice prekida rada takve usluge mogu zna\u010dajno utjecati na poslovanje. Naime, Rest API obi\u010dno povezuje ne samo glavnu web stranicu, ve\u0107 i mobilnu aplikaciju, kao i neke unutarnje poslovne resurse. Ako sve to prestane s radom, u\u010dinak je mnogo ja\u010di nego u slu\u010daju kvara jednostavne web stranice. <\/p>\n<h3>Optere\u0107enje pri radu s te\u0161kim sadr\u017eajem<\/h3>\n<p>\nAko nam predla\u017eu testirati neku obi\u010dnu jednostranu aplikaciju, odredi\u0161nu web stranicu, poslovnu vizitku, koje nemaju slo\u017eenu funkcionalnost, tra\u017eimo te\u0161ki sadr\u017eaj. Na primjer, velike slike koje server \u0161alje, binarne datoteke, pdf dokumentaciju \u2014 poku\u0161avamo sve to preuzeti. Ovi testovi dobro optere\u0107uju datote\u010dni sustav i zagu\u0161uju kanale, stoga su u\u010dinkoviti. To jest, \u010dak i ako ne sru\u0161ite server preuzimanjem velike datoteke pri malim brzinama, samo \u0107ete zagu\u0161iti kanal ciljanog servera, a tada \u0107e do\u0107i do nepristupa\u010dnosti usluge. <br \/>\nNa primjeru takvog testa vidi se da je pri brzini od 30 RPS stranica prestala odgovarati ili je davala 500 gre\u0161ke servera.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS Assistance: How We Conduct Stress and Load Testing\" src=\"\/wp-content\/uploads\/2019\/04\/615e212d3a95b36a4f8c492d18508d7c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNe smijemo zaboraviti ni na postavke servera. \u010cesto se mo\u017ee vidjeti da je osoba kupila virtualnu ma\u0161inu, postavila Apache, konfigurirala sve prema zadanoj postavci, postavila php aplikaciju, i ispod mo\u017eemo vidjeti rezultat. <\/p>\n<p><img decoding=\"async\" alt=\"DDoS Assistance: How We Conduct Stress and Load Testing\" src=\"\/wp-content\/uploads\/2019\/04\/532a478528f8cd80285209f654411b79.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTu je optere\u0107enje i\u0161lo u korijen i iznosilo svega 10 RPS. \u010cekali smo 5 minuta i server je pao. Do kraja, istina, nije poznato za\u0161to je pao, ali postoji pretpostavka da je jednostavno 'pojeo' previ\u0161e memorije i zato je prestao odgovarati.<\/p>\n<h3>Wave based<\/h3>\n<p>\nV zadnjih dveh letih so postali precej priljubljeni valovni napadi. To je povezano s tem, da \u0161tevilne organizacije kupujejo razli\u010dne naprave za za\u0161\u010dito pred DDoS-om, ki za za\u010detek filtriranja napada zahtevajo dolo\u010deno \u010dasovno obdobje zbiranja statistike. To pomeni, da v prvih 30-40 sekundah napada ne filtrirajo, ker zbirajo podatke in se u\u010dijo. Zato je v teh 30-40 sekundah mogo\u010de na spletno mesto poslati toliko pro\u0161enj, da je vir dolgo nedostopen, dokler se ne razbremeni vseh pozivov. <br \/>\nV primeru napada spodaj je bil interval 10 minut, po katerem je pri\u0161la nova, spremenjena serija napada.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS Assistance: How We Conduct Stress and Load Testing\" src=\"\/wp-content\/uploads\/2019\/04\/1bcc609697e255c6051cd215175801f3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo pomeni, da je za\u0161\u010dita opravila usposabljanje in za\u010dela filtrirati, toda pri\u0161la je nova, povsem druga\u010dna serija napada, in za\u0161\u010dita je spet za\u010dela u\u010denje. Dejansko filtracija preneha delovati, za\u0161\u010dita postane neu\u010dinkovita in spletna stran postane nedostopna. <br \/>\nZa valovne napade so zna\u010dilni zelo visoki vrhovi, lahko dose\u017eejo sto tiso\u010d ali milijon zahtevkov na sekundo v primeru L7. \u010ce govorimo o L3 in L4, lahko tam govorimo o stotinah gigabitov prometa ali, ustrezno, stotinah mpps, \u010de \u0161tejemo v paketih. <br \/>\nTe\u017eava tak\u0161nih napadov je v sinhronizaciji. Napadi prihajajo iz botnetov in za ustvarjanje zelo velikega enkratnega vrha je potrebna visoka stopnja sinhronizacije. Ta koordinacija ne uspe vedno: v\u010dasih nastane nekak\u0161en parabolni vrh, ki izgleda precej ob\u017ealovanja vredno.<\/p>\n<h3>Ne \u017eivi le s HTTP-jem<\/h3>\n<p>\nPoleg HTTP na ravni L7 radi izkori\u0161\u010damo tudi druge protokole. Obi\u010dajno ima navadna spletna stran, \u0161e posebej pri obi\u010dajnem gostovanju, izpostavljene po\u0161tne protokole in MySQL. Po\u0161tni protokoli so manj dovzetni za obremenitve kot podatkovne baze, vendar jih je mogo\u010de obremeniti dovolj u\u010dinkovito in na izhodu dobiti preobremenjen CPU na stre\u017eniku. <br \/>\nUspe\u0161no smo uporabili ranljivost SSH iz leta 2016. Sedaj je ta ranljivost pri ve\u010dini popravljena, vendar to ne pomeni, da v SSH ne moremo obremeniti. Lahko. Preprosto ustvarimo ogromno obremenitev avtentifikacij, SSH skoraj povsem porabi CPU na stre\u017eniku in potem spletna stran pade \u017ee pri eni do dveh pro\u0161enj na sekundo. Ustrezno teh ena-dve pro\u0161enj po dnevnikih ni mogo\u010de razlikovati od legitimne obremenitve. <br \/>\nOhranjajo se tudi \u0161tevilne povezave, ki jih odpiramo na stre\u017enikih. Pred \u010dasom je s tem gre\u0161il Apache, sedaj pa to pogosto po\u010dne tudi Nginx, saj je pogosto nastavljen na privzeto. \u0160tevilo povezav, ki jih lahko Nginx dr\u017ei odprte, je omejeno, zato odpiramo to \u0161tevilo povezav in nove povezave Nginx ne sprejema, kar pomeni, da spletna stran ne deluje. <br \/>\nNa\u0161 testni klaster ima dovolj CPU, da napade SSL handshake. Na splo\u0161no, kot ka\u017ee praksa, tudi botneti to ob\u010dasno radi po\u010dnejo. Po eni strani je jasno, da brez SSL ni mogo\u010de, saj gre za uvrstitev v Google, rangiranje in varnost. Po drugi strani pa ima SSL, \u017eal, te\u017eave s CPU. <\/p>\n<h3>L3&amp;4<\/h3>\n<p>\nKo govorimo o napadu na ravneh L3&amp;4, praviloma govorimo o napadu na ravni kanala. Tak\u0161na obremenitev je skoraj vedno prepoznavna od legitimne, razen \u010de gre za napad SYN-flood. Problem SYN-flood napadov za za\u0161\u010ditna sredstva je velik obseg. Najve\u010dja vrednost L3&amp;4 je bila 1,5-2 Tbit\/s. Tak promet je zelo te\u017eko obdelati tudi velikim podjetjem, vklju\u010dno z Oracle in Google. <br \/>\nSYN in SYN-ACK so paketi, ki se uporabljajo pri vzpostavljanju povezave. Zato je SYN-flood te\u017eko razlikovati od legitimne obremenitve: ni jasno, ali gre za SYN, ki pride za vzpostavitev povezave, ali del poplave.<\/p>\n<h3>UDP-flood<\/h3>\n<p>\nObi\u010dajno nimajo napadalci takih zmogljivosti, kot jih imamo mi, zato se za organizacijo napadov lahko uporabi amplifikacija. To pomeni, da napadalec skenira internet in najde bodisi ranljive bodisi nepravilno nastavljene stre\u017enike, ki, na primer, kot odgovor na en SYN-paket, odgovorijo s tremi SYN-ACK. S ponarejanjem izvorne naslova s tistega ciljanega stre\u017enika lahko z enim paketom pove\u010damo mo\u010d, recimo, trikrat, in preusmerimo promet na \u017ertev.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS Assistance: How We Conduct Stress and Load Testing\" src=\"\/wp-content\/uploads\/2019\/04\/33c5f42dc437a0bd2a4676a63d753fa6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nProblem amplifikacij je v njihovi te\u017eki odkritosti. Med zadnjimi primeri lahko omenimo odmeven primer z ranljivim memcached. Poleg tega je danes na voljo veliko naprav IoT, IP-kamer, ki so tudi ve\u010dinoma nastavljene na privzeto, in nepravilno, zato napadalci to pogosto izkori\u0161\u010dajo za napade. <\/p>\n<p><img decoding=\"async\" alt=\"DDoS Assistance: How We Conduct Stress and Load Testing\" src=\"\/wp-content\/uploads\/2019\/04\/c7e5d01f94db9c5426d50bf21ed85822.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Zapleten SYN-flood<\/h3>\n<p>\nSYN-flood je verjetno najzanimivej\u0161a vrsta napadov z vidika razvijalca. Te\u017eava je v tem, da sistemski skrbniki pogosto uporabljajo blokado po IP-ju kot za\u0161\u010dito. Pri tem pa zaradi blokade po IP-ju trpijo ne le skrbniki, ki delujejo po skriptih, temve\u010d tudi nekateri sistemi za\u0161\u010dite, ki se kupijo za velike denarce. <br \/>\nTak\u0161na metoda se lahko kon\u010da katastropalno, saj \u010de napadalci ponaredijo <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sl\/lir\/ipv4\/\"   title=\"IP-naslove\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"623\">IP-naslove<\/a>, bo podjetje blokiralo lastno podsistem. Ko po\u017earni zid blokira lastni grozd, bodo zunanje interakcije propadle in vir bo prenehal delovati. <br \/>\nPoleg tega ni te\u017eko dose\u010di blokade lastne mre\u017ee. \u010ce ima stranka v pisarni Wi-Fi omre\u017eje ali \u010de se delovanje virov meri z razli\u010dnimi monitorji, vzamemo IP naslov tega monitorja ali pisarni\u0161kega Wi-Fi odjemalca in ga uporabimo kot vir. Tako je vir na videz dostopen, vendar so ciljni IP naslovi blokirani. Tako se lahko blokira Wi-Fi omre\u017eje konferencije HighLoad, kjer se predstavlja nov izdelek podjetja, kar povzro\u010di dolo\u010dene poslovne in gospodarske stro\u0161ke. <br \/>\nMed testiranjem ne moremo uporabljati amplifikacije preko memcached z nekaterimi zunanjimi viri, ker imamo dogovore o usmerjanju prometa le v dovoljene IP naslove. Zato uporabljamo amplifikacijo preko SYN in SYN-ACK, pri \u010demer na enega poslano SYN sistem odgovori z dvema ali tremi SYN-ACK, u\u010dinek napada pa se pove\u010da dvakrat ali trikrat. <\/p>\n<h3>Orodja<\/h3>\n<p>\nEden od glavnih orodij, ki jih uporabljamo za obremenitev na ravni L7, je Yandex-tank. Konkretno se kot pu\u0161ka uporablja fantom, poleg tega pa imamo ve\u010d skriptov za generiranje nabojev in za analizo rezultatov. <br \/>\nZa analizo omre\u017enega prometa uporabljamo Tcpdump, za analizo stre\u017enika pa Nmap. Za ustvarjanje obremenitve na ravni L3&amp;4 uporabljamo OpenSSL in malo lastne magije s knji\u017enico DPDK. DPDK je knji\u017enica podjetja Intel, ki omogo\u010da delo z omre\u017enim vmesnikom brez Linuxovega sklada, kar pove\u010duje u\u010dinkovitost. Seveda DPDK ne uporabljamo le na ravni L3&amp;4, temve\u010d tudi na ravni L7, saj omogo\u010da ustvarjanje zelo visokega prometa, do ve\u010d milijonov zahtevkov na sekundo z ene naprave. <br \/>\nPrav tako uporabljamo dolo\u010dene generatore prometa in posebna orodja, ki jih pi\u0161emo za specifi\u010dne teste. \u010ce se spomnimo ranljivosti pod SSH, jo z zgoraj navedenim naborom ni mogo\u010de izkoristiti. \u010ce napadamo po\u0161tni protokol, uporabimo po\u0161tne pripomo\u010dke ali preprosto napi\u0161emo skripte zanje.<\/p>\n<blockquote>\n<h3>Zaklju\u010dki<\/h3>\n<p>\nKot zaklju\u010dek bi rad rekel:<\/p>\n<ul>\n<li>Poleg klasi\u010dnega obremenitvenega testiranja je nujno potrebno izvajati tudi stresno testiranje. Imamo pravi primer, ko je podizvajalec partnerja izvedel le obremenitveno testiranje. To je pokazalo, da vir prenese obi\u010dajno obremenitev. A potem se je pojavila nenavadna obremenitev, obiskovalci spletne strani so vir za\u010deli uporabljati nekoliko druga\u010de - in podizvajalec se je na izhodu sesedel. Tako je vredno iskati ranljivosti, tudi \u010de ste \u017ee za\u0161\u010diteni pred DDoS napadi.<\/li>\n<li>Potrebno je izolirati posamezne dele sistema od drugih. \u010ce imate iskanje, ga je treba prenesti na lo\u010dene naprave, torej ne samo na docker. Ker \u010de iskanje ali avtentikacija odpove, vsaj nekaj \u0161e vedno deluje. V primeru spletne trgovine bodo uporabniki \u0161e vedno lahko na\u0161li izdelke po katalogu, pre\u0161li iz agregatorja, kupovali, \u010de so \u017ee avtentikovani, ali se avtentikovali prek OAuth2.<\/li>\n<li>Ne smete zanemariti vseh mogo\u010dih obla\u010dnih storitev. <\/li>\n<li>Uporabite CDN ne le za optimizacijo omre\u017enih zamud, ampak tudi kot sredstvo za\u0161\u010dite pred napadi na iz\u010drpavanje pasovne \u0161irine in preprosto flood v statiko.<\/li>\n<li>Potrebno je uporabljati specializirane za\u0161\u010ditne storitve. Pred napadi L3&amp;4 na ravni kanala se sami ne morete za\u0161\u010dititi, ker verjetno preprosto nimate dovolj pasovne \u0161irine. Pred napadi L7 se tudi verjetno ne boste mogli obraniti, ker so lahko zelo veliki. Poleg tega je iskanje manj\u0161ih napadov \u0161e vedno prerarogativa specializiranih storitev in posebnih algoritmov. <\/li>\n<li>Redno se posodabljajte. To se nana\u0161a ne le na jedro, ampak tudi na SSH daemon, \u0161e posebej, \u010de so odprti navzven. Na splo\u0161no je treba posodabljati vse, ker te\u017eko sami spremljate dolo\u010dene ranljivosti.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/variti\/blog\/448626\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Variti \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0442\u0443 \u043e\u0442 \u0431\u043e\u0442\u043e\u0432 \u0438 DDoS-\u0430\u0442\u0430\u043a, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u0435\u0441\u0441- \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 HighLoad++ 2018 \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438, \u043a\u0430\u043a \u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0438\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u0430\u0442\u0430\u043a. \u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e: \u0438\u0437\u043e\u043b\u0438\u0440\u0443\u0439\u0442\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 CDN \u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0439\u0442\u0435\u0441\u044c. \u041d\u043e \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u0432\u044b \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u0441\u044c \ud83d\ude42 \u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23782,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31924","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Variti \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47DDoS \u0432 \u043f\u043e\u043c\u043e\u0449\u044c: \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0441\u0442\u0440\u0435\u0441\u0441- \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Variti \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:44:01+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:44:01+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47DDoS v pomo\u010d: kako izvajamo stresna in obremenitvena testiranja | ProHoster","description":"Podjetje Variti razvija.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47DDoS \u0432 \u043f\u043e\u043c\u043e\u0449\u044c: \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0441\u0442\u0440\u0435\u0441\u0441- \u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b | ProHoster","og:description":"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Variti \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.","og:url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:44:01+00:00","article:modified_time":"2019-10-31T18:44:01+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31924","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-08 20:27:18","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:46:57","updated":"2026-02-08 20:27:18","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/31924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=31924"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/31924\/revisions"}],"predecessor-version":[{"id":157814,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/31924\/revisions\/157814"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/23782"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=31924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=31924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=31924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}