ДДоС атака на сайт. Защита от DDoS

Thank you for reading this post, don't forget to subscribe!

DDoS рас­шиф­ро­вы­ва­ет­ся как Distributed Denial of Service — ата­ка на инфор­ма­ци­он­ную систе­му с целью дове­сти ее до тако­го состо­я­ния, когда она не смо­жет обслу­жи­вать запро­сы кли­ен­тов, для кото­рых она рабо­та­ет. Ддос ата­ка может про­во­дить­ся как на отдель­ный сайт, так и на сер­вер или сеть, обслу­жи­ва­ю­щую мас­штаб­ную инфор­ма­ци­он­ную систе­му (напри­мер, ЦОД).

В чем же сущ­ность ddos ата­ки? По сво­ей сути это рас­пре­де­лен­ная DoS (Denial of Service) ата­ка. Отли­чие DoS от DDoS как раз в том, что DoS это про­сто оди­ноч­ная ата­ка, а DDoS это мас­штаб­ная ата­ка, состо­я­щая из мно­же­ства дос атак, выпол­ня­е­мых из раз­ных мест.

Виды ддос атак

Для про­ве­де­ния ддос атак чаще все­го исполь­зу­ют бот­нет. От раз­ме­ра бот­не­та зави­сит мощ­ность ата­ки. Из опре­де­ле­ния понят­но, что ddos — это когда мно­го запро­сов направ­ля­ют на какую-нибудь цель. А вот цели и типы запро­сов могут быть прин­ци­пи­аль­но раз­ные. Рас­смот­рю основ­ные вари­ан­ты ddos атак, кото­рые встре­ча­ют­ся в совре­мен­ном интер­не­те. Их мож­но раз­де­лить на 2 основ­ных типа:

  1. Ата­ка на уровне L7, то есть на седь­мом уровне моде­ли OSI. Нагруз­ка на при­ло­же­ние. Обыч­но это HTTP Flood, но не обза­тель­но. Ата­ка может быть и на откры­тую в мир MySQL или дру­гую базу, поч­то­вый сер­вер или даже SSH. Дан­ная ата­ка направ­ле­на на то, что­бы как мож­но мень­шим тра­фи­ком напря­гать наи­бо­лее тяже­лое и уяз­ви­мое место сер­ви­са. Обыч­но вре­до­нос­ные запро­сы мас­ки­ру­ют­ся под леги­тим­ные, что ослож­ня­ет отражение.
  2. Уро­вень L3 L4, то есть сете­вой и транс­порт­ный уров­ни моде­ли OSI. Чаще все­го это SYN или UDP flood. С помо­щью ддос атак это­го типа ста­ра­ют­ся загру­зить все кана­лы свя­зи, что­бы таким обра­зом поме­шать рабо­те сер­ви­са. Как пра­ви­ло, вре­до­нос­ный тра­фик лег­ко отли­чим от леги­тим­но­го, но его так мно­го, что филь­тра­ция про­сто не справ­ля­ет­ся. Все вхо­дя­щие кана­лы заби­ва­ют­ся флудом.

