Что такое DDoS-атака?

Опубликовано Обновлено 4 мин. чтения

Как проходит DDoS-атака, какие бывают виды и почему защита должна стоять в сети перед сервером. С реальными случаями атак из практики.

DDoS-атака (Distributed Denial of Service, распределённый отказ в обслуживании) заваливает сервер, сайт или целую сеть таким количеством запросов, что легитимные пользователи до него больше не доходят. Распределённой атака называется потому, что идёт не с одной машины, а одновременно с сотен, а то и сотен тысяч захваченных устройств, которые вместе образуют так называемый ботнет.

Как проходит DDoS-атака

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

Эффект наступает в самом слабом месте: либо забивается канал, либо CPU и оперативная память целевой системы полностью уходят на обработку запросов. В обоих случаях сервис перестаёт быть доступным для реальных пользователей. Именно поэтому правила файрвола на самом сервере часто срабатывают слишком поздно: они вступают в силу лишь тогда, когда пакеты уже пришли по каналу.

Типичные виды атак

  • Объёмные атаки: UDP-flood и похожие схемы, которые просто насыщают полосу пропускания. Измеряются в Гбит/с.
  • Протокольные атаки: SYN-flood и исчерпание таблиц состояний на серверах, файрволах и балансировщиках нагрузки. Измеряются в пакетах в секунду.
  • Атаки на прикладном уровне (Layer 7): HTTP-flood, тяжёлые поисковые запросы, flood на форму входа. Они требуют мало полосы и очень похожи на настоящий трафик.
  • Игровые эксплойты: Nullping, QuietException или fake-handshake-flood против игровых серверов. Они злоупотребляют установкой соединения, а не забивают канал.

Что такое amplification-атака?

При amplification-атаке (атака с усилением) злоумышленник использует чужие, публично доступные сервисы как усилители. Он отправляет небольшие запросы на открытые DNS-, NTP- или Memcached-серверы и указывает при этом в качестве отправителя IP-адрес жертвы. Ответы оказываются в разы объёмнее запросов, и все они уходят на жертву.

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

Почему поддельные IP-адреса так эффективны?

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

Против подделанного трафика списки блокировок не помогают. Нужна фильтрация, которая оценивает поведение трафика и отбрасывает поддельные пакеты ещё до того, как они дойдут до цели.

Почему атакуют именно мой сервер?

Мотивы редко бывают техническими. На практике мы чаще всего видим такие сценарии:

  • Конкуренция: другая игровая сеть, другой магазин или другой Discord-сервер хочет забрать ваших пользователей.
  • Месть: забаненный игрок, уволенный сотрудник или недовольный клиент.
  • Вымогательство: короткая атака в качестве предупреждения вместе с требованием выкупа.
  • Вандализм: заказные сервисы атак стоят несколько евро, поэтому решиться на такое почти ничего не стоит.

Для защиты мотив значения не имеет. Важно другое: защита должна работать постоянно, а не подключаться или включаться лишь тогда, когда атака уже идёт.

Что действительно помогает против DDoS-атак?

Действенная защита стоит в сети перед сервером, а не на самом сервере. KernelHost использует для этого двухуровневую постоянную защиту: глобальная ёмкость фильтрации составляет 17 Тбит/с и перехватывает объёмные атаки близко к их источнику. Непосредственно перед сервером во Франкфурте работает фильтрация Arbor в реальном времени с 3,2 Тбит/с, которая пакет за пакетом убирает сложные, специфичные для протоколов схемы.

Важный момент: null-routing не применяется. При null-routing атакуемый IP-адрес полностью убирался бы из сети, сервер оказался бы недоступен, а злоумышленник добился бы своей цели. Вместо этого IP-адрес остаётся доступным, а отбрасываются только вредоносные пакеты. Защита входит в каждый серверный тариф: стандартные тарифы располагают 3,2 Тбит/с, тарифы Professional 17 Тбит/с.

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

Практика: реально отражённые атаки

Перечисленные ниже атаки пришлись на серверы клиентов KernelHost и были полностью отфильтрованы в реальном времени, каждый раз без простоя. Скриншоты сделаны из живого мониторинга системы защиты.

Голосовой сервер TeamSpeak 3, порт 9987 UDP

Сложная атака с несколькими одновременными схемами, более 473,4 Гбит/с и более 41,5 миллиона пакетов в секунду. Отфильтрована в реальном времени, без простоя.

DDoS-защита KernelHost: голосовой сервер TeamSpeak на порту 9987 UDP, более 473 Гбит/с отфильтровано в реальном времени

Игровой сервер ARK, порт 7777 UDP

Простой UDP-flood без сложной структуры, зато более 112,2 Гбит/с и более 8,7 миллиона пакетов в секунду. Отфильтрован в реальном времени, без простоя.

DDoS-защита KernelHost: игровой сервер ARK на порту 7777 UDP, UDP-flood более 112 Гбит/с отфильтрован в реальном времени

Атака по всем портам, порты 0-65535 TCP/UDP

Более 12 различных основных схем атаки одновременно против всех портов, в сумме более 21,3 Гбит/с и более 3,9 миллиона пакетов в секунду. Полностью отфильтровано в реальном времени.

DDoS-защита KernelHost: сложная атака по всем портам 0-65535, отфильтрована в реальном времени

Minecraft и OpenVPN, порты 25565 TCP и 1194 UDP

Комбинированная атака с более чем 16 различными основными схемами, более 4 миллионов пакетов в секунду и более 8,6 Гбит/с. Оба сервиса всё время оставались доступными.

DDoS-защита KernelHost: сервер Minecraft на порту 25565 TCP и OpenVPN на 1194 UDP, отфильтровано в реальном времени

Частые вопросы

Что означает DDoS?
DDoS расшифровывается как Distributed Denial of Service, распределённый отказ в обслуживании. Множество захваченных устройств одновременно шлют запросы на одну цель, пока канал или ресурсы сервера не окажутся полностью заняты и реальные пользователи перестанут проходить.
В чём разница между DoS и DDoS?
DoS-атака идёт из одного источника, и заблокировать её сравнительно просто. DDoS-атака распределена сразу по множеству источников одновременно, поэтому простая блокировка уже не работает.
Что такое amplification-атака?
Злоумышленник отправляет небольшие запросы с поддельным адресом отправителя на открытые сервисы вроде DNS или NTP. Их заметно более объёмные ответы уходят на жертву, поэтому из небольшого объёма атакующего трафика получается очень большой.
Почему файрвола на сервере недостаточно?
Он срабатывает только тогда, когда пакеты уже пришли по каналу. Если канал насыщен, локальные правила больше не помогают. Фильтровать нужно в сети перед сервером.
Почему атакуют именно мой сервер?
Чаще всего из-за конкуренции, мести, вымогательства или просто вандализма. Заказные сервисы атак стоят несколько евро, поэтому под удар попадают и небольшие проекты.

DDoS-атака Что такое DDoS Ботнет Amplification-атака IP-спуфинг Защита от DDoS Layer-7-атака