ДДоС у помоћ: како спроводимо тестове стреса и оптерећења

ДДоС у помоћ: како спроводимо тестове стреса и оптерећења

Варити развија заштиту од ботова и ДДоС напада, а такође спроводи стрес и тестирање оптерећења. На ХигхЛоад++ 2018 конференцији разговарали смо о томе како да обезбедите ресурсе од разних врста напада. Укратко: изолујте делове система, користите услуге у облаку и ЦДН-ове и редовно ажурирајте. Али и даље нећете моћи да се носите са заштитом без специјализованих компанија :)

Пре читања текста, можете прочитати кратке сажетке на веб страници конференције.
А ако не волите да читате или само желите да погледате видео, снимак нашег извештаја је испод испод спојлера.

Видео снимак извештаја

Многе компаније већ знају како да ураде тестирање оптерећења, али не раде све стресно тестирање. Неки од наших купаца сматрају да је њихов сајт нерањив јер имају систем високог оптерећења и добро штити од напада. Показујемо да то није сасвим тачно.
Наравно, пре спровођења тестова добијамо дозволу од купца, потписану и оверену печатом, и уз нашу помоћ не може се извршити ДДоС напад ни на кога. Тестирање се врши у време које одабере купац, када је саобраћај на његовом ресурсу минималан, а проблеми са приступом неће утицати на клијенте. Поред тога, пошто током процеса тестирања увек нешто може да пође по злу, имамо сталан контакт са купцем. Ово вам омогућава не само да пријавите постигнуте резултате, већ и да промените нешто током тестирања. По завршетку тестирања увек сачињавамо извештај у коме указујемо на уочене недостатке и дајемо препоруке за отклањање слабости сајта.

Како радимо

Када тестирамо, емулирамо ботнет. Пошто радимо са клијентима који нису лоцирани на нашим мрежама, како бисмо осигурали да се тест не заврши у првом минуту због ограничења или активирања заштите, снабдевамо оптерећење не са једне ИП адресе, већ из сопствене подмреже. Плус, да бисмо створили значајно оптерећење, имамо сопствени прилично моћан тест сервер.

Постулате

Превише не значи добро
Што мање оптерећење можемо довести до квара ресурса, то боље. Ако можете да учините да сајт престане да функционише на један захтев у секунди, или чак на један захтев у минути, то је сјајно. Јер, према закону подлости, корисници или нападачи ће случајно пасти у ову рањивост.

Делимични неуспех је бољи од потпуног неуспеха
Увек саветујемо да системи буду хетерогени. Штавише, вреди их раздвојити на физичком нивоу, а не само контејнеризацијом. У случају физичког раздвајања, чак и ако нешто поквари на сајту, постоји велика вероватноћа да неће у потпуности престати да ради, а корисници ће и даље имати приступ бар делу функционалности.

Добра архитектура је основа одрживости
Толеранција грешака ресурса и његова способност да издржи нападе и оптерећења треба да буду постављени у фази пројектовања, у ствари, у фази цртања првих дијаграма тока у бележници. Јер ако се увуку фаталне грешке, могуће их је исправити у будућности, али је то веома тешко.

Не само да би код требао бити добар, већ и конфигурација
Многи људи мисле да је добар развојни тим гаранција услуге отпорне на грешке. Добар развојни тим је заиста неопходан, али мора постојати и добро пословање, добар ДевОпс. Односно, потребни су нам стручњаци који ће исправно конфигурисати Линук и мрежу, правилно написати конфигурације у нгинк-у, поставити ограничења итд. У супротном, ресурс ће добро функционисати само у тестирању, а у неком тренутку ће се све покварити у производњи.

Разлике између тестирања оптерећења и стреса
Тестирање оптерећења вам омогућава да идентификујете границе функционисања система. Стрес тестирање има за циљ проналажење слабости у систему и користи се да се овај систем разбије и види како ће се понашати у процесу квара појединих делова. У овом случају, природа оптерећења обично остаје непозната купцу пре почетка тестирања на стрес.

Карактеристичне карактеристике Л7 напада

Обично делимо врсте оптерећења на оптерећења на нивоима Л7 и Л3&4. Л7 је оптерећење на нивоу апликације, најчешће само ХТТП, али мислимо на свако оптерећење на нивоу ТЦП протокола.
Л7 напади имају одређене карактеристичне карактеристике. Прво, они долазе директно у апликацију, односно мало је вероватно да ће се одразити путем мреже. Такви напади користе логику и због тога троше ЦПУ, меморију, диск, базу података и друге ресурсе веома ефикасно и са мало саобраћаја.

