DDoS-атаки: что это, происхождение, виды и способы защиты

Distributed Denial of Service, или «Распределенный отказ в обслуживании» — это перегрузка информационной системы избыточным числом запросов, блокирующая обработку обращений.

Что происходит при DDoS-атаке? Массовые запросы к серверу. Их объем превышает допустимый, что делает сервер недоступным для других пользователей.

Причины DDOS-атак

Личная неприязнь

IT-специалисты могут инициировать обвал сервера организации по личным мотивам: преследование со стороны закона, желание отомстить обидчикам, зависть успеху чужого проекта и пр. Например, в 1999 году хакеры из-за угрозы преследования обрушили серверы ФБР.

Политические мотивы

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

Развлечение

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

Вымогательство

Хакер может шантажировать владельцев ресурса с целью выкупа под угрозой DDoS.

Конкуренция

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

Потенциальные жертвы

Основной ущерб для любой корпорации — это потери от простоя (трафик, клиенты, доход, репутация, ухудшение позиций в поисковых выдачах и пр.). Как правило, жертвами крупных DDOS атак становятся:

  • Корпорации и государственные учреждения: агрегаторы (маркетплейсы), сайты крупных компаний, отраслевых министерств и др.;
  • Финансовые учреждения: сайты и порталы банков, бирж, управляющих и инвестиционных компаний;
  • Медицинские учреждения: больницы, медицинские центры и пр.;
  • IoT устройства: онлайн-кассы, системы «Умный дом» и пр.

Организация DDOS-атак

Серверы имеют ограничения на одновременную обработку запросов. Также для оптимизации нагрузки предусмотрено ограничение пропускной способности канала, соединяющего сеть и сервер. Для обхода ограничений злоумышленники организуют специальную сеть с вредоносным ПО («ботнет»). Для наглядности ее схема приведена ниже.

Входящие в инфраструктуру «ботнет» компьютеры не связаны между собой. Они используются для генерации избыточного трафика, способного перегрузить атакуемую систему. Для этого на компьютеры ставится троян, который запускается удаленно. Атаке подвергается DNS сервер, пропускной канал и интернет-соединение.

Признаки DDOS-атаки

Распознать атаку можно по следующим признакам:

  • Некорректная работа серверного ПО и ОС: зависания, произвольные завершения сессий и пр.;
  • Пиковая нагрузка на сервер: нагрузка на ЦП, оперативную память, диск и другие компоненты сервера, превышающая средние значения;
  • Рост числа запросов на порты;
  • Одинаковая модель поведения: злоумышленники пытаются маскировать вредоносный трафик, закладывая в алгоритмы симуляцию действий пользователей (скачивания файлов, просмотры страниц, использование поиска и пр.). Выявление массового совершения однотипных действий может послужить сигналом;
  • Однотипные запросы к портам и сервисам: выявить возросшую нагрузку, однотипные запросы к службам сервера можно по анализу логов. Массовые запросы, если генерирующие их пользователи не похожи на типичную аудиторию, являются хорошим маркером.

Виды DDoS-атак

Атаки транспортного уровня

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

Как правило, сетевая служба работает по методу FIFO, согласно которому в приоритете первое обращение. Однако, при флуде генерируется такой объем запросов, что аппаратных ресурсов сервера не хватает для завершения обработки первого запроса.

HTTP-флуд

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

ICMP-флуд

Перегружает сервер жертвы служебными командами, на которые машина должна давать эхо-ответы. Классический пример — Ping-флуд, когда на сервер непрерывно отправляются ICMP-пакеты для проверки доступности узла.

SYN-флуд

На сервер отправляется избыточный объем SYN-запросов на TCP-подключение. Согласно алгоритму «‎тройного рукопожатия», сервер должен ответить на SYN-запрос клиента пакетом с флагом ACK (Аcknowledge). После этого будет установлено соединение. В случае с SYN-флудом, очередь SYN-запросов на сервере переполняется.

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

UDP-флуд

Атакуемое устройство получает множественные UDP-запросы с измененными IP-адресами источников. Так злоумышленник сохраняет анонимность паразитной сети, забивая полосу пропускания сервера. Суть атаки в следующем: из вредоносной сети на жертву направляется поток UDP-запросов. Сервер должен обработать запрос, разобрав приходящий пакет и определив для него соответствующее приложение (сервис, порт).

Затем нужно перенаправить запрос туда и в случае успеха вернуть ответ службы. В случае отсутствия активности будет отправлено сообщение «Адресат недоступен» по протоколу ICMP. Поскольку в пакетах был изменен адрес источника инициатора запроса, то ICMP-отказы уходят на другие узлы. Тем временем, вредоносный алгоритм продолжает поддерживать очередь запросов переполненной.

MAC-флуд

На порты сервера поступает поток пустых пакетов с пустыми MAC-адресами.

Атаки уровня инфраструктуры

Атаке подвергаются оперативная память, процессорное время, а также подсистема хранения данных на сервере. При этом пропускной канал не перегружается.

Существуют несколько видов таких атак.

Вычисления

Процессор получает запросы на «тяжелые» вычисления. Ввиду переизбытка запросов сервер начинает сбоить и пользователи не получают доступ к серверу, его службам и ресурсам.

Переполнение диска

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

Обход системы квотирования

Злоумышленник получает доступ к CGI-интерфейсу сервера и с его помощью использует аппаратные ресурсы машины в своих интересах.

Неполная проверка пользователя

Злоумышленник может использовать ресурсы сервера бесконечно долго.

Атака второго рода

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

Атаки уровня приложений

При таких атаках используются заложенные в серверное ПО упущения, создающие уязвимости. Классический пример — атака «Пинг смерти», когда на атакуемую машину направляется избыточный объем ICMP-пакетов, переполняющих буфер памяти.

DNS-атаки

Атаки этого вида направлены на:

  • Использование уязвимостей в ПО DNS-серверов: «уязвимость нулевого дня», «Быстрый поток», «DNS-спуфинг»;
  • Обрушение DNS-серверов: из-за отключения службы DNS пользователь не сможет зайти на страницу сайта, поскольку его браузер не найдет IP-адрес нужного узла.

Предотвращение и защита от DDoS-атак

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

Владелец же сайта, веб-сервиса или другого сетевого проекта, со своей стороны, для минимизации рисков и потерь от DDoS должен:

  • Тщательно обследовать логику своего продукта: еще на этапе разработки и тестирования можно исключить ошибки и уязвимости;
  • Вести контроль версий ПО и сетевых служб: необходимо своевременно обновлять программное обеспечение сетевых служб (СУБД, PHP и пр.). Также нужно поддерживать код самого продукта в актуальном и стабильном состоянии. Рекомендуется даже разворачивать проект на нескольких серверах — продуктовом (боевом), тестовом (для обкатки нового функционала) и бэкап-сервере (для хранения резервных копий и архивов исходников). Также рекомендуется использовать системы контроля версий (Git) для возможности отката проекта к предыдущей стабильной сборке;
  • Следить за доступом к сетевым службам: делегирование прав на операции требует проработки. Необходимо обеспечить несколько уровней доступа (мастер, гостевой и пр.) к сетевым службам сервера и архиву версий проекта. Список лиц, имеющих доступ к ресурсам сервера, необходимо поддерживать в актуальном состоянии — например, своевременно отключать доступ уволившимся сотрудникам. Также нужно сбрасывать пароли и учетные записи при любом подозрении на компрометацию;
  • Контролировать панель администратора: рекомендуется ограничить доступ к панели внутренней, либо VPN-сетью;
  • Сканировать систему на наличие уязвимостей: в этом помогут публичные рейтинги (например, OWASP Top 10), либо инструменты разработчика;
  • Использовать брандмауэр приложений: автоматизируйте проверку сетевого трафика и валидации запросов к портам и службам сервера;
  • Распределять трафик с помощью CDN: за счет распределенного хранения контента нагрузка на ресурсы сервера оптимизируется, что ускоряет обработку трафика и запросов;
  • Вести списки контроля доступа (ACL): для персонального ограничения доступа к сетевым узлам;
  • Очищать кэш DNS: для защиты от спуфинга;
  • Использовать защиту от спама: один из источников уязвимостей — формы обратной связи. Злоумышленники могут направить своих ботов массово заполнять их отправлять однотипные данные на сервер. Для фильтрации такого трафика формы нужно переводить на JS-компоненты или оснащать их капчами и другими инструментами проверки;
  • Использовать контратаку: вредоносный трафик можно перенаправить на сеть атакующего. В результате это не только сохранит доступность Вашего сервера, но и временно выведет злоумышленника из игры;
  • Использовать распределенное хранение и бэкапирование: в случае отказа одного или нескольких серверов Вашей сети Вы сможете возобновить работу ресурса на другой машине. К этому времени там уже будет развернута функциональная копия Вашего проекта;
  • Использовать аппаратные средства защиты от DDoS: Impletec iCore, DefensePro и пр.;
  • Тщательно выбирать хостинг-провайдера: необходимо выбирать поставщика, дающего гарантии защиты от всех современных угроз. Также немаловажно иметь круглосуточную линию поддержки, панель администратора с необходимыми инструментами аналитики по конкурентным условиям.

Защита DNS

Брандмауэры и системы предотвращения вторжений на серверы сами по себе уязвимы и рассчитывать только на их надежность не стоит.

Для TCP-трафика рекомендуется использовать облачные сервисы для фильтрации подозрительных запросов. Также рекомендуется:

  • Проводить мониторинг DNS: подозрительную сетевую активность можно отследить. Для этого рекомендуется использовать коммерческие DNS-решения, либо Open-source продукты (например, BIND). Вы сможете в режиме реального времени отслеживать сетевой трафик и запросы к DNS. Для экономии времени также рекомендуется построит базовый профиль сетевой инфраструктуры и обновлять его по мере масштабирования бизнеса;
  • Расширять аппаратные ресурсы DNS: компромиссное решение, позволяющее защитить инфраструктуру от мелкомасштабных атак. Закупка дополнительных мощностей также сопряжена и с вложениями;
  • Использовать DNS Response Rate Limiting (RRL): это снижает вероятность использования Вашего DNS-сервера в атаке DDoS Reflection. RRL снижает скорость обработки повторных запросов. Этот параметр поддерживается большинством DNS;
  • Строить конфигурации высокой доступности: DNS служба разворачивается на HA-сервере, что позволяет восстановить работу сервиса на резервной машине в случае если основная окажется недоступной.

Географически распределенная сеть также может послужить средством защиты от DDoS. Существует два подхода к построению такой сети:

  • Anycast: разные DNS серверы используют общий IP-адрес, а при обработке трафика запросы направляются на ближайший сервер. Такой подход, по сравнению с описанным ниже, является более оптимальным, поскольку трафик и нагрузки распределяются между несколькими машинами. Это делает инфраструктуру более устойчивой к DDoS;
  • Unicast: за каждым DNS-сервером закрепляется уникальный IP-адрес. Служба DNS поддерживает таблицу серверов и соответствующих им адресов ресурса. При обработке запросов для балансировки трафика и нагрузок IP-адрес выбирается в случайном порядке. Такой подход к организации DNS-сети проще в реализации, однако при этом страдает устойчивость инфраструктуры. Злоумышленники могут инициировать цепочку направленных атак на DNS-серверы, последовательно выводя их из строя.

Крупнейшие DDOS-атаки в истории

Впервые серьезное нападение произошло в 2000 году. Жертвами стали серверы и сайты eBay, Amazon, CNN и Yahoo. Виновником стала самописная программа, созданная 16-летним хакером-энтузиастом. Вредоносный алгоритм под названием Sinkhole зафлудил машины жертв и обрушил их.

Некогда популярный «Пинг смерти» использовал ping-команду для флуда. Для того, чтобы вызвать DDoS сервера, размер пакета искусственно увеличивался до 65535 байт. Пик популярности такой атаки приходится на 90-е годы — тогда в серверном ПО еще не была распространена проверка размера приходящих пакетов. В результате пропускной канал забивался и ресурс становился недоступным.

В 2013 году в результате конфликта между голландским хостинг-провайдером Cyberbunker и Spamhaus (организация занимается составлением списков спамеров) первые начали атаку на последних. Первый удар на себя приняла CDN CloudFlare, далее вредоносный трафик переключился на ее провайдеров. Нагрузка на канал составила 300 Гбит/с.

При атаке использовался метод DNS amplification. Суть метода — рассылка рекурсивных запросов с поддельными обратными адресами. При длине исходящего запроса в несколько байт ответный пакет может превышать несколько килобайт. При этом, для усиления эффекта ответный пакет направляется на сервер жертвы. Такой подход позволяет добиться большей эффективности, чем при использовании ботнет, поскольку в качестве «зомби»-компьютеров выступают не устройства с ограниченным каналом, а серверы.

В 2016 году была зафиксирована атака с нагрузкой на канал в 1 Тбит/с. Тем не менее, атакуемый ресурс устоял и смог отразить атаку.

Мы предлагаем комплексные решения для защиты Ваших интернет-ресурсов от DDoS:

  • Базовая защита: фильтрация трафика и защищенные IP-адреса. Подробнее о фильтрации — в нашей базе знаний;
  • Расширенная защита: анализ и очистка трафика на уровне протоколов приложений: HTTP, DNS, SIP и др.;
  • Балансировщик нагрузки: оптимальное использование ресурсов сервера, распределенные системы хранения и обработки запросов и пр.