Что есть что и кто есть кто на рынке защиты от DDoS

«Мальчик, который делал нам сайт, уже настроил защиту от DDoS».
«У нас же стоит защита от DDoS, почему сайт лег?»
«Сколько-сколько тысяч хочет Qrator?»

Чтобы нормально отвечать на такие вопросы заказчика/начальника, неплохо бы знать, что скрывается за названием «защита от DDoS». Выбор сервисов защиты больше напоминает выбор лекарства врачом, чем выбор стола в IKEA.

Я занимаюсь поддержкой сайтов 11 лет, пережил сотни атак на поддерживаемые мной сервисы, и сейчас немного расскажу о внутренней кухне защиты.
hhqrabfc2kbsjf6aj3bmimutclu.png
Регулярные атаки. 350k req total, 52k req legitimate
Первые атаки появились практически одновременно с интернетом. DDoS как явление стал массовым с конца 2000-х годов (поглядите www.cloudflare.com/learning/ddos/famous-ddos-attacks).
Примерно с 2015–2016 года почти все хостинг-провайдеры встали под защиту от DDoS атак, как и большинство заметных сайтов в конкурентных сферах (сделайте whois по IP сайтов eldorado.ru, leroymerlin.ru, tilda.ws, увидите сети операторов защиты).

Если 10–20 лет назад большинство атак можно было отбить на самом сервере (оцените рекомендации системного администратора Lenta.ru Максима Мошкова из 90-х: lib.ru/WEBMASTER/sowetywww2.txt_with-big-pictures.html#10), то сейчас задачи по защите стали сложнее.

Виды DDoS атак с точки зрения выбора оператора защиты

Атаки на уровне L3 / L4 (по модели OSI)

— UDP flood с ботнета (напрямую с зараженных устройств на атакуемый сервис отправляется много запросов, серверам заваливают канал);
— DNS/NTP/etc amplification (с зараженных устройств отправляется много запросов на уязвимые DNS/NTP/etc, адрес отправителя подделывается, туча пакетов с ответом на запросы заваливает канал тому, кого атакуют; так выполняются самые массовые атаки в современном интернете);
— SYN / ACK flood (на атакуемые серверы отправляется много запросов на установление соединения, происходит переполнение очереди соединений);
— атаки с фрагментацией пакетов, ping of death, ping flood (погуглите плз);
— и т.п.

Эти атаки ставят целью «завалить» канал серверу или «убить» его способность принимать новый трафик.
Хотя SYN/ACK флуд и амплификация сильно отличаются, многие компании борются с ними одинаково хорошо. Проблемы возникают с атаками из следующей группы.

Атаки на L7 (уровень приложения)

— http flood (если атакуется веб-сайт или какой-нибудь http api);
— атака на уязвимые участки сайта (не имеющие кэша, очень сильно нагружающие сайт, етс.).

Цель — заставить сервер «тяжело работать», обрабатывать много «как будто бы реальных запросов» и остаться без ресурсов для настоящих запросов.

Хотя есть и другие атаки, эти — самые распространенные.

Серьезные атаки на L7 уровне создаются уникальным образом под каждый атакуемый проект.

Почему 2 группы?
Потому что есть много тех, кто умеет хорошо отбивать атаки на уровне L3 / L4, но или вообще не берется за защиту на уровне приложения (L7), или пока справляется с ними слабее альтернатив.

Кто есть кто на рынке защиты от DDoS


(мой личный взгляд)

Защита на уровне L3/L4

Чтобы отбивать атаки с амплификацией («завал» канала сервера) хватает широких каналов (многие из сервисов защиты подключаются к большинству крупных магистральных провайдеров в России и обладают каналами с теоретической емкостью больше 1 Тбит). Не забываем, что очень редкие атаки с амплификацией длятся дольше часа. Если вы Spamhaus и вас все не любят — да, вам могут стараться положить каналы на несколько суток даже с риском для дальнейшего выживания используемого мирового ботнета. Если у вас просто интернет-магазин, даже если это mvideo.ru — 1 Тбит в течение нескольких суток вы увидите очень нескоро (надеюсь).

Чтобы отбивать атаки с SYN/ACK флудом, фрагментацией пакетов, етс, необходимо оборудование или софтверные системы для детекции и отсекания таких атак.
Такое оборудование производят многие (Arbor, есть решения у Cisco, Huawei, софтверные реализации от Wanguard и т.п.), многие магистральные операторы уже установили его и продают услуги защиты от DDoS (я знаю про инсталляции у Ростелеком, Мегафон, ТТК, МТС, по сути у всех крупных провайдеров, это же делают хостеры со своей защитой a-la OVH.com, Hetzner.de, сталкивался сам с защитой в ihor.ru). Некоторые компании разрабатывают свои софтверные решения (технологии типа DPDK позволяют обрабатывать трафик в десятки гигабит на одной физической x86 машине).

Из известных игроков более-менее эффективно L3/L4 DDoS отбивать умеют все. Я сейчас не скажу, у кого больше максимальная емкость канала (это инсайдерская информация), но обычно это не так важно, и разница только в том, насколько быстро срабатывает защита (мгновенно или через несколько минут даунтайма проекта, как в Hetzner).
Вопрос в том, насколько качественно это делается: атаку с амплификацией можно отбить, заблокировав трафик из стран с наибольшим количеством вредного трафика, а можно отбрасывать только действительно лишний трафик.
Но при этом, исходя из моего опыта, все серьезные игроки рынка с этим справляются без проблем: Qrator, DDoS-Guard, Kaspersky, G-Core Labs (бывший SkyParkCDN), ServicePipe, Stormwall, Voxility, Variti, etc.
С защитой от операторов типа Ростелеком, Мегафон, ТТК, Билайн не сталкивался, по отзывам коллег они эти услуги оказывают достаточно качественно, но пока периодически сказывается недостаток опыта: иногда нужно что-нибудь докрутить через поддержку оператора защиты.
У некоторых операторов есть отдельная услуга «защита от атак на уровне L3/L4», или «защита каналов», она стоит намного дешевле защиты на всех уровнях.

А как не магистральный провайдер отбивает атаки в сотни Гбит, у него же нет своих каналов?

Оператор защиты может подключиться к любому из крупных провайдеров и отбивать атаки «за его счет». За канал придется платить, но все эти сотни Гбит будут утилизированы далеко не всегда, есть варианты значительного снижения стоимости каналов в этом случае, поэтому схема остается работоспособной.


l0nv70ydhaz69tiqttecs0ug1_w.png
Вот такие отчеты от вышестоящей L3/L4 защиты я регулярно получал, поддерживая системы хостинг-провайдера.

Защита на уровне L7 (уровень приложения)

Атаки на уровне L7 (уровень приложения) стабильно и качественно умеют отбивать единицы.
У меня есть реальный достаточно большой опыт с
— Qrator.net;
— DDoS-Guard;
— G-Core Labs;
— Kaspersky.

Они берут плату за каждый мегабит чистого трафика, мегабит стоит порядка нескольких тысяч рублей. Если у вас хотя бы 100 мбит чистого трафика — ой. Защита будет очень дорогой. Могу рассказать в следующих статьях, как проектировать приложения, чтобы очень хорошо сэкономить на емкости каналов защиты.
Реальный «царь горы» — Qrator.net, остальные от них отстают. Qrator пока единственные в моей практике, кто дает близкий к нулю процент ложных срабатываний, но при этом они в несколько раз дороже остальных игроков рынка.

Другие операторы тоже дают качественную и стабильную защиту. Многие сервисы на нашей поддержке (в т.ч. очень известные в стране!) стоят под защитой от DDoS-Guard, G-Core Labs, и вполне довольны получаемым результатом.
95i0api3gqlvnmwnk-3l8byibqq.png
Атаки, отбитые Qrator

Есть еще опыт с небольшими операторами защиты типа cloud-shield.ru, ddosa.net, тысячи их. Однозначно рекомендовать не буду, т.к. опыт не очень велик, расскажу о принципах их работы. Стоимость защиты у них часто на 1–2 порядка ниже, чем у крупных игроков. Как правило, они покупают услугу частичной защиты (L3/L4) у кого-то из более крупных игроков + делают собственную защиту от атак на более высоких уровнях. Это может быть вполне эффективно + вы можете получить хороший сервис за меньшие деньги, но это все же небольшие компании с маленьким штатом, учтите, пожалуйста.

В чем сложность отражения атак на уровне L7?

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

Когда-то хватало модуля nginx-testcookie (https://github.com/kyprizel/testcookie-nginx-module), и его и сейчас хватает для отражения большого числа атак. Когда я работал в хостинг-индустрии, L7 защиту строил как раз на nginx-testcookie.
Увы, атаки стали сложнее. testcookie использует проверки на ботов на базе JS, а многие современные боты умеют их успешно проходить.

Атакующие ботнеты также уникальны, и нужно учитывать особенности каждого крупного ботнета.
Амплификация, прямой флуд с ботнета, фильтрация трафика из разных стран (разная фильтрация для разных стран), SYN/ACK флуд, фрагментация пакетов, ICMP, http флуд, при этом на уровне приложения/http можно придумывать неограниченное число разных атак.
В сумме на уровне защиты каналов, специализированного оборудования для очистки трафика, спец софта, дополнительных настроек фильтрации для каждого клиента могут быть десятки и сотни уровней фильтрации.
Чтобы правильно управляться с этим и корректно тюнить настройки фильтрации под разных пользователей, нужен большой опыт и квалифицированные кадры. Даже крупный оператор, решивший оказывать услуги защиты, не может «тупо закидать проблему деньгами»: опыт придется набивать на лежащих сайтах и ложных срабатываниях на легитимном трафике.
Для оператора защиты нет кнопки «отбить DDoS», есть большое число инструментов, ими нужно уметь пользоваться.

И еще один бонусный пример.
yawrmqrp_xyx2o_nlg_hqeogl30.png
Сервер без защиты был заблокирован хостером при атаке емкостью в 600 мбит
(«Пропадание» трафика не заметно, т.к. атакован был только 1 сайт, его на время убрали с сервера и блокировка была снята в пределах часа).
tyb_2baae8seawlsujllodb5kd0.png
Этот же сервер под защитой. Атакующие «сдались» после суток отбитых атак. Cама атака оказалась не самой сильной.

Атака и защита L3/L4 более тривиальны, в основном, они зависят от толщины каналов, алгоритмов детекции и фильтрации атак.
Атаки L7 сложнее и оригинальнее, они зависят от атакуемого приложения, возможностей и фантазии атакующих. Защита от них требует больших знаний и опыта, причем результат может быть не сразу и не стопроцентный. Пока Гугл не придумал для защиты очередную нейросеть.

© Habrahabr.ru