ХТТП Флоод

У случају било каквог напада, оптерећење је лакше створити него носити, а у случају Л7 то је такође тачно. Није увек лако разликовати нападни саобраћај од легитимног саобраћаја, а најчешће се то може урадити по учесталости, али ако је све исправно испланирано, онда је из логова немогуће разумети где је напад, а где су легитимни захтеви.
Као први пример, размотрите ХТТП Флоод напад. Графикон показује да су такви напади обично веома моћни у примеру испод, вршни број захтева је премашио 600 хиљада у минути;

ДДоС у помоћ: како спроводимо тестове стреса и оптерећења

ХТТП Флоод је најлакши начин за креирање оптерећења. Обично је потребна нека врста алата за тестирање оптерећења, као што је АпацхеБенцх, и поставља захтев и циљ. Са тако једноставним приступом, постоји велика вероватноћа да налетите на кеширање сервера, али га је лако заобићи. На пример, додавање насумичних стрингова захтеву, што ће приморати сервер да стално приказује нову страницу.
Такође, не заборавите на корисничког агента у процесу креирања оптерећења. Многи кориснички агенти популарних алата за тестирање филтрирају системски администратори и у овом случају оптерећење једноставно неће стићи до позадине. Можете значајно побољшати резултат уметањем мање или више важећег заглавља из претраживача у захтев.
Колико год да су ХТТП Флоод напади једноставни, они такође имају своје недостатке. Прво, потребне су велике количине енергије за стварање оптерећења. Друго, такве нападе је врло лако открити, посебно ако долазе са једне адресе. Као резултат, захтеви одмах почињу да се филтрирају од стране администратора система или чак на нивоу провајдера.

Шта да претражим

Да бисте смањили број захтева у секунди без губитка ефикасности, потребно је да покажете мало маште и истражите сајт. Тако можете учитати не само канал или сервер, већ и појединачне делове апликације, на пример, базе података или системе датотека. Такође можете потражити места на сајту која врше велике прорачуне: калкулаторе, странице за избор производа итд. Коначно, често се дешава да сајт има неку врсту ПХП скрипте која генерише страницу од неколико стотина хиљада редова. Такав скрипт такође значајно оптерећује сервер и може постати мета напада.

Где гледати

Када скенирамо ресурс пре тестирања, прво погледамо, наравно, сам сајт. Тражимо све врсте поља за унос, тешке датотеке - уопште, све што може да створи проблеме за ресурс и успори његов рад. Банални развојни алати у Гоогле Цхроме-у и Фирефок-у помажу овде, приказујући време одговора странице.
Такође скенирамо поддомене. На пример, постоји одређена онлајн продавница, абц.цом, и она има поддомен админ.абц.цом. Највероватније је ово админ панел са ауторизацијом, али ако га оптеретите, то може створити проблеме за главни ресурс.
Сајт може имати поддомен апи.абц.цом. Највероватније, ово је ресурс за мобилне апликације. Апликацију можете пронаћи у Апп Сторе-у или Гоогле Плаи-у, инсталирати посебну приступну тачку, сецирати АПИ и регистровати пробне налоге. Проблем је у томе што људи често мисле да је све што је заштићено ауторизацијом имуно на нападе ускраћивања услуге. Наводно је ауторизација најбоља ЦАПТЦХА, али није. Лако је направити 10-20 пробних налога, али њиховим креирањем добијамо приступ сложеној и нескривеној функционалности.
Наравно, гледамо историју, роботс.ткт и ВебАрцхиве, ВиевДНС и тражимо старе верзије ресурса. Понекад се дешава да су програмери избацили, рецимо, маил2.иандек.нет, али стара верзија, маил.иандек.нет, остаје. Овај маил.иандек.нет више није подржан, развојни ресурси му нису додељени, али наставља да користи базу података. Сходно томе, користећи стару верзију, можете ефикасно користити ресурсе позадине и све што стоји иза изгледа. Наравно, то се не дешава увек, али се и даље често сусрећемо са овим.
Наравно, анализирамо све параметре захтева и структуру колачића. Можете, рецимо, да убаците неку вредност у ЈСОН низ унутар колачића, направите много угнежђења и учините да ресурс ради неразумно дуго.

Оптерећење претраге