Рас­смот­рим подроб­нее кон­крет­ные цели для опи­сан­ных выше атак. Нач­нем с L7 атак. В каче­стве цели могут исполь­зо­вать­ся сле­ду­ю­щие объекты:

  • Какая-то тяже­лая стра­ни­ца на сай­те. Ата­ку­ю­щий про­стым про­смот­ром сай­та с помо­щью DevTools опре­де­ля­ет наи­бо­лее тяже­лые стра­ни­цы. Чаще все­го это поиск, боль­шие ката­ло­ги това­ров или запол­ня­е­мые фор­мы. Опре­де­лив узкое место, туда направ­ля­ет­ся шквал запро­сов, что­бы поло­жить сайт. Для эффек­тив­но­сти, мож­но нагру­жать сра­зу все, что пока­за­лось тяже­лым. С таким под­хо­дом мож­но и деся­тью запро­са­ми в секун­ду уро­нить непод­го­тов­лен­ный сайт.
  • Загруз­ка фай­лов с сай­та. Если вы раз­ме­ща­е­те более ли менее круп­ные фай­лы непо­сред­ствен­но на веб сер­ве­ре, то через них его будет очень лег­ко поло­жить, если не настро­ить огра­ни­че­ния на ска­чи­ва­ние. Обыч­ны­ми парал­лель­ны­ми загруз­ка­ми мож­но так нагру­зить сер­вер, что сайт пере­ста­нет отвечать.
  • Ата­ка на пуб­лич­ный API. Сей­час это очень попу­ляр­ный инстру­мент из-за его про­сто­ты и лег­ко­сти исполь­зо­ва­ния. Защи­щать его слож­но, поэто­му он часто может быть целью ddos атак.
  • Любые дру­гие при­ло­же­ния, кото­рые доступ­ны из инетр­не­та. Часто это поч­то­вые про­грам­мы, ssh сер­вер, сер­ве­ры баз дан­ных. Все эти служ­бы мож­но нагру­зить, если они смот­рят напря­мую в интернет.

С уров­ня L3, L4 обыч­но дела­ют сле­ду­ю­щие ддос атаки:

  • UDP-flood. Это вооб­ще клас­си­ка. С подоб­ны­ми ата­ка­ми стал­ки­ва­лись практ­че­ски все, кто дер­жит откры­ты­ми dns и ntp сер­ви­сы. В них посто­ян­но нахо­дят уяз­ви­мо­сти, поз­во­ля­ю­щие исполь­зо­вать эти служ­бы для ddos атак на сер­ве­ра. Зло­умыш­лен­ни­ки ска­ни­ру­ют интер­нет, нахо­дят непра­виль­но настро­ен­ные или уяз­ви­мые сер­ве­ра, отправ­ля­ют туда запро­сы, под­де­лы­вая адрес источ­ни­ка. В ответ эти сер­ве­ры шлют несколь­ко запро­сов по под­дель­ным адре­сам. Таким спо­со­бом зло­умыш­лен­ни­ки в несколь­ко раз уси­ли­ва­ют свои атаки.
  • SYN-flood. Тоже ста­рый вид атак типа отказ от обслу­жи­ва­ния. Зло­умыш­лен­ник отправ­ля­ет боль­шое коли­че­ство SYN запро­сов на уста­нов­ку соеди­не­ния. В общем слу­чае, с помо­щью syn запро­сов заби­ва­ют всю оче­редь на под­клю­че­ния. В ито­ге леги­тим­ные тра­фик пере­ста­ет ходить, сер­вис не отве­ча­ет клиентам.

На осно­ве опи­са­ния основ­ных типов ddos атак рас­смот­рим про­стые и оче­вид­ные спо­со­бы противодействия.

Защита от ddos атак с помощью платных сервисов

Для про­ве­де­ния обыч­ной DoS ата­ки могут исполь­зо­вать­ся какие-то про­грам­мы или скрип­ты. Пртив таких атак не очень слож­но защи­тить­ся. При­ме­ры таких про­грамм я при­ве­ду отдель­но. Если же идет мас­штаб­ная ддос ата­ка, то тут уже совсем дру­гое дело.

Защи­та сай­та от ddos атак может быть двух типов:

  1. Про­фес­си­о­наль­ная защи­та с помо­щью плат­ных сер­ви­сов и пере­на­прав­ле­ния тра­фи­ка на них.
  2. Защи­та сер­ве­ра от ддос сво­и­ми силами.

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

Скрытие и защита реального ip адреса

Как же защи­тить свой сайт от ddos ата­ки? Пер­вое и самое глав­ное пра­ви­ло, если вам необ­хо­ди­ма каче­ствен­ная и про­фес­си­о­наль­ная защи­та от DDoS — не рас­кры­вай­те свои пря­мые ip адре­са. Если вас ата­ку­ют, а вам надо как мож­но быст­рее защи­тить­ся — сра­зу же выби­рай­те сер­вис по защи­те от ддос, настра­и­вай­те прок­си­ро­ва­ние тра­фи­ка через него, меняй­те свои пря­мые IP адре­са и ни в коем слу­чае не све­ти­те их нигде. Ина­че ника­кой плат­ный сер­вис не помо­жет. Вам будут напря­мую устра­и­вать ddos ата­ку по ip, минуя защиту.

Про­стое ска­ни­ро­ва­ние пор­тов по ста­ро­му ip поз­во­лит опре­де­лить все доступ­ные служ­бы на сер­ве­ре и про­дол­жить ата­ку на сер­вер напря­мую по адре­су, минуя защи­ту. Вам нуж­но раз­ре­шить под­клю­че­ния к сво­е­му сер­ве­ру толь­ко с адре­сов служ­бы защи­ты. Не забудь­те закрыть и ssh служ­бу фаер­во­лом. Неза­щи­щен­ный сер­вер мож­но без про­блем зава­лить через ssh обыч­ным syn флу­дом и fail2ban не спа­сет. Там такой лог будет, что fail2ban сам поло­жит сервер.

Реаль­ный ip адрес мож­но опре­де­лить через под­до­ме­ны, кото­рые вы забу­де­те закрыть защи­той, через заго­лов­ки писем email, если поч­та нахо­дит­ся на том же сер­ве­ре, где сайт, через http заго­лов­ки, если вы добав­ля­ли в них инфор­ма­цию об ip. Мест, где мож­но спа­лить свой реаль­ный ip может быть мно­го. Вам нуж­но потру­дить­ся и закрыть все эти места. Пока это­го не сде­ла­е­те, про­фес­си­о­наль­ная защи­та может быть неэффективной.

Так­же в интер­не­те есть сер­ви­сы, кото­рые по име­ни доме­на поз­во­ля­ют опре­де­лить все их внеш­ние ip адре­са, кото­рые ранее были засве­че­ны. Если вы какое-то вре­мя были доступ­ны в интер­не­те под сво­им реаль­ным ip адре­сом, он прак­ти­че­ски со 100% веро­ят­но­стью уже засве­чен и будет лег­ко определен.

Какой сер­вис защи­ты от ддос атак выби­рать, я не знаю. Конеч­но, начать про­ще все­го с cloudflare, так как у них есть бес­плат­ный тариф. Но там мно­го огра­ни­че­ний, плюс надо немно­го раз­би­рать­ся в том, как рабо­та­ет этот сер­вис. В общем, бес­плат­но, без долж­но­го опы­та защи­ты от ddos вы вряд ли что-то сде­ла­е­те. Выби­рай­те кого-то еще. В каче­стве при­ме­ра я уже при­вел StormWall выше. Началь­ный тариф там подъ­ем­ный, мож­но начать с него.

Настройка firewall

Как я уже ска­зал выше, обя­за­тель­но закрой­те фаер­во­лом все, что толь­ко мож­но. Зло­умыш­лен­ни­ки не долж­ны ниче­го видеть на вашем реаль­ном сер­ве­ре. Про­сто пере­не­сти, к при­ме­ру, ssh на какой-то дру­гой порт, отлич­ный от 22 тут не подой­дет. Закры­вай­те все и откры­вай­те доступ толь­ко со сво­их дове­рен­ных адре­сов. Web тра­фик раз­ре­шай­те толь­ко с сер­ве­ров защи­ты. Их адре­са вам предо­ста­вит поддержка.

Подроб­нее о настрой­ке iptables, если исполь­зу­е­те этот фаер­вол, може­те про­чи­таь в моем мате­ри­а­ле по теме.

Аренда хостинга с защитой от ddos

Жела­тель­ным, но не обя­за­тель­ным шагом по защи­те сер­ве­ра от ddos ата­ки — уве­ли­че­ние его про­из­во­ди­тель­но­сти, либо пере­езд на спе­ци­аль­ные вир­ту­аль­ные сер­ве­ры, кото­рые изна­чаль­но под­дер­жи­ва­ют защи­ту от ддос. Это не обя­за­тель­но помо­жет, но если есть воз­мож­ность, то нарас­ти­те мощ­но­сти или пере­едь­те в дру­гое место. Это поз­во­лит вам про­жить немно­го доль­ше и рас­ши­рит зону для маневра.

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

Настройка кэширования

Кеши­ро­ва­ни­ем сто­ит зани­мать­ся сра­зу, а не тогда, когда вас уже ата­ку­ют. Тем не менее, если у вас не опти­ми­зи­ро­ван сайт или сер­вис, защи­тить его будет очень слож­но. Как я уже напи­сал выше, защи­та может про­пус­кать часть тра­фи­ка, кото­рый будет очень похож на леги­тим­ный. И это­го тра­фи­ка может хва­тить, что­бы загру­зить до отка­за сервер.

Вопрос кэши­ро­ва­ния доста­точ­но слож­ный и схо­ду труд­но будет пред­ло­жить эффек­тив­ные реше­ния. Тем не менее, если для вас важ­но хоть что-то отве­чать поль­зо­ва­те­лям, а не пока­зы­вать ошиб­ку веб сер­ве­ра, то зак­э­ши­руй­те в ста­ти­ку то, что долж­но давать­ся дина­ми­че­ски. Пусть во вре­мя ата­ки хотя бы сохра­нит­ся види­мость того, что сайт рабо­та­ет. Это все рав­но луч­ше, чем пол­ная оста­нов­ка работы.

Ино­гда ддос ата­ка может быть вызва­на вполне закон­ны­ми спо­со­ба­ми. К при­ме­ру, ссыл­ку на ваш сайт опуб­ли­ко­ва­ли где-то в очень попу­ляр­ном месте. И к вам пошел шквал насто­я­щих поль­зо­ва­те­лей. Они все реаль­ные, но по сути вы полу­ча­е­те ддос ата­ку на свой сайт, кото­рая может при­ве­сти к его отка­зу и вы не полу­чи­те при­быль, к при­ме­ру, с пока­за рекла­мы в эти моменты.

В таком слу­чае, луч­ше будет быст­ро зак­э­ши­ро­вать посе­ща­е­мые стра­ни­цы и отда­вать ста­ти­ку, несмот­ря на то, что не будут рабо­тать ком­мен­та­рии, какая-то лен­та и т.д. Глав­ное, что поль­зо­ва­те­ли смо­гут про­чи­тать кон­тент, посмот­реть рекла­му, а вы полу­чить при­быль. Когда нагруз­ка спа­дет, смо­же­те про­ана­ли­зи­ро­вать ситу­а­цию и выра­бо­тать какое-то рабо­чее реше­ние на будущее.

Вынести smtp на отдельный сервер

Не исполь­зуй­те web сер­вер в каче­стве поч­то­во­го сервреа. По воз­мож­но­сти, выно­си­те функ­ции отправ­ки email сооб­ще­ний куда-то на сто­ро­ну. Это может быть как спе­ци­аль­ный поч­то­вый сер­вис, так и ваш соб­ствен­ный, но настро­ен­ный отдель­но. Это полез­ная прак­ти­ка не толь­ко во вре­мя ddos атак, но и в общем случае.

Мало того, что через поч­то­вый сер­вер мож­но лег­ко узнать ваши реаль­ные ip адре­са, так это допол­ни­тель­ные точ­ки для поис­ка уяз­ви­мо­стей и отка­за. Луч­ше пере­стра­хо­вать­ся и мини­ми­зи­ро­вать риски.

Я рас­ска­зал, как может быть настро­е­на защи­та от ddos атак с помо­щью плат­ных сер­ви­сов. В каче­стве при­ме­ра при­вел ком­па­нию StormWall. Она доста­точ­но извест­на, цены доступ­ны, рус­ская под­держ­ка. Они высту­па­ют на раз­лич­ных меро­при­я­ти­ях и делят­ся зна­ни­я­ми. Вот при­мер отлич­но­го выступ­ле­ния, кото­рое я сам в свое вре­мя с удо­воль­стви­ем посмот­рел и взял их на примету.

Защита сайта от ддос своими силами

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

iptables
fail2ban
nginx limit_req
nginx $http_referer

Если ата­ка будет рас­пре­де­лен­ная и мас­штаб­ная, то сво­и­ми сила­ми вы ниче­го не смо­же­те сде­лать. Вас про­сто будет отклю­чать хостер, если вы исполь­зу­е­те обыч­ный VPS или выде­лен­ный сре­рвер, без защи­ты от ддо­са. Я сам с этим несколь­ко раз стал­ки­вал­ся. Что бы ты не делал, ниче­го не помо­га­ет. Как толь­ко тра­фи­ка при­хо­дит слиш­ком мно­го, вас отклю­ча­ют, даже если сер­вер еще вполне себе тянет нагруз­ку. Необ­хо­ди­мо обра­щать­ся в спе­ци­а­ли­зи­ро­ван­ные сер­ви­сы, пере­прав­лять весь тра­фик туда и прок­си­ро­вать его к себе уже очищенным.

Как сделать ддос атаку самому

У Яндек­са есть отлич­ный инстру­мент для нагру­зоч­но­го тести­ро­ва­ния — Яндекс.Танк.

Для того, что­бы сде­лать ddos ата­ку само­му на непод­го­тов­лен­ный сайт доста­точ­но из 3-5 раз­ных мест запу­стить Яндекс.Танк и ука­зать в каче­стве целей набор наи­бо­лее тяже­лых стра­ниц. Обыч­но­му дина­ми­че­ско­му сай­ту сра­зу ста­нет пло­хо. Когда вла­де­лец спо­хва­тит­ся и нач­нет раз­би­рать­ся, он доста­точ­но быст­ро заба­нит ваши ip адре­са сам, либо с помо­щью хосте­ра и на этом ваша ддос ата­ка закончится.

Вам при­дет­ся искать новые ip адре­са для про­ве­де­ния оче­ред­ной ддос ата­ки, что весь­ма хло­пот­но, а вот бло­ки­ро­вать их будет лег­ко. Даль­ше уже нуж­но вклю­чать голо­ву и думать, как опе­ра­тив­но и лег­ко менять ip адре­са. В голо­ву при­хо­дят гото­вые спис­ки с прок­си, скрип­ты, curl, python и т.д. Не буду даль­ше раз­ви­вать эту мысль. В общем и целом, само­му научить­ся ддо­сить на началь­ном уровне не так слож­но. Доста­точ­но базо­вых зна­ний linux и скриптинга.

Сра­зу ска­жу, что про­фес­си­о­наль­ные служ­бы по защи­те от ддос, напо­до­бии StormWall или CloudFlare, такие ваши ата­ки отме­тут, даже не заме­тив. Это может быть инте­рес­но толь­ко в каче­стве само­раз­ви­тия. Все совре­мен­ные и эффек­тив­ные ddos ата­ки дела­ют с помо­щью бот­нет сетей.

Программы для ddos атак

Я решил сде­лать раз­дел с опи­са­ни­ем про­грамм для ддос вот с какой целью. Если вам это инте­рес­но, то навер­ня­ка вы буде­те искать в интер­не­те подоб­ные про­грам­мы, как это делал я в свое вре­мя. Сра­зу пре­ду­пре­ждаю, что сами эти про­грам­мы и сай­ты, кото­рые их рас­про­стра­ня­ют, наби­ты виру­са­ми и про­чи­ми вре­до­но­са­ми. Будь­те очень вни­ма­тель­ны и осто­рож­ны при поис­ке программ.

Подоб­ные про­грам­мы реко­мен­ду­ет­ся исполь­зо­вать, что­бы про­ве­рить, как ваш сайт будет рабо­тать под их натис­ком. Если вам будут орга­ни­зо­вы­вать ddos, то воз­мож­но нач­нут имен­но с таких про­стых средств. Так что име­ет смысл после настрой­ки защи­ты посмот­реть, а как она реаль­но работает.

Ddos про­грам­мы делят­ся на 3 типа:

  1. Про­грам­мы для про­ве­де­ния syn и udp флуда.
  2. Про­грамм­ные ком­плек­сы для созда­ния сво­е­го ботнета.
  3. Stresser сер­ви­сы.

Программы для проведения syn и udp флуда

Из пер­вых наи­бо­лее популярны:

  • Server Flooder. Про­стая про­грам­ма, кото­рая может дол­бить запро­са­ми кон­крет­ный ip адрес и порт. Защи­та от такой про­грам­мы очень про­стая — баним ip адрес при боль­шом коли­че­стве запро­сов от него. Где ска­чать нор­маль­ный Server Flooder не знаю. В боль­шин­стве мест вме­сто него в архи­вах будут виру­сы, так что аккуратнее.
  • Loic. Про­грам­ма ста­рая. Уме­ет спа­мить http запро­са­ми, а так же флу­дить tcp и udp паке­та­ми. Ска­чать loic мож­но на sourceforge.
  • MummyDDOS. Такой же tcp флу­дер, как и пер­вые два.

Программные комплексы для создания своего ботнета

В пуб­лич­ный доступ попа­да­ют какие-то ста­рые подел­ки, кото­рые поте­ря­ли акту­аль­ность из-за того, что их детек­тят все совре­мен­ные анти­ви­ру­сы. Исполь­зо­вать их мож­но толь­ко в каких-то ака­де­ми­че­ских целях на под­кон­троль­ных вам маши­нах. Реаль­но собрать свой бот­нет для про­ве­де­ния мощ­ных ddos атак с помо­щью пуб­лич­ных бес­плат­ных про­грамм невозможно.

К таким бот­не­там отно­сят­ся Zemra BotnetDirt JumperSolar и т.д. Все это есть в сво­бод­ном досту­пе. Може­те для обще­го раз­ви­тия уста­но­вить и посмот­реть, как все это работает.

Stresser панели

Совре­мен­ные, удоб­ные, функ­ци­о­наль­ные инстру­мен­ты для про­ве­де­ния ddos атак. К сожа­ле­нию 🙁 Stresser — это некий сер­вис с web пане­лью, лич­ным каби­не­том. Вы опла­чи­ва­е­те услу­гу по досту­пу к ddos пане­ли и може­те исполь­зо­вать ее неко­то­рое опла­чен­ное вре­мя. Сто­и­мость для про­стых атак невы­со­кая. Бук­валь­но за 3-5 дол­ла­ров в день вы може­те два-три раза устра­и­вать сай­ту доста­точ­но мощ­ный ддос на 3-5 минут каж­дый день. Ино­гда это­го вре­ме­ни доста­точ­но, что­бы хостер снял сайт с обслуживания.

В бэкен­де у таких пане­лей обыч­ный бот­нет. Есть пане­ли с тесто­вым досту­пом для про­ве­де­ния мощ­ной ддос ата­ки пол­но­стью бес­плат­но. Да, она будет крат­ко­вре­мен­ная, но все рав­но может навре­дить ресур­су. Рабо­та­ют такие пане­ли вполне легаль­но, предо­став­ляя свой доступ яко­бы для тести­ро­ва­ния надеж­но­сти ресур­сов. А то, что их исполь­зу­ют для ddos атак, это уже их не касается.