«Мальчик, который делал нам сайт, уже настроил защиту от DDoS».
«У нас же стоит защита от DDoS, почему сайт лег?»
«Сколько-сколько тысяч хочет Qrator?»
Чтобы нормально отвечать на такие вопросы заказчика/начальника, неплохо бы знать, что скрывается за названием «защита от DDoS». Выбор сервисов защиты больше напоминает выбор лекарства врачом, чем выбор стола в IKEA.
Я занимаюсь поддержкой сайтов 11 лет, пережил сотни атак на поддерживаемые мной сервисы, и сейчас немного расскажу о внутренней кухне защиты.
Регулярные атаки. 350k req total, 52k req legitimate
Первые атаки появились практически одновременно с интернетом. DDoS как явление стал массовым с конца 2000-х годов (поглядите
Примерно с 2015-2016 года почти все хостинг-провайдеры встали под защиту от DDoS атак, как и большинство заметных сайтов в конкурентных сферах (сделайте whois по IP сайтов eldorado.ru, leroymerlin.ru, tilda.ws, увидите сети операторов защиты).
Если 10-20 лет назад большинство атак можно было отбить на самом сервере (оцените рекомендации системного администратора Lenta.ru Максима Мошкова из 90-х:
Виды 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, etc.
С защитой от операторов типа Ростелеком, Мегафон, ТТК, Билайн не сталкивался, по отзывам коллег они эти услуги оказывают достаточно качественно, но пока периодически сказывается недостаток опыта: иногда нужно что-нибудь докрутить через поддержку оператора защиты.
У некоторых операторов есть отдельная услуга «защита от атак на уровне L3/L4», или «защита каналов», она стоит намного дешевле защиты на всех уровнях.
А как не магистральный провайдер отбивает атаки в сотни Гбит, у него же нет своих каналов?Оператор защиты может подключиться к любому из крупных провайдеров и отбивать атаки «за его счет». За канал придется платить, но все эти сотни Гбит будут утилизированы далеко не всегда, есть варианты значительного снижения стоимости каналов в этом случае, поэтому схема остается работоспособной.
Вот такие отчеты от вышестоящей L3/L4 защиты я регулярно получал, поддерживая системы хостинг-провайдера.
Защита на уровне L7 (уровень приложения)
Атаки на уровне L7 (уровень приложения) стабильно и качественно умеют отбивать единицы.
У меня есть реальный достаточно большой опыт с
— Qrator.net;
— DDoS-Guard;
— G-Core Labs;
— Kaspersky.
Они берут плату за каждый мегабит чистого трафика, мегабит стоит порядка нескольких тысяч рублей. Если у вас хотя бы 100 мбит чистого трафика — ой. Защита будет очень дорогой. Могу рассказать в следующих статьях, как проектировать приложения, чтобы очень хорошо сэкономить на емкости каналов защиты.
Реальный «царь горы» — Qrator.net, остальные от них отстают. Qrator пока единственные в моей практике, кто дает близкий к нулю процент ложных срабатываний, но при этом они в несколько раз дороже остальных игроков рынка.
Другие операторы тоже дают качественную и стабильную защиту. Многие сервисы на нашей поддержке (в т.ч. очень известные в стране!) стоят под защитой от DDoS-Guard, G-Core Labs, и вполне довольны получаемым результатом.
Атаки, отбитые Qrator
Есть еще опыт с небольшими операторами защиты типа cloud-shield.ru, ddosa.net, тысячи их. Однозначно рекомендовать не буду, т.к. опыт не очень велик, расскажу о принципах их работы. Стоимость защиты у них часто на 1-2 порядка ниже, чем у крупных игроков. Как правило, они покупают услугу частичной защиты (L3/L4) у кого-то из более крупных игроков + делают собственную защиту от атак на более высоких уровнях. Это может быть вполне эффективно + вы можете получить хороший сервис за меньшие деньги, но это все же небольшие компании с маленьким штатом, учтите, пожалуйста.
В чем сложность отражения атак на уровне L7?
Все приложения уникальны, и нужно разрешать полезный для них трафик и блокировать вредный. Однозначно отсеять ботов удается не всегда, поэтому приходится использовать много, реально МНОГО степеней очистки трафика.
Когда-то хватало модуля nginx-testcookie (
Увы, атаки стали сложнее. testcookie использует проверки на ботов на базе JS, а многие современные боты умеют их успешно проходить.
Атакующие ботнеты также уникальны, и нужно учитывать особенности каждого крупного ботнета.
Амплификация, прямой флуд с ботнета, фильтрация трафика из разных стран (разная фильтрация для разных стран), SYN/ACK флуд, фрагментация пакетов, ICMP, http флуд, при этом на уровне приложения/http можно придумывать неограниченное число разных атак.
В сумме на уровне защиты каналов, специализированного оборудования для очистки трафика, спец софта, дополнительных настроек фильтрации для каждого клиента могут быть десятки и сотни уровней фильтрации.
Чтобы правильно управляться с этим и корректно тюнить настройки фильтрации под разных пользователей, нужен большой опыт и квалифицированные кадры. Даже крупный оператор, решивший оказывать услуги защиты, не может «тупо закидать проблему деньгами»: опыт придется набивать на лежащих сайтах и ложных срабатываниях на легитимном трафике.
Для оператора защиты нет кнопки «отбить DDoS», есть большое число инструментов, ими нужно уметь пользоваться.
И еще один бонусный пример.
Сервер без защиты был заблокирован хостером при атаке емкостью в 600 мбит
(«Пропадание» трафика не заметно, т.к. атакован был только 1 сайт, его на время убрали с сервера и блокировка была снята в пределах часа).
Этот же сервер под защитой. Атакующие “сдались” после суток отбитых атак. Cама атака оказалась не самой сильной.
Атака и защита L3/L4 более тривиальны, в основном, они зависят от толщины каналов, алгоритмов детекции и фильтрации атак.
Атаки L7 сложнее и оригинальнее, они зависят от атакуемого приложения, возможностей и фантазии атакующих. Защита от них требует больших знаний и опыта, причем результат может быть не сразу и не стопроцентный. Пока Гугл не придумал для защиты очередную нейросеть.
Источник: habr.com