Прво што вам падне на памет када истражујете неки сајт јесте учитавање базе података, пошто скоро сви имају претрагу, а за скоро све је, нажалост, слабо заштићена. Из неког разлога, програмери не обраћају довољно пажње на претрагу. Али овде постоји једна препорука – не треба да правите захтеве истог типа, јер можете наићи на кеширање, као што је случај са ХТТП флоод-ом.
Прављење насумичних упита бази података такође није увек ефикасно. Много је боље направити листу кључних речи које су релевантне за претрагу. Ако се вратимо на пример онлајн продавнице: рецимо да сајт продаје аутомобилске гуме и омогућава вам да подесите радијус гума, тип аутомобила и друге параметре. Сходно томе, комбинације релевантних речи ће приморати базу података да ради у много сложенијим условима.
Поред тога, вреди користити пагинацију: много је теже за претрагу да врати претпоследњу страницу резултата претраге него прву. То јест, уз помоћ пагинације можете мало диверзификовати оптерећење.
Пример испод приказује оптерећење претраге. Види се да је од прве секунде теста брзином од десет захтева у секунди сајт пао и није одговарао.

ДДоС у помоћ: како спроводимо тестове стреса и оптерећења

Ако нема претраге?

Ако нема претраге, то не значи да сајт не садржи друга рањива поља за унос. Ово поље може бити овлашћење. Данас програмери воле да праве сложене хешове да би заштитили базу података за пријаву од напада дугиних табела. Ово је добро, али такви хешови троше много ЦПУ ресурса. Велики ток лажних овлашћења доводи до квара процесора и као резултат тога сајт престаје да ради.
Присуство на сајту свих врста формулара за коментаре и повратне информације разлог је да се тамо шаљу веома велики текстови или једноставно направи огромна поплава. Понекад сајтови прихватају приложене датотеке, укључујући и у гзип формату. У овом случају, узимамо датотеку од 1ТБ, компресујемо је на неколико бајтова или килобајта користећи гзип и шаљемо је на сајт. Затим се откопчава и добија се веома занимљив ефекат.

Рест АПИ

Желео бих да обратим мало пажње на такве популарне услуге као што је Рест АПИ. Обезбеђивање Рест АПИ-ја је много теже од обичне веб странице. Чак и тривијалне методе заштите од грубе силе лозинке и других незаконитих активности не раде за Рест АПИ.
Рест АПИ је веома лако разбити јер директно приступа бази података. Истовремено, неуспјех такве услуге повлачи прилично озбиљне посљедице за пословање. Чињеница је да се Рест АПИ обично користи не само за главну веб локацију, већ и за мобилну апликацију и неке интерне пословне ресурсе. А ако све ово падне, онда је ефекат много јачи него у случају једноставног квара веб странице.

Учитавање тешког садржаја

Ако нам се понуди да тестирамо неку обичну једностраничну апликацију, одредишну страницу или веб локацију са визит картама која нема сложену функционалност, тражимо тежак садржај. На пример, велике слике које сервер шаље, бинарне датотеке, пдф документација - све ово покушавамо да преузмемо. Такви тестови добро учитавају систем датотека и зачепљују канале, па су стога ефикасни. То јест, чак и ако не спустите сервер, преузимајући велику датотеку малим брзинама, једноставно ћете зачепити канал циљног сервера и тада ће доћи до ускраћивања услуге.
Пример таквог теста показује да је при брзини од 30 РПС сајт престао да реагује или је произвео 500. грешку сервера.

ДДоС у помоћ: како спроводимо тестове стреса и оптерећења

Не заборавите на подешавање сервера. Често можете наћи да је неко купио виртуелну машину, инсталирао Апацхе тамо, конфигурисао све подразумевано, инсталирао ПХП апликацију, а испод можете видети резултат.

ДДоС у помоћ: како спроводимо тестове стреса и оптерећења

Овде је оптерећење отишло до корена и износило је само 10 РПС. Чекали смо 5 минута и сервер се срушио. Истина је да није у потпуности познато зашто је пао, али постоји претпоставка да је једноставно имао превише памћења и због тога је престао да се одазива.

Ваве басед

У последњих годину или две, таласни напади су постали прилично популарни. То је због чињенице да многе организације купују одређене делове хардвера за ДДоС заштиту, за које је потребно одређено време да се акумулирају статистички подаци да би почели да филтрирају напад. Односно, не филтрирају напад у првих 30-40 секунди, јер гомилају податке и уче. Сходно томе, у ових 30-40 секунди можете покренути толико на сајту да ће ресурс дуго лежати док се сви захтеви не рашчисти.
У случају напада испод, постојао је интервал од 10 минута, након чега је стигао нови, измењени део напада.

ДДоС у помоћ: како спроводимо тестове стреса и оптерећења

Односно, одбрана је научила, почела да филтрира, али је стигао нови, потпуно другачији део напада и одбрана је поново почела да учи. У ствари, филтрирање престаје да ради, заштита постаје неефикасна, а сајт је недоступан.
Нападе таласа карактеришу веома високе вредности на врхунцу, може достићи сто хиљада или милион захтева у секунди, у случају Л7. Ако говоримо о Л3&4, онда може бити стотине гигабита саобраћаја, или, сходно томе, стотине мппс, ако рачунате у пакетима.
Проблем са таквим нападима је синхронизација. Напади долазе са ботнета и захтевају висок степен синхронизације да би се створио веома велики једнократни скок. И ова координација не функционише увек: понекад је излаз нека врста параболичног врха, који изгледа прилично патетично.

Не само ХТТП

Поред ХТТП-а на Л7, волимо да користимо и друге протоколе. По правилу, обичан веб-сајт, посебно обичан хостинг, има протоколе поште и МиСКЛ вире. Протоколи за пошту су подложни мањем оптерећењу него базе података, али се такође могу учитати прилично ефикасно и завршити са преоптерећеним ЦПУ-ом на серверу.
Били смо прилично успешни користећи ССХ рањивост из 2016. Сада је ова рањивост исправљена за скоро све, али то не значи да се оптерећење не може предати ССХ-у. Моћи. Једноставно постоји огромно оптерећење ауторизацијама, ССХ поједе скоро цео ЦПУ на серверу, а онда се веб локација сруши од једног или два захтева у секунди. Сходно томе, ови један или два захтева заснована на евиденцији не могу се разликовати од легитимног оптерећења.
Многе везе које отварамо на серверима такође остају релевантне. Раније је Апацхе био крив за ово, сада је нгинк заправо крив за ово, пошто је често подразумевано конфигурисан. Број веза које нгинк може да држи отворенима је ограничен, тако да отварамо овај број веза, нгинк више не прихвата нову везу и као резултат тога сајт не ради.
Наш тестни кластер има довољно ЦПУ-а да нападне ССЛ руковање. У принципу, као што пракса показује, ботнети понекад воле и то да раде. С једне стране, јасно је да не можете без ССЛ-а, јер Гоогле резултати, рангирање, безбедност. С друге стране, ССЛ нажалост има проблем са процесором.

Л3&4

Када говоримо о нападу на нивоу Л3 и 4, обично говоримо о нападу на нивоу везе. Такво оптерећење се скоро увек разликује од легитимног, осим ако није СИН-флоод напад. Проблем са СИН-флоод нападима за безбедносне алате је њихов велики обим. Максимална вредност Л3&4 била је 1,5-2 Тбит/с. Овакав саобраћај је веома тешко обрадити чак и за велике компаније, укључујући Орацле и Гоогле.
СИН и СИН-АЦК су пакети који се користе приликом успостављања везе. Стога је СИН-флоод тешко разликовати од легитимног оптерећења: није јасно да ли је ово СИН који је дошао да успостави везу или је део поплаве.

УДП-поплава

Обично нападачи немају могућности које имамо, тако да се појачање може користити за организовање напада. То јест, нападач скенира Интернет и проналази или рањиве или погрешно конфигурисане сервере који, на пример, као одговор на један СИН пакет, одговарају са три СИН-АЦК-а. Претварањем изворне адресе са адресе циљног сервера могуће је повећати снагу за, рецимо, три пута са једним пакетом и преусмерити саобраћај на жртву.

ДДоС у помоћ: како спроводимо тестове стреса и оптерећења

Проблем са појачањима је што их је тешко открити. Недавни примери укључују сензационалан случај рањивог мемцацхед-а. Плус, сада има доста ИоТ уређаја, ИП камера, које су такође углавном подразумевано конфигурисане, а подразумевано су погрешно конфигурисане, због чега нападачи најчешће врше нападе преко таквих уређаја.

ДДоС у помоћ: како спроводимо тестове стреса и оптерећења

Тешка СИН-поплава

СИН-флоод је вероватно најзанимљивији тип напада са тачке гледишта програмера. Проблем је у томе што администратори система често користе ИП блокирање за заштиту. Штавише, блокирање ИП-а утиче не само на администраторе система који делују помоћу скрипти, већ и, нажалост, на неке сигурносне системе који се купују за много новца.
Овај метод може да се претвори у катастрофу, јер ако нападачи замене ИП адресе, компанија ће блокирати сопствену подмрежу. Када заштитни зид блокира сопствени кластер, излаз неће успети у спољним интеракцијама и ресурс неће успети.
Штавише, није тешко блокирати сопствену мрежу. Ако клијентова канцеларија има Ви-Фи мрежу, или ако се перформансе ресурса мере помоћу различитих система за праћење, онда узимамо ИП адресу овог система за надзор или Ви-Фи клијентове канцеларије и користимо је као извор. На крају се чини да је ресурс доступан, али су циљне ИП адресе блокиране. Дакле, Ви-Фи мрежа ХигхЛоад конференције, на којој се представља нови производ компаније, може бити блокирана, а то повлачи одређене пословне и економске трошкове.
Током тестирања, не можемо да користимо појачање кроз мемцацхед са било којим спољним ресурсима, јер постоје договори да се саобраћај шаље само на дозвољене ИП адресе. Сходно томе, користимо појачање преко СИН и СИН-АЦК, када систем на слање једног СИН-а одговори са два или три СИН-АЦК-а, а на излазу се напад множи два или три пута.

Алат

Један од главних алата које користимо за Л7 радно оптерећење је Иандек-танк. Конкретно, фантом се користи као пиштољ, плус постоји неколико скрипти за генерисање кертриџа и за анализу резултата.
Тцпдумп се користи за анализу мрежног саобраћаја, а Нмап се користи за анализу сервера. За креирање оптерећења на нивоу Л3&4, користи се ОпенССЛ и мало наше сопствене магије са ДПДК библиотеком. ДПДК је библиотека компаније Интел која вам омогућава да радите са мрежним интерфејсом заобилазећи Линук стек, чиме се повећава ефикасност. Наравно, користимо ДПДК не само на нивоу Л3&4, већ и на нивоу Л7, јер нам омогућава да креирамо веома висок проток оптерећења, у распону од неколико милиона захтева у секунди са једне машине.
Такође користимо одређене генераторе саобраћаја и специјалне алате које пишемо за специфичне тестове. Ако се подсетимо рањивости под ССХ, онда се горњи скуп не може искористити. Ако нападнемо протокол поште, узимамо услужне програме за пошту или једноставно пишемо скрипте на њима.

Налази

Као закључак желео бих да кажем:

  • Поред класичног тестирања оптерећења, потребно је спровести и стрес тестирање. Имамо прави пример где је подизвођач партнера вршио само тестирање оптерећења. Показало се да ресурс може издржати нормално оптерећење. Али онда се појавило ненормално оптерећење, посетиоци сајта су почели да користе ресурс мало другачије, и као резултат тога, подизвођач је легао. Стога је вредно тражити рањивости чак и ако сте већ заштићени од ДДоС напада.
  • Неопходно је изоловати неке делове система од других. Ако имате претрагу, потребно је да је преместите на одвојене машине, односно чак ни на Доцкер. Јер ако претрага или ауторизација не успе, бар ће нешто наставити да функционише. У случају онлајн продавнице, корисници ће наставити да проналазе производе у каталогу, иду са агрегатора, купују ако су већ овлашћени или ауторизују преко ОАутх2.
  • Немојте занемарити све врсте услуга у облаку.
  • Користите ЦДН не само да бисте оптимизовали кашњења на мрежи, већ и као средство заштите од напада на исцрпљивање канала и једноставно преливање у статички саобраћај.
  • Неопходно је користити специјализоване услуге заштите. Не можете се заштитити од Л3&4 напада на нивоу канала, јер највероватније једноставно немате довољан канал. Такође је мало вероватно да ћете се борити против Л7 напада, јер они могу бити веома велики. Плус, потрага за малим нападима је и даље прерогатив специјалних служби, специјалних алгоритама.
  • Ажурирајте редовно. Ово се не односи само на кернел, већ и на ССХ демон, посебно ако их имате отворене споља. У принципу, све треба ажурирати, јер је мало вероватно да ћете сами моћи да пратите одређене рањивости.

Извор: ввв.хабр.цом

Додај коментар