Личный опыт Konstantin Spirin
238

Как мы отразили DDoS-атаку

Любые DDoS-атаки приводят к потере легитимного трафика, если говорить простым языком – к потере посетителей, как следствие клиентам и прибыли. Как правило, от атаки страдают сайты, принимающие электронные платежи, интернет-магазины, вот и мы не стали исключением. В декабре, в самый разгар предпраздничной торговли, впервые интернет-магазин подарков magicmag.net стал жертвой DDoS-атак, что сделало сайт недоступным для покупателей. Хорошо, что обошлось без утечки данных, но ситуация изрядно попортила нам нервы и лишила прибыли в размере несколько сотен тысяч рублей. Поэтому мы решили написать статью, для тех, кто может столкнуться с аналогичной проблемой.

В закладки

Началось с того, 15 декабря на наш сайт посыпались запросы – тысячи ботов(зараженных устройств со всего мира) с различных IP-адресов отправляли запросы на наш сервер. Каждый бот стал выполнять запросы к своему DNS серверу с неподлинным обратным IP-адресом, который указывал на наш сервер.

Иллюстрация распределенной DDOS атаки на сайт
magicmag.net

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

Стали разбираться, оказывается место на сервере заполнялось, потому, что к сайту идут тысячи запросов – мы подверглись DDoS-атаке. Разработчики и сисадмины, покопались в логах сервера, на котором находится интернет-магазин, буквально за час-два собрался архив данных о том, когда и главное откуда к нам заходили посетители. Самое интересно, что подавляющее число запросов было с IP-адресов Таиланда и Румынии.

Скриншот статистики обращений к сайту по часам magicmag.net

Общее количество запросов за 5 часов составило 145 млн.

Чтобы отразить атаку – мы пытались банить адреса и подсети, с которых приходили эти запросы, и на какое-то время это помогло. Через время нам пришло в ВК сообщение в секретном чате, в котором сообщалось, что с нами хотят сотрудничать и, если мы заплатим 50 тыс. руб. атаки прекратятся и они укажут нам на наши уязвимости. Это были словно отголоски из девяностых – принудительная оплата «крыши». Новый культурный интернет-рэкет… Не смотря на столь заманчивое предложение, мы вежливо отказались.

Воспользовавшись услугами наших IT-специалистов, мы отбили атаку, о чем не преминули сообщить в чат. Конечно, ранее мы никогда не сталкивались с атаками и не считали нужным как-то «предохраняться». У нас обычный интернет-магазин подарков, а не сайт Пентагона. Поэтому мы на ходу искали способы отбить атаку, так как опыта в этих вопросах у нас не было. Нам казалось, что мы справились, но это была ошибка – через несколько минут атака возобновилась с новой силой – запросов было в 40 раз больше. Через какое-то время сайт опять «лег».

После этого мы решили для фильтрации запросов подключить сторонний сервис – по рекомендации нашего администратора мы выбрали CloudFlare. Бесплатный пакет мы брать не стали, так как нам нужно было как можно быстрее запустить сайт.

Суть сервиса CloudFlare в том, что он брал трафик нашего интернет-магазина и пропускал его через свои центры, которые фильтровали запросы. Этот сервис использует Навальный для защиты от атак, а также такие известные компании, как Uber, Avito и многие другие.

Атака была нарастающей, изначально сисадмин банил подозрительные запросы вручную. Бан срабатывал согласно протоколу JavaScript Challenge – данный инструмент посредством математических вычислений проверяет, кто пытается зайти на сайт. Сайт во время проверки блокируется на пару секунд, после чего CloudFlare редиректит запросы на интернет-магазин, но только в том случае, если IP-адреса проходят проверку и получают статус безопасных. Мы решили не пользоваться бесплатным пакетом услуг сервиса и оплатили тариф Pro стоимостью 20 евро в месяц c кредитной карты, плюс мы заплатили 5 евро за выделенный IP-адрес.

Схема работы сервиса по защите от распределенной атаки habr.com

Но на этом наше «приключение не закончилось» - несмотря на то, что атака была практически полностью отбита, сайт все равно работал некорректно. Постоянно вылезали какие-то ошибки. CloudFlare конфликтовал с SSL-сертификатом, который мы использовали для безопасной передачи информации по защищенному протоколу. SSL-сертификат не позволяет мошенникам перехватить или заменить личные данные (логины, пароли, данные банковских карт, адреса электронной почты) покупателей, которые они вводят в нашем интернет-магазине.

Кроме того, есть еще одна особенность – когда мы в настройках домена меняли NS адреса, изменения эти вступают в силу не сразу. На то, чтобы изменения вступили в силу, уходило не менее 4 часов.

Мы зашли в раздел «доменные имена», далее в «мои домены» и в разделе «сервера имен» нажали «изменить», после чего прописали новые NS адреса. Но мы не учли тот факт, что эта процедура может длится от 4 до 24 часов. Нас это не устраивало, и мы решили воспользоваться специальными настройками и уменьшить у регистратора время вступления изменений в силу. По умолчанию время стоит 12-24 часа, но вы можете задать любое нужное вам время вручную.

CloudFlare: да или нет

До подключения к CloudFlare мы отражали DDoS-атаки собственными силами, но увы, сервер интернет-магазина упал под напором запросов. Для защиты мы не использовали ничего, мы как могли освобождали пространство, но это не помогало. Поэтому мы приняли решение воспользоваться сервисом узкой направленности чья задача фильтрация трафика. И мы остановили свой выбор на CloudFlare. Но вместе сокращением атаки мы получили ряд проблем:

  • При возникновении конфликта CloudFlare с SSL-сертификатом мы не смогли связаться напрямую со службой поддержки. Да, есть форум, на котором можно что-то написать и подождать, когда тебе ответят, но это все время, а время, как известно это деньги. Кроме того, из-за атак и проблем с работой сайта мы рисковали своей репутацией.
  • Снижение показателей конверсии из-за ошибок сайта, а также из-за его замедленной «реакции».
  • Из-за оплаты посредством кредитной карты сервис автоматически списывал с нее деньги еще несколько месяцев - учтите этот момент и вовремя отмените подписку.

Фильтрация и сервис CloudFlare оказался для нас не подходящим и нерентабельным – да, изначально это был выход, но потом нас это не устроило. В первую очередь из-за отсутствия возможности оперативно решать проблемы и отсутствием технической поддержки. Поэтому мы обратили внимание на российский сервис – Qrator.
Большим плюсом стала круглосуточная телефонная служба поддержки. Менеджеры быстро, грамотно и без ожидания помогли нам настроить фильтрацию трафика буквально в течение получаса.

Qrator: плюсы

✔ Автоматическая смарт-фильтрация трафика – сервис фильтрует зашифрованный трафик без нашего участия.

✔ Быстрое подключение сайта к сервису – стар работы сразу после замены DNS интернет-магазина.

✔ Бесплатный тестовый период – 7 дней, если ваш сайт находится под DDoS – атакой, тогда тестовое время составляет 1 сутки.

✔ Защита в том числе и от атак по IP-адресам, для этого мы закрыли доступ к нашему сайту со всех адресов, кроме указанных Qrator.

✔ Русскоговорящая поддержка по телефону, которая помогает все быстро настроить.

Благодаря Qrator мы отбили атаку и никаких денег мы не платили, когда они поняли, что им не выгодно далее нас атаковать и буквально на следующий день принялись за конкурентов. У них цель заработать на тех, у кого нет должных знаний в области безопасности, поэтому уже много лет кибер-преступники имеют традицию перед новым годом «предлагать помощь» за весьма приличные деньги. Так как мы прошли все круги ада, то конечно же рассказали конкурентам как справится с данной проблемой, у них по нашей схеме ушло на это около пары часов.

Вывод

Интернет-магазин работает и наш, и конкурентов, кибер-злодеи остались ни с чем.

Qrator куратор помог отбить атаку, но на постоянной основе мы не используем данный сервис в виду отсутствия экономической выгоды - постоянная защита стоит не мало.
Кстати, QRATOR тарифицирует свои услуги по трафику, так что если вы хотите неплохо сэкономить - вам нужно разнести на разные сервера "статику" (фотки, например) и динамику (код) сайта и настроить фильтрацию только на код. Это позволит снизить цену в несколько раз.

Цель данной статьи рассказать вам как в случае DDoS – атаки быстро и с минимальными потеря, используя наш опыт отбиться от атаки, не потерять репутацию, прибыль и не растерять клиентов. Да, наши потери составили несколько сотен тысяч рублей, и вы могли подумать, что выгоднее было заплатить 50 тыс. Мы же придерживаемся мнения, что никогда нельзя платить шантажистам, так как те, кто платит раз, будут платить постоянно.

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Konstantin Spirin", "author_type": "self", "tags": [], "comments": 16, "likes": -5, "favorites": 3, "is_advertisement": false, "subsite_label": "life", "id": 76979, "is_wide": false, "is_ugc": true, "date": "Fri, 09 Aug 2019 18:03:22 +0300" }
{"average":26034,"one":95,"ten":75}
Сколько денег вы откладываете в месяц?
Ответьте и узнаете, сколько копят другие.
0 ₽
70 000+ ₽
0 ₽
{ "id": 76979, "author_id": 38877, "diff_limit": 1000, "urls": {"diff":"\/comments\/76979\/get","add":"\/comments\/76979\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/76979"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199123, "last_count_and_date": null }
16 комментариев

Популярные

По порядку

Написать комментарий...
1

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

У нас сервер 1U в дц mtw.ru - так как накрывает, они нам помогают. 1U колокейшна там стоит 3000руб в месяц.

И всегда надо иметь запас айпишников, быстро ддос не переключат. И вместо того, чтобы рыться в логах, меняем внешний айпи.

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

Ответить
1

Чем меньше ДЦ тем меньше у него суммарная скорость каналов. Одно дело, если атака как у автора, не забьет и 100 мбит канал, а другое, когда атака на десятки гигабит.
А уж если говорить про бесплатную защиту от DDoS от хостеров - вы ей реально пользовались? В 99% случаев это защиты L3-L4 OSI, которые редко встречаются в жизни обычного веб-сайта. В 95% случаев DDoS-атаки на сайт это атаки на уровне L7 - уровень http запросов. Таких бесплатных защит я не видел - да и какой смысл их делать бесплатно? В чем бизнес то тогда? У cloudflare есть бесплатный тариф, но с заглушкой 5 сек, мол мы проверяем, не бот ли вы. Это убьет конверсию сайта на корню.... Посетителю вообще об этом знать не нужно.

Ответить
0

В Москве и под Москвой каналы у всех ДЦ отличные. У мтв ДЦ в Королеве (второй "бункер", первый на электрозаводской) , и без проблем на наш сервер идет гигабит, в общем полный канал 1gb/1gb, без проблем. Это говорит о том, что у ДЦ огромный серьезный внешний канал.

И когда я увлекался iptv, мне сказали, что резать не будут, хоть наш сервер постоянно будет канал нагружать полностью. Это ли не показатель качества ДЦ?

МТВ небольшие, и мне очень с ними нравится работать. Всех выросших клиентов я туда затаскиваю - и всем нравится. У них есть один бесплатный снепшот виртуалки.
А также есть отличный доступ к серверу.

Наш сервер там леть пять размещён. И проблема только один раз была, когда ледяной дождь был в московском регионе, выпали мы часика на два.

Подобных условий большие не предлагают. Там за все плати - юнит стоит дороже "в розницу", за бекапы виртуалки плати, антиддос платный и так далее.
Плюс никто тебя не вырубит, если оплату пропустил.

А тут... как будто я с корешами договорился на размещение сервака. В общем, рекомендую. Отличные ребята. Конкуренция, я все понимаю.

Ответить
0

Не могу судить, может конечно все так классно и есть. 3 т.р. за 1 юнит без учета БП - хорошее предложение. У меня сейчас примерно так же выходит, но я специально брал серверы с "маленьким" БП (460 Вт сейчас). А так очень у многих производителей с таким же железом БП были бы уже 600-700 Вт, что излишне.

Ответить
0

Заметил, что анонс AS у них 2000 стоит. Обычно у всех бесплатно.

Ответить
1

145 млн. запросов за 5 часов это примерно 8 тыс. запросов в секунду. Это для любого сервиса защиты от DDoS несущественная нагрузка по большому счету. qrator хороший сервис, но, судя по тексту, вы просто воспользовались демо-периодом бесплатно и ничего не платили? qrator это совсем не бюджетно для небольшого интернет-магазина. Есть много сервисов типа ddosoff.ru, ddos-guard.net и прочих, где за 2-3 тыс. можно подключить защиту. И это существенно дешевле, чем несколько дней тратить на самостоятельную борьбу с атаками и терять деньги с заказов.
И не обязательно было менять NS-сервера. Достаточно было сменить A-записи домена на защищенные IP - это гораздо быстрее.

Ответить
0

145 млн заходов. Запросов мультиплицированно больше. И это не на пике. На пике было в 300 раз больше - график куратора не сохранился.

Ответить
0

Сам куратор сказал что атака очень сильная. Но всплеск был разовый, как только не пробили - отстали

Ответить
1

у нас такое тоже было, позвонили провайдеру, они удали Ip адрес атакующий
и мы перенесли страницу входа админки на который был настроен бот.
Была интересней история, когда через регистрацию проник бот по простой регистрации (имя и емейл). Но вместо имени была реклама. И в подверждении получается мы сделали такую рассылку чужой рекламы. Здорово конечно придумано, если не защищено поле регистрации разными методами.

Ответить
1

Фильтрация и сервис CloudFlare оказался для нас не подходящим и нерентабельным – да, изначально это был выход, но потом нас это не устроило. В первую очередь из-за отсутствия возможности оперативно решать проблемы и отсутствием технической поддержки.

Какие проблемы было невозможно решить оперативно?

Ответить
0

Конфликт ssl сертификата

Ответить
0

В чем заключается?

Ответить
0

Мы загружали наш сертификат через их инструменты и он не работал

Ответить
0

Там можно заказать сертификат, который сам встанет

Ответить
0

Заказали, купили самый дорогой. Не встал

Ответить
0

Кстати, заметьте, что тема серьёзная и ламеры сюда не пишут ;) Так что, обнимаю всех в этой теме

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Приложение-плацебо скачали
больше миллиона раз
Подписаться на push-уведомления
{ "page_type": "default" }