{"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\/da\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","title":{"rendered":"DDoS til hj\u00e6lp: hvordan vi udf\u00f8rer stress- og belastningstest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"DDoS til hj\u00e6lp: hvordan vi udf\u00f8rer stress- og belastningstest\" src=\"\/wp-content\/uploads\/2019\/04\/9e01506f9103d69af131c7a419b10e42.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Variti udvikler beskyttelse mod bots og DDoS-angreb samt udf\u00f8rer stresstest og belastningstest. P\u00e5 konferencen HighLoad++ 2018 fortalte vi, hvordan man sikrer ressourcer mod forskellige typer angreb. Kort sagt: isoler dele af systemet, brug cloud-tjenester og CDN, og opdater regelm\u00e6ssigt. Men uden specialiserede selskaber med beskyttelse vil du stadig ikke klare det \ud83d\ude42<\/i><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nF\u00f8r du l\u00e6ser teksten, kan du se de korte punkter <noindex><a rel=\"nofollow\" href=\"http:\/\/www.highload.ru\/moscow\/2018\/abstracts\/4201\">p\u00e5 konferencens hjemmeside<\/a><\/noindex>.<br \/>\nOg hvis du ikke kan lide at l\u00e6se eller blot vil se videoen, er optagelsen af vores foredrag nedenfor i spoilerlugen.<\/p>\n<p><b class=\"spoiler_title\">Videooptagelse af foredraget<\/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=\"Afspil 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>Mange virksomheder kan allerede udf\u00f8re belastningstest, men ikke alle udf\u00f8rer stresstest. Nogle af vores kunder tror, at deres website er uigennemtr\u00e6ngeligt, fordi de har en highload-l\u00f8sning, og den beskytter godt mod angreb. Vi viser dog, at det ikke helt er sandt. <br \/>\nSelvf\u00f8lgelig f\u00e5r vi tilladelse fra kunden, med underskrift og stempel, f\u00f8r vi udf\u00f8rer testene, og med vores hj\u00e6lp kan der ikke udf\u00f8res DDoS-angreb p\u00e5 nogen. Testen udf\u00f8res p\u00e5 det tidspunkt, kunden har valgt, n\u00e5r bes\u00f8gstrafikken til deres ressource er minimal, og problemer med adgang ikke vil p\u00e5virke kunderne. Desuden, da der altid kan ske noget uventet under testningen, har vi konstant kontakt med kunden. Dette g\u00f8r det muligt ikke kun at rapportere om opn\u00e5ede resultater, men ogs\u00e5 at foretage \u00e6ndringer undervejs i testen. Ved afslutning af testen udarbejder vi altid en rapport, hvor vi angiver de opdagede mangler og giver anbefalinger til at afhj\u00e6lpe svage punkter p\u00e5 hjemmesiden. <\/p>\n<h3>Hvordan vi arbejder<\/h3>\n<p>\nUnder testningen emulerer vi et botnet. Da vi arbejder med kunder, som ikke befinder sig i vores netv\u00e6rk, skal vi for at undg\u00e5, at testen slutter p\u00e5 det f\u00f8rste minut p\u00e5 grund af udl\u00f8bsgr\u00e6nser eller beskyttelse, anmelde belastningen ikke fra \u00e9n IP, men fra vores eget subnet. Desuden har vi en ret kraftig testserver til at skabe betydelig belastning.<\/p>\n<h3>Postulater<\/h3>\n<p><\/p>\n<blockquote><p><b>Mere betyder ikke n\u00f8dvendigvis bedre<\/b><br \/>\nJo mindre belastning vi kan bringe resurserne til at fejle, jo bedre. Hvis vi kan f\u00e5 en hjemmeside til at stoppe med at fungere ved blot \u00e9n foresp\u00f8rgsel pr. sekund eller endda ved \u00e9n foresp\u00f8rgsel pr. minut, ville det v\u00e6re fantastisk. Fordi loven om uheldighed siger, at brugere eller ondsindede akt\u00f8rer tilf\u00e6ldigt vil ramme denne s\u00e5rbarhed. <\/p><\/blockquote>\n<blockquote><p><b>Delvis fejl er bedre end total fejl<\/b><br \/>\nVi r\u00e5der altid til at g\u00f8re systemerne heterogene. Og de skal opdeles p\u00e5 det fysiske niveau, ikke kun ved containerisering. Med fysisk adskillelse, selv hvis noget svigter p\u00e5 siden, er der en stor sandsynlighed for, at den ikke stopper helt, og brugerne stadig har adgang til i det mindste en del af funktionaliteten.<\/p><\/blockquote>\n<blockquote><p><b>Den rigtige arkitektur er grundlaget for modstandsdygtighed<\/b><br \/>\nFejltolerance af ressourcen og dens evne til at modst\u00e5 angreb og belastninger b\u00f8r l\u00e6gges under designfasen, faktisk fra de f\u00f8rste blokdiagrammer i notebogen. For hvis fatale fejl sniger sig ind, er det muligt at rette dem senere, men det er meget besv\u00e6rligt.<\/p><\/blockquote>\n<blockquote><p><b>B\u00e5de koden og konfigurationen skal v\u00e6re gode<\/b><br \/>\nMange tror, at et godt udviklingsteam er en garanti for fejltolerancen af tjenesten. Et godt udviklingsteam er bestemt n\u00f8dvendigt, men der skal ogs\u00e5 v\u00e6re god drift, god DevOps. Det kr\u00e6ver specialister, der korrekt konfigurerer Linux og netv\u00e6rket, skriver de rigtige konfigurationer i nginx, s\u00e6tter gr\u00e6nser og s\u00e5 videre. Ellers vil ressourcen kun fungere godt i testen, men i produktionen vil alt bryde sammen p\u00e5 et tidspunkt.<\/p><\/blockquote>\n<blockquote><p><b>Forskelle mellem belastningstest og stresstest<\/b><br \/>\nBelastningstest afsl\u00f8rer systemets funktionsgr\u00e6nser. Stresstest sigter mod at finde svagheder i systemet og bruges til at bryde systemet og se, hvordan det reagerer p\u00e5 fejl i visse dele. Ofte forbliver belastningens karakter ukendt for kunden indtil starten af stresstesten.<\/p><\/blockquote>\n<p><\/p>\n<h3>Kendetegn ved L7 angreb<\/h3>\n<p>\nVi opdeler typer af belastning i L7 og L3&amp;4 niveauer. L7 refererer til belastning p\u00e5 applikationsniveau, som oftest kun forst\u00e5s som HTTP, men vi henviser til enhver belastning p\u00e5 TCP-protokolniveau.<br \/>\nL7 angreb har nogle s\u00e6rlige kendetegn. For det f\u00f8rste kommer de direkte til applikationen, hvilket g\u00f8r det vanskeligt at afvise dem med netv\u00e6rksmiddel. Disse angreb udnytter logik og bruger derfor meget effektivt CPU, hukommelse, disk, database og andre ressourcer, selv ved lav trafik.<\/p>\n<h3>HTTP Flood<\/h3>\n<p>\nI tilf\u00e6lde af ethvert angreb er det lettere at skabe belastning end at h\u00e5ndtere det, og dette g\u00e6lder ogs\u00e5 for L7. Angrebstrafik er ikke altid let at skelne fra legitim trafik, og det er oftest muligt at g\u00f8re det baseret p\u00e5 hyppighed, men hvis alt er planlagt korrekt, er det umuligt at forst\u00e5 fra loggene, hvor angrebet er, og hvor de legitime anmodninger er. <br \/>\nSom et f\u00f8rste eksempel vil vi se p\u00e5 HTTP Flood angrebet. Grafen viser, at s\u00e5danne angreb normalt er meget kraftfulde; i eksemplet nedenfor oversteg det maksimale antal anmodninger 600.000 pr. minut.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS til hj\u00e6lp: hvordan vi udf\u00f8rer stress- og belastningstest\" src=\"\/wp-content\/uploads\/2019\/04\/a2bcd4b2babbb3362a717f93a3f3d1b3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHTTP Flood er den enkleste m\u00e5de at skabe belastning p\u00e5. Normalt anvendes et v\u00e6rkt\u00f8j til belastningstest, s\u00e5som ApacheBench, hvor anmodningen og m\u00e5let defineres. Med en s\u00e5 simpel tilgang er der stor sandsynlighed for at st\u00f8de p\u00e5 serverens cache, men det er let at omg\u00e5. For eksempel ved at tilf\u00f8je tilf\u00e6ldige strenge til anmodningen, hvilket tvinger serveren til konstant at returnere en frisk side. <br \/>\nMan skal heller ikke glemme user-agent i processen med at skabe belastning. Mange user-agents fra popul\u00e6re testv\u00e6rkt\u00f8jer filtreres af systemadministratorer, og i s\u00e5danne tilf\u00e6lde kan belastningen simpelthen ikke n\u00e5 backend. Resultatet kan forbedres betydeligt ved at inds\u00e6tte en mere eller mindre gyldig header fra en browser i anmodningen. <br \/>\nP\u00e5 trods af simpliciteten har HTTP Flood angrebene ogs\u00e5 deres ulemper. For det f\u00f8rste kr\u00e6ver det store ressourcer for at skabe belastning. For det andet er s\u00e5danne angreb meget lette at opdage, is\u00e6r hvis de stammer fra \u00e9n adresse. Som et resultat begynder anmodninger straks at blive filtreret, enten af systemadministratorer eller endda p\u00e5 udbyderens niveau. <\/p>\n<h3>Hvad skal man se efter<\/h3>\n<p>\nFor reducing the number of requests per second while maintaining efficiency, a bit of creativity and exploration of the website is necessary. You can load not only the channel or server, but also individual parts of an application, such as databases or file systems. You can also search for areas on the site that perform heavy computations: calculators, product selection pages, and so on. Finally, it often happens that there is a PHP script on the site that generates a page from several hundred thousand lines. Such a script can significantly load the server and become a target for attacks.<\/p>\n<h3>Where to look<\/h3>\n<p>\nWhen we scan a resource before testing, we first look at the site itself. We search for all kinds of input fields, heavy files \u2014 basically anything that could cause issues for the resource and slow down its performance. This is where basic developer tools in Google Chrome and Firefox help, showing page response times. <br \/>\nWe also scan subdomains. For example, there is an online store, abc.com, and it has a subdomain admin.abc.com. This is likely an admin panel with authorization, but if you apply load to it, it may create problems for the main resource. <br \/>\nThe site may have a subdomain api.abc.com. This is likely a resource for mobile applications. The app can be found in the App Store or Google Play, a special access point can be set up, the API can be dissected, and test accounts can be registered. The problem is that often people think that anything protected by authorization is invulnerable to denial of service attacks. It\u2019s believed that authorization is the best CAPTCHA, but that\u2019s not true. Creating 10-20 test accounts is easy, and by doing so, we gain access to complex and unprotected functionality. <br \/>\nNaturally, we look at the history, robots.txt, and WebArchive, ViewDNS, searching for old versions of the resource. Sometimes developers roll out, for example, mail2.yandex.net, while the old version, mail.yandex.net, remains. This mail.yandex.net ceases to be supported, and no development resources are allocated for it, but it continues to consume the database. Accordingly, using the old version, we can effectively leverage the backend resources and everything that lies behind the layout. Of course, this doesn\u2019t happen all the time, but we encounter something similar fairly often. <br \/>\nSelvf\u00f8lgelig analyserer vi alle foresp\u00f8rgselsparametre og cookie-strukturen. Man kan for eksempel inds\u00e6tte en v\u00e6rdi i et JSON-array inden for en cookie, skabe en stor indlejring og f\u00e5 ressourcen til at fungere urimeligt l\u00e6nge.<\/p>\n<h3>Belastning i s\u00f8gningen<\/h3>\n<p>\nDet f\u00f8rste, der kommer i tankerne ved unders\u00f8gelse af en hjemmeside, er at belaste databasen, da n\u00e6sten alle har en s\u00f8gefunktion, og desv\u00e6rre er den d\u00e5rligt beskyttet i n\u00e6sten alle tilf\u00e6lde. Af en eller anden grund giver udviklerne ikke s\u00f8gningen tilstr\u00e6kkelig opm\u00e6rksomhed. Men der er et r\u00e5d \u2014 undg\u00e5 at lave ensartede foresp\u00f8rgsler, da man kan st\u00f8de p\u00e5 caching, ligesom ved HTTP-flood. <br \/>\nAt lave tilf\u00e6ldige foresp\u00f8rgsler i databasen er heller ikke altid effektivt. Det er meget bedre at lave en liste over n\u00f8gleord, som relaterer til s\u00f8gningen. Hvis vi vender tilbage til eksemplet med en webshop: lad os sige, at hjemmesiden s\u00e6lger bild\u00e6k og tillader at angive d\u00e6kkets radius, biltype og andre parametre. Kombinationsmuligheder af relevante ord vil f\u00e5 databasen til at arbejde under meget mere komplekse forhold. <br \/>\nDerudover b\u00f8r man bruge paginering: det er meget sv\u00e6rere for s\u00f8gningen at give den n\u00e6stsidste side af resultaterne end den f\u00f8rste. Med paginering kan man derfor variere belastningen en smule. <br \/>\nI eksemplet nedenfor viser vi belastningen i s\u00f8gningen. Det ses, at fra det f\u00f8rste sekund af testen med ti foresp\u00f8rgsler pr. sekund gik hjemmesiden ned og svarede ikke.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS til hj\u00e6lp: hvordan vi udf\u00f8rer stress- og belastningstest\" src=\"\/wp-content\/uploads\/2019\/04\/dd888d9f3cc0e5058ac9508cee8cc3d5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Hvis der ikke er nogen s\u00f8gning?<\/h3>\n<p>\nHvis der ikke er nogen s\u00f8gning, betyder det ikke, at hjemmesiden ikke indeholder andre s\u00e5rbare indtastningsfelter. Et s\u00e5dant felt kunne v\u00e6re autorisation. I dag elsker udviklere at lave komplekse hashes for at beskytte login-databasen mod angreb ved hj\u00e6lp af regnbue-tabeller. Det er godt, men s\u00e5danne hashes kr\u00e6ver store CPU-ressourcer. Et stort antal falske login-fors\u00f8g f\u00f8rer til overbelastning af processoren, og som f\u00f8lge heraf stopper hjemmesiden med at fungere. <br \/>\nTilstedev\u00e6relsen af alle former for kommentar- og feedbackformularer p\u00e5 hjemmesiden er en grund til at sende meget store tekstm\u00e6ngder eller blot skabe massiv spam. Nogle gange accepterer hjemmesider indlejringer, ogs\u00e5 i gzip-format. I dette tilf\u00e6lde tager vi en fil p\u00e5 1 TB, komprimerer den med gzip til nogle f\u00e5 bytes eller kilobyte og sender den til hjemmesiden. Derefter bliver den udpakket, og der opn\u00e5s en meget interessant effekt. <\/p>\n<h3>Rest API<\/h3>\n<p>\nDet er vigtigt at fokusere p\u00e5 popul\u00e6re tjenester som Rest API. At beskytte Rest API er meget sv\u00e6rere end at beskytte en almindelig hjemmeside. Selv grundl\u00e6ggende metoder til at beskytte mod brute-force angreb og anden uautoriseret aktivitet fungerer ikke for Rest API. <br \/>\nRest API er meget nemt at bryde ind i, fordi det har direkte adgang til databasen. Nedbrud af en s\u00e5dan tjeneste kan have alvorlige konsekvenser for virksomheden. Problemet er, at Rest API ofte er knyttet til ikke bare hovedwebsitet, men ogs\u00e5 mobilapplikationen og interne forretningsressourcer. Hvis alt dette g\u00e5r ned, vil effekten v\u00e6re meget st\u00e6rkere end ved nedbrud af en almindelig hjemmeside. <\/p>\n<h3>Belastning af tungt indhold<\/h3>\n<p>\nN\u00e5r vi bliver bedt om at teste en almindelig landside, et enkelt side-applikation eller en visitkort hjemmeside uden komplekse funktioner, s\u00f8ger vi efter tungt indhold. For eksempel store billeder, som serveren leverer, bin\u00e6re filer eller pdf-dokumentation - vi pr\u00f8ver at downloade alt dette. S\u00e5danne tests belaster filsystemet effektivt og fylder kanalerne, hvilket g\u00f8r dem effektive. Det betyder, at selvom du ikke bringer serveren ned ved at downloade en stor fil med lave hastigheder, s\u00e5 fylder du blot det m\u00e5lrettede servers kanal, hvilket resulterer i serviceafvisning. <br \/>\nI dette eksempel ses det, at ved 30 RPS stoppede siden med at svare, eller gav 500 serverfejl.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS til hj\u00e6lp: hvordan vi udf\u00f8rer stress- og belastningstest\" src=\"\/wp-content\/uploads\/2019\/04\/615e212d3a95b36a4f8c492d18508d7c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMan m\u00e5 heller ikke glemme serverindstillingerne. Ofte ser man, at en person har k\u00f8bt en virtuel maskine, installeret Apache, konfigureret alt til standard, placeret en php-applikation, og nedenfor kan man se resultatet. <\/p>\n<p><img decoding=\"async\" alt=\"DDoS til hj\u00e6lp: hvordan vi udf\u00f8rer stress- og belastningstest\" src=\"\/wp-content\/uploads\/2019\/04\/532a478528f8cd80285209f654411b79.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHer gik belastningen til roden og var kun 10 RPS. Vi ventede 5 minutter, og serveren gik ned. Det er dog uklart, hvorfor den gik ned, men der er en formodning om, at den simpelthen har brugt for meget hukommelse, hvilket resulterede i, at den ikke l\u00e6ngere kunne svare.<\/p>\n<h3>B\u00f8lgebaseret<\/h3>\n<p>\nI de sidste \u00e5r eller to er b\u00f8lgeangreb blevet ret popul\u00e6re. Dette skyldes, at mange organisationer k\u00f8ber de forskellige enheder til beskyttelse mod DDoS, som kr\u00e6ver en vis tid til at opsamle statistik for at begynde at filtrere angrebet. Det vil sige, at de ikke filtrerer angrebet i de f\u00f8rste 30-40 sekunder, fordi de opsamler data og l\u00e6rer. I disse 30-40 sekunder kan der derfor sendes s\u00e5 mange anmodninger til siden, at ressourcen vil v\u00e6re utilg\u00e6ngelig i lang tid, indtil alle anmodninger er behandlet. <br \/>\nI tilf\u00e6lde af angrebet nedenfor var der et interval p\u00e5 10 minutter, hvorefter en ny, \u00e6ndret portion af angrebet kom.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS til hj\u00e6lp: hvordan vi udf\u00f8rer stress- og belastningstest\" src=\"\/wp-content\/uploads\/2019\/04\/1bcc609697e255c6051cd215175801f3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5 beskyttelsen blev tr\u00e6net, indledte filtreringen, men en ny, helt anderledes portion af angrebet kom, og beskyttelsen begyndte igen at l\u00e6re. Faktisk stopper filtreringen med at virke, beskyttelsen bliver ineffektiv, og siden er utilg\u00e6ngelig. <br \/>\nB\u00f8lgeangreb er kendetegnet ved meget h\u00f8je v\u00e6rdier p\u00e5 toppen; det kan n\u00e5 op p\u00e5 hundrede tusinde eller en million anmodninger pr. sekund, i tilf\u00e6lde af L7. Hvis vi taler om L3&amp;4, kan der v\u00e6re hundredvis af gigabit trafik, eller hundredvis af mpps, hvis vi ser p\u00e5 pakker. <br \/>\nProblemet med s\u00e5danne angreb er synkroniseringen. Angrebene kommer fra botnet, og for at skabe et meget stort spidsbelastning er der behov for en h\u00f8j grad af synkronisering. Og denne koordination lykkes ikke altid: nogle gange resulterer det i en eller anden parabolisk spids, som ser temmelig ynkelig ud.<\/p>\n<h3>Ikke kun HTTP<\/h3>\n<p>\nUdover HTTP p\u00e5 L7-niveauet elsker vi ogs\u00e5 at udnytte andre protokoller. Som regel er der for en almindelig hjemmeside, is\u00e6r en almindelig hosting, ogs\u00e5 mailprotokoller og MySQL, der stikker ud. Mailprotokoller er mindre udsatte for belastninger end databaser, men de kan ogs\u00e5 belastet effektivt, hvilket kan medf\u00f8re overbelastning af CPU'en p\u00e5 serveren. <br \/>\nVi har med succes udnyttet en s\u00e5rbarhed i SSH fra 2016. Nu er denne s\u00e5rbarhed n\u00e6sten udbedret hos alle, men det betyder ikke, at man ikke kan p\u00e5f\u00f8re belastning via SSH. Det kan man. Der kan simpelthen sendes en enorm belastning af godkendelser, SSH bruger n\u00e6sten al CPU'en p\u00e5 serveren, og derefter falder websiden allerede ved en til to anmodninger pr. sekund. Disse en til to anmodninger kan ikke adskilles fra legitim belastning i loggene. <br \/>\nDer er stadig mange forbindelser, som vi \u00e5bner p\u00e5 serverne. Tidligere havde Apache ofte dette problem, og nu har nginx faktisk ogs\u00e5 det, da det ofte konfigureres som standard. Antallet af forbindelser, som nginx kan holde \u00e5bne, er begr\u00e6nset, s\u00e5 n\u00e5r vi n\u00e5r dette antal forbindelser, accepterer nginx ikke nye forbindelser, og derfor fungerer hjemmesiden ikke. <br \/>\nVores testklynge har tilstr\u00e6kkelig CPU til at angribe SSL-handshake. Som praksis viser, kan botnets ogs\u00e5 nogle gange lide at g\u00f8re dette. P\u00e5 den ene side er det klart, at uden SSL kan man ikke klare sig, da det p\u00e5virker Google's resultater, rangering og sikkerhed. P\u00e5 den anden side har SSL desv\u00e6rre et problem med CPU. <\/p>\n<h3>L3&amp;4<\/h3>\n<p>\nN\u00e5r vi taler om angreb p\u00e5 niveauerne L3&amp;4, taler vi typisk om angreb p\u00e5 kanalniveau. S\u00e5dan belastning kan n\u00e6sten altid skelnes fra legitim, medmindre det er et SYN-flood angreb. Problemet med SYN-flood angreb for beskyttelsesmidler skyldes den store m\u00e6ngde. Den maksimale st\u00f8rrelse for L3&amp;4 var 1,5-2 Tbit\/s. S\u00e5dan trafik er meget sv\u00e6r at h\u00e5ndtere selv for store virksomheder, herunder Oracle og Google. <br \/>\nSYN og SYN-ACK er pakker, der bruges ved etablering af forbindelsen. Derfor er det sv\u00e6rt at skelne SYN-flood fra legitim belastning: det er uklart, om det er SYN, der kom for at etablere forbindelsen, eller en del af floden.<\/p>\n<h3>UDP-flood<\/h3>\n<p>\nNormalt har angriberne ikke den samme kapacitet som os, derfor kan de bruge amplification for at udf\u00f8re angreb. Det vil sige, at angriberen scanner internettet og finder enten s\u00e5rbare eller forkert konfigurerede servere, som for eksempel svarer med tre SYN-ACK p\u00e5 en enkelt SYN-pakke. Ved at forfalske kildeadressen med adressen p\u00e5 den m\u00e5lserver kan man med \u00e9n pakke \u00f8ge styrken, s\u00e5 at sige, tre gange og omdirigere trafikken til offeret.<\/p>\n<p><img decoding=\"async\" alt=\"DDoS til hj\u00e6lp: hvordan vi udf\u00f8rer stress- og belastningstest\" src=\"\/wp-content\/uploads\/2019\/04\/33c5f42dc437a0bd2a4676a63d753fa6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nProblemet med amplification er deres vanskelige opdagelse. Et af de mest kendte tilf\u00e6lde er det s\u00e5rbare memcached. Desuden er der nu mange IoT-enheder, IP-kameraer, der ogs\u00e5 prim\u00e6rt er konfigureret som standard, og som ogs\u00e5 er forkert konfigureret som standard, hvilket er grunden til, at angriberne oftest gennem s\u00e5danne enheder udf\u00f8rer angreb. <\/p>\n<p><img decoding=\"async\" alt=\"DDoS til hj\u00e6lp: hvordan vi udf\u00f8rer stress- og belastningstest\" src=\"\/wp-content\/uploads\/2019\/04\/c7e5d01f94db9c5426d50bf21ed85822.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>SYN-flood er ikke enkelt<\/h3>\n<p>\nSYN-flood er sandsynligvis den mest interessante type angreb set fra en udviklers synspunkt. Problemet er, at systemadministratorer ofte bruger IP-blokering til beskyttelse. Desv\u00e6rre er det ikke kun administratorer, der f\u00f8lger skripter, der lider under IP-blokering, men ogs\u00e5 nogle sikkerhedssystemer, som koster mange penge. <br \/>\nDenne metode kan ende i katastrofe, for hvis angriberne \u00e6ndrer <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/da\/lir\/ipv4\/\"   title=\"IP-adresser\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"623\">IP-adresser<\/a>, vil virksomheden blokere sit eget subnet. N\u00e5r firewall'en blokerer sit eget cluster, vil eksterne interaktioner bryde sammen, og ressourcen vil g\u00e5 i stykker. <br \/>\nDet er desuden ikke sv\u00e6rt at blokere sit eget netv\u00e6rk. Hvis kunden har et Wi-Fi-netv\u00e6rk p\u00e5 kontoret, eller hvis ressourcernes funktionalitet m\u00e5les med diverse overv\u00e5gningsv\u00e6rkt\u00f8jer, tager vi IP-adressen fra disse overv\u00e5gningssystemer eller det kontor-Wi-Fi, og bruger den som kilde. Resultatet er, at ressourcen ser ud til at v\u00e6re tilg\u00e6ngelig, men de m\u00e5lrettede IP-adresser er blokeret. P\u00e5 denne m\u00e5de kan Wi-Fi-netv\u00e6rket ved HighLoad-konferencen, hvor virksomhedens nye produkt pr\u00e6senteres, blive blokeret\u2014og dette medf\u00f8rer visse forretnings- og \u00f8konomiske omkostninger. <br \/>\nUnder testningen kan vi ikke bruge amplification via memcached fra eksterne ressourcer, fordi der er aftaler om, at trafik kun m\u00e5 ledes til tilladte IP-adresser. Derfor bruger vi amplification via SYN og SYN-ACK, n\u00e5r sendingen af \u00e9n SYN resulterer i to-tre SYN-ACK svar, hvilket dermed multiplicerer angrebet med to-tre gange. <\/p>\n<h3>V\u00e6rkt\u00f8jer<\/h3>\n<p>\nEt af de vigtigste v\u00e6rkt\u00f8jer, vi bruger til belastning p\u00e5 L7-niveau, er Yandex-tank. Is\u00e6r bruges en phantom som kanon, plus der er nogle scripts til at generere patroner og til at analysere resultaterne. <br \/>\nTil analyse af netv\u00e6rkstrafik bruges Tcpdump, til serveranalyse \u2014 Nmap. Til at skabe belastning p\u00e5 L3&amp;4-niveau bruges OpenSSL og lidt egen magi med DPDK-biblioteket. DPDK er et bibliotek fra Intel, der muligg\u00f8r direktetilgang til netv\u00e6rksinterfacet uden om Linux-stakken, hvilket \u00f8ger effektiviteten. Selvf\u00f8lgelig bruger vi DPDK ikke kun p\u00e5 L3&amp;4-niveau, men ogs\u00e5 p\u00e5 L7-niveau, da det tillader os at skabe en meget h\u00f8j belastning, op til flere millioner foresp\u00f8rgsler per sekund fra \u00e9n maskine. <br \/>\nVi bruger ogs\u00e5 specifikke trafikgeneratorer og s\u00e6rlige v\u00e6rkt\u00f8jer, som vi skriver til specifikke tests. Hvis vi husker s\u00e5rbarheden under SSH, s\u00e5 kan den n\u00e6vnte sammens\u00e6tning ikke udnyttes. Hvis vi angriber mailprotokollen, bruger vi mailv\u00e6rkt\u00f8jer eller skriver blot scripts til dem.<\/p>\n<blockquote>\n<h3>Konklusioner<\/h3>\n<p>\nSom konklusion vil jeg gerne sige:<\/p>\n<ul>\n<li>Ud over klassisk belastningstestning er det vigtigt ogs\u00e5 at udf\u00f8re stresstestning. Vi har et reelt eksempel, hvor en underleverand\u00f8r fra en partner kun udf\u00f8rte belastningstest. Det viste, at ressourcen kan h\u00e5ndtere den normale belastning. Men da der opstod en unormal belastning, begyndte bes\u00f8gende at bruge ressourcen p\u00e5 en lidt anden m\u00e5de, og til sidst faldt underleverand\u00f8ren. Derfor er det v\u00e6rd at lede efter s\u00e5rbarheder, selvom du allerede er beskyttet mod DDoS-angreb.<\/li>\n<li>Det er n\u00f8dvendigt at isolere visse dele af systemet fra andre. Hvis du har s\u00f8gefunktionalitet, skal den placeres p\u00e5 separate maskiner, dvs. ikke engang i Docker. Fordi hvis s\u00f8gningen eller godkendelsen fejler, vil i det mindste noget forts\u00e6tte med at fungere. I tilf\u00e6lde af en webshop vil brugerne forts\u00e6tte med at finde varer i kataloget, komme fra aggregatoren, k\u00f8be hvis de allerede er godkendt, eller godkende via OAuth2.<\/li>\n<li>Man skal ikke undervurdere alle mulige cloud-tjenester. <\/li>\n<li>Brug CDN ikke kun til at optimere netv\u00e6rksforsinkelser, men ogs\u00e5 som et middel til beskyttelse mod angreb, der udt\u00f8mmer b\u00e5ndbredde og bare floder mod statisk indhold.<\/li>\n<li>Det er n\u00f8dvendigt at anvende specialiserede beskyttelsestjenester. Du kan ikke selv beskytte dig mod L3&amp;4 angreb p\u00e5 kanalniveau, fordi du sandsynligvis ikke har en tilstr\u00e6kkelig kanal. L7-angreb vil du ogs\u00e5 have sv\u00e6rt ved at afv\u00e6rge, da de kan v\u00e6re meget store. Desuden er det at finde sm\u00e5 angreb stadig specialiserede tjenesters, specialiserede algoritmers prerogativ. <\/li>\n<li>Opdater regelm\u00e6ssigt. Dette g\u00e6lder ikke kun kernen, men ogs\u00e5 SSH daemon, is\u00e6r hvis de er \u00e5bne mod omverdenen. Generelt skal alt opdateres, for du vil n\u00e6ppe kunne f\u00f8lge med de forskellige s\u00e5rbarheder selv.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Kilde: <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.3 - 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\/da\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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 til hj\u00e6lp: hvordan vi udf\u00f8rer stresstest og belastningstest | ProHoster","description":"Virksomheden Variti udvikler.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/ddos-v-pomoshh-kak-my-provodim-stress-i-nagruzochnye-testy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/31924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=31924"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/31924\/revisions"}],"predecessor-version":[{"id":157814,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/31924\/revisions\/157814"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/23782"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=31924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=31924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=31924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}