Со­обще­ния в СМИ о недос­тупнос­ти государс­твен­ного веб‑ресур­са, о круп­ных финан­совых потерях в резуль­тате вре­мен­ной нерабо­тос­пособ­ности веб‑при­ложе­ния ком­мерчес­кой орга­низа­ции, да и вооб­ще недос­тупность сай­та самого средс­тва мас­совой информа­ции наг­лядно под­твержда­ют тот факт, что DDoS-ата­ки по‑преж­нему оста­ются эффектив­ным средс­твом для нанесе­ния финан­сового и репута­цион­ного уда­ра. Более того, рас­пре­делен­ные ата­ки все чаще каса­ются инди­виду­аль­ных пред­при­нима­телей, бло­геров и прос­то обыч­ных поль­зовате­лей. Для любого из них «дедос» может озна­чать отток ауди­тории, регуляр­но чита­ющей его блог, или потерю кли­ентов, которые из‑за нерабо­тающе­го интернет‑магази­на купили товар у кон­курен­та.
 

Такой разный «отказ в обслуживании»

Сре­ди огромно­го количес­тва сце­нари­ев DDoS-атак «трен­дом» в пос­леднее вре­мя ста­новит­ся метод уси­ления ата­ки пос­редс­твом некор­рек­тно нас­тро­енных ресур­сов Сети. Нап­ример, зло­умыш­ленник может отпра­вить 100 байт (условно) спе­циаль­ным обра­зом сфор­мирован­ного зап­роса к DNS-резол­веру, и тот, в свою оче­редь, отпра­вит 1 Кб отве­та на ресурс жер­твы. Мож­но толь­ко пред­ста­вить, что будет, если зло­умыш­ленник отпра­вит подоб­ные зап­росы от сво­его неболь­шого бот­нета к огромно­му спис­ку DNS-резол­веров. Кста­ти, дан­ный бот­нет не обя­затель­но может сос­тоять из заражен­ных стан­ций — в него так­же могут вхо­дить инстан­сы какого‑нибудь пуб­лично­го обла­ка. Добавим сюда пуб­личные веб‑сер­висы наг­рузоч­ного тес­тирова­ния, с помощью которых мож­но реали­зовать ата­ку типа SaaS Amplification (о ней мы писали в статье «Любой стресс за ваши день­ги», выпуск #175), и получим доволь­но уве­сис­тую «кувал­ду» для веб‑при­ложе­ния.

DDoS = Облако + DNS Amplification + SaaS Amplification
DDoS = Обла­ко + DNS Amplification + SaaS Amplification
 

Точка отказа

За­дача вла­дель­ца любого веб‑про­екта, успешность которо­го пря­мо зависит от его аптай­ма, — опре­делить точ­ку отка­за веб‑при­ложе­ния. Зна­ние дан­ного зна­чения поз­волит подоб­рать соот­ветс­тву­ющие защит­ные решения и выделить для это­го нуж­ный бюд­жет. Для поис­ка точ­ки отка­за необ­ходимо пери­оди­чес­ки про­водить про­цеду­ру стрес­сового тес­тирова­ния. Или, дру­гими сло­вами, DDoS’ить себя.

Ус­ловно про­цеду­ры опре­деле­ния реак­ции информа­цион­ной сис­темы на ту или иную наг­рузку мож­но раз­делить на три вари­анта:

  • наг­рузоч­ное тес­тирова­ние (load-testing) — опре­деле­ние реак­ции сис­темы и ее работос­пособ­ности при некото­рой заранее задан­ной (пла­ниру­емой, рабочей) наг­рузке;
  • тес­тирова­ние отка­зоус­той­чивос­ти (stress-testing) — ана­лиз поведе­ния информа­цион­ной сис­темы при ано­маль­ной наг­рузке (нап­ример, при DDoS-ата­ках);
  • тес­тирова­ние про­изво­дитель­нос­ти (performance testing) — ком­плексный под­ход, сочета­ющий в себе два пре­дыду­щих метода тес­тирова­ния.

Дан­ная клас­сифика­ция весь­ма условна, поэто­му под тер­мином «стрес­совое тес­тирова­ние» будет понимать­ся про­цеду­ра про­вер­ки отка­зоус­той­чивос­ти информа­цион­ной сис­темы при DDoS-ата­ках.
Клю­чевая осо­бен­ность дан­ной про­цеду­ры, в отли­чие от типич­ной DDoS-ата­ки, — обя­затель­но дол­жна быть методи­ка про­веде­ния тес­тов. Кро­ме того, у стрес­сового тес­тирова­ния есть нес­коль­ко важ­ных нюан­сов:

  • тес­ты про­водят­ся на информа­цион­ной сис­теме, ком­понен­ты которой находят­ся в Сети и дос­тупны ее поль­зовате­лям;
  • сце­нарии про­веде­ния тес­тов вклю­чают в себя наг­рузку, которая ими­тиру­ет дей­ствия наруши­теля;
  • пла­ниро­вание и учет аспектов про­веде­ния про­цедур тес­тирова­ния выпол­няют­ся до эта­па реали­зации сце­нари­ев атак. Тес­ты про­водят­ся сери­ями, с пос­тепен­но нарас­тающей наг­рузкой (10, 25, 50, 75%) от пред­полага­емо­го пре­дель­ного уров­ня наг­рузки (обра­щений в секун­ду). В ходе тес­тирова­ния изме­ряет­ся вре­мя откли­ка тес­тиру­емых ресур­сов, поз­воля­ющее опре­делить, как работы вли­яют на информа­цион­ную сис­тему.
Процесс стрессового тестирования
Про­цесс стрес­сового тес­тирова­ния
 

Система стрессового тестирования

Средс­тво реали­зации методи­ки мы назовем сис­темой стрес­сового тес­тирова­ния и поп­робу­ем дать ей слег­ка «ака­деми­чес­кое» опре­деле­ние, что­бы не путать ее с бот­нетом.
Сис­тема стрес­сового тес­тирова­ния (ССТ) — прог­рам­мный ком­плекс, обес­печива­ющий про­вер­ку информа­цион­ной сис­темы на устой­чивость к ата­кам типов «отказ в обслу­жива­нии» и «рас­пре­делен­ный отказ в обслу­жива­нии» с целью выявить пре­дель­ную наг­рузку, которую спо­соб­на при­нять на себя дан­ная сис­тема от легитим­ных поль­зовате­лей, а так­же от потен­циаль­ных наруши­телей.
Наш прог­рам­мный ком­плекс дол­жен решать сле­дующие задачи:

  1. Ре­али­зация DDoS-сце­нари­ев. С целью ком­плексной оцен­ки отка­зоус­той­чивос­ти ИС в пол­ной мере дол­жны быть реали­зова­ны сце­нарии рас­пре­делен­ных атак для исчерпа­ния каналь­ных и вычис­литель­ных ресур­сов.
  2. Цен­тра­лизо­ван­ное управле­ние. По ана­логии с бот‑сетями: кли­енты получа­ют задание из еди­ного цен­тра, что очень удоб­но. Не нуж­но бес­поко­ить­ся о сво­евре­мен­ном получе­нии коман­ды кон­крет­ным кли­ентом. Фак­ты получе­ния, выпол­нения, успешно­го или неус­пешно­го завер­шения задачи лег­ко фик­сиру­ются, что поз­воля­ет вес­ти деталь­ную ста­тис­тику.
  3. Рас­пре­делен­ная архи­тек­тура. Рас­пре­делен­ная архи­тек­тура поз­волит фак­тичес­ки раз­делить фун­кци­ональ­ные роли сис­темы и соот­ветс­тву­ющим обра­зом орга­низо­вать уста­нов­ку и нас­трой­ку каж­дого ком­понен­та с уче­том осо­бен­ностей кон­крет­ной вычис­литель­ной сре­ды.
  4. Под­дер­жка модуль­нос­ти архи­тек­туры ПО. Воз­можность рас­ширения фун­кци­ональ­нос­ти ком­понен­тов, непос­редс­твен­но отве­чающих за реали­зацию сце­нари­ев атак, при помощи модулей поз­воля­ет сох­ранять акту­аль­ность базы сце­нари­ев про­веде­ния атак.
  5. На­личие механиз­мов монито­рин­га сос­тояния целевой информа­цион­ной сис­темы и пре­дот­вра­щения ее выхода за пре­делы пиковой наг­рузки. Для при­нятия соот­ветс­тву­ющих мер при оцен­ке текуще­го уров­ня наг­рузки и пос­тро­ения прог­нозов раз­вития ата­ки необ­ходимо получать акту­аль­ную информа­цию о сос­тоянии целевой ИС от инди­като­ра наг­рузки, ком­понент которо­го дол­жен быть частью СНТ.
  6. Фор­мирова­ние ста­тис­тичес­кой информа­ции в про­цес­се стрес­сового тес­тирова­ния. С целью оцен­ки фун­кци­они­рова­ния средств защиты целевой ИС на раз­личные типы сце­нари­ев стрес­сового тес­тирова­ния ССТ дол­жна обла­дать механиз­мами ведения ста­тис­тики в про­цес­се про­веде­ния тес­тов.

Те­перь перей­дем к ком­понен­там ССТ.

Ком­понент наг­рузки (Load Component) — кли­ент­ская часть сис­темы, основная фун­кция которой — генери­ровать наг­рузку в соот­ветс­твии с получен­ной задачей. Задачи пос­тупа­ют от адми­нис­тра­тив­ного цен­тра сети, а соот­ветс­твен­но, ком­понент наг­рузки дол­жен обла­дать средс­тва­ми перекон­фигури­рова­ния в реаль­ном вре­мени, то есть иметь воз­можность:

  • за­пус­тить задачу;
  • пе­редать свое текущее сос­тояние адми­нис­тра­тив­ному цен­тру;
  • прек­ратить выпол­нение задачи.

Ком­понент адми­нис­три­рова­ния/рас­пре­деле­ния (Distribution Component) — адми­нис­тра­тив­ная часть сети, выпол­няющая сле­дующие фун­кции:

  • по­луче­ние команд от опе­рато­ра;
  • при­ем дан­ных о текущем сос­тоянии ком­понен­тов заг­рузки;
  • фор­мирова­ние задачи на осно­ве дан­ных, пос­тупа­ющих от опе­рато­ра и ком­понен­тов наг­рузки;
  • пе­реда­ча заданий ком­понен­там наг­рузки;
  • де­монс­тра­ция опе­рато­ру резуль­татов выпол­нения заданий.

Ин­дикатор — ком­понент ССТ, который отве­чает за сбор и ана­лиз ста­тис­тичес­кой информа­ции о тес­тиру­емой информа­цион­ной сис­теме и выпол­няет сле­дующие дей­ствия:

  • фор­мирова­ние ста­тис­тичес­кой информа­ции в про­цес­се стрес­сового тес­тирова­ния;
  • при­веде­ние ста­тис­тичес­кой информа­ции в удо­бочи­таемый вид;
  • пе­реда­ча ста­тис­тичес­кой информа­ции опе­рато­ру;
  • оп­ределе­ние реак­ции целевой ИС на попыт­ки ее легитим­ного исполь­зования;
  • пе­реда­ча ком­понен­ту рас­пре­деле­ния зап­роса на оста­нов­ку текущей задачи, в слу­чае приб­лижения наг­рузки целевой ИС к пиковым показа­телям.

Сис­тема име­ет в осно­ве кли­ент‑сер­верную архи­тек­туру с так называ­емым «тол­стым» кли­ентом — то есть кли­ент­ская часть берет на себя все необ­ходимые дан­ные для рас­четов у сер­вера и затем обра­щает­ся к нему толь­ко с опре­делен­ным резуль­татом. Задача сер­вера: кор­рек­тно обра­ботать зап­росы кли­ентов и син­хро­низи­ровать име­ющиеся дан­ные меж­ду ними, при этом пра­виль­но демонс­три­ровать резуль­таты адми­нис­тра­тору сети.

Схема работы ССТ
Схе­ма работы ССТ

Сог­ласно перечис­ленным тре­бова­ниям и опи­сан­ной кон­цепции была раз­работа­на сис­тема стрес­сового тес­тирова­ния и успешно показа­ла себя в ходе тес­тирова­ния веб‑при­ложе­ния круп­ного спор­тивно­го мероп­риятия. К сожале­нию, мас­шта­бы колон­ки не поз­воля­ют рас­ска­зать о прак­тичес­кой час­ти дан­ного иссле­дова­ния, поэто­му мы под­готови­ли видео, на котором зафик­сирован про­цесс «поис­ка точ­ки отка­за». Видео, а так­же ком­мента­рии к нему ты най­дешь по ссыл­кам.

Процесс стрессового тестирования моего блога
Про­цесс стрес­сового тес­тирова­ния моего бло­га

Оставить мнение