Что же такое DDoS и как от него защититься? Аббревиатура DDoS - это сокращение от Distributed Denial of Service (распределенный отказ в обслуживании). Это когда несколько зараженных компьютеров (речь о тысячах) отправляют на сервер множество запросов, с которыми он, в последствии, не может совладать и обработать. Обычно цели злоумышленников являются сайты и серверы и необходимости их "падения".
Сразу скажу, что универсальных мер защиты нет, т.е. поставить что то с коробки и это работает - не существует. Всегда, при защите сервиса - нужен комплексный подход.
С ДДоС атаками владельцы серверов сталкиваются каждый день.
А вы знаете какие типы DDoS-атак бывает? Рассказываю:
Большинство всех атак имеют смешанный характер, отсюда и невозможность универсального решения. Я выделяю 1ый тип атак - по модели OSI, 2ой - по протоколам и 3ий по механизму воздействия.
Опишу основные атаки по протоколам:
Атака IP-Null
Если рассматривать технические стандарты всемирной сети, то заголовок IP-пакета содержит в себе сведения об используемом протоколе транспортного уровня в отведенном для него поле "Protocol". Злоумышленник устанавливает значение этого поля равным нулю. Этот прием позволяет отправлять пакеты в больших количествах, не беспокоясь, что они остановятся на границе с фаерволом или маршрутизатором.
SYN-флуд
Излюбленный хакерами вид атаки, который строится на алгоритме трехэтапного рукопожатия TCP. Злоумышленник генерирует пакеты с большой скоростью, которые запрашивают соединение с сервером, НО содержат поддельный адрес источника. Сервер посылает пакет в ответ, и ждет отклик, который не приходит, потому что адрес изначально был поддельный. Но сервер уже выделил память для установки сессии. А память ограничена. Таким образом, постепенно SYN-flood занимает всю память таблицы соединений и не может вовремя обработать легитимных клиентов или вовсе "ложится"
UDP-флуд
А этот тип атаки чем то похож на SYN-flood, но использует большое количество udp пакетов от различных IP-адресов. Эти фальсифицированные UDP-пакеты переполняют сетевое оборудование и провоцируют перегрузку интерфейсов. Они утилизируют всю полосу пропускания.
Флуд - это генерация и отправка большого количества неправильно сформированных сообщений. Цель же этого флуда - создать мощный поток запросов, который займет собой всю выделенную полосу пропускания атакуемого ресурса.
Ping of death
Этот метод атаки был широко распространен в середине 1990-х годов. Он относится к DoS атаке (атака с одного источника). Во всем мире принято так, что один пакет эхо запроса (ping) будет равен 64 байта ну и + 20 байт заголовка. А по стандарту IPv4 (RFC 791) - суммарный объем пакета не должен превышать 65535 байт. Таким образом, если приходит пакет, по объему превышающий эти показатели, возникают сбои переполнения памяти и система не может отправлять ответы вообще.
IPv6 тут кстати не очень поможет, у которой суммарный объем пакета может быть намного больше, потому что хакеры отправляют фрагменты искаженных пакетов и система жертвы у себя пытается их собрать, но при сборке размер пакета получается слишком большим, что ведет к переполнению памяти и сбою работы
А казалось бы, такой безобидный пинг :)
Атака медленными сессиями
Хакер устанавливает TCP сессию между жертвой и своим ботом. Когда сессия активна, ее удерживают открытой с помощью пакета, который оставляют без ответа. Такие действия начинают расходовать системные ресурсы. И сервер-жертва расходует все свои резервы на поддельные сессии с ботами.
Ботов у хакера может быть не десятки и не сотни. В декабре 2021 года был обнаружен крупнейший ботнет в истории интернета. С его помощью хакеры проводят DDoS-атаки мощностью более 1Тбит/с и длительностью несколько суток.
Едем далее. На очереди у меня классификация относительно модели OSI
1ый уровень - физический
Канал работает с данными типа "биты" передача двоичных данных. Собственно пропускаем этот уровень, потому что под атакой может быть только искусственное воздействие.
2ой уровень - канальный
Тут происходит присвоение уникальных идентификаторов сетевых адаптеров - MAC-адресов. Обмен данными между узлами в локальной сети. Данные формируются в специальные блоки - кадры - и передаются на физический уровень. Атака возможна на коммутатор, нагружаются с помощью MAC-флуда и выводят из строя все порты соединения.
Еще не устали? Дальше - больше и интереснее
3ий уровень - сетевой
На этом уровне начинается общение маршрутизаторов и коммутаторов, расположенных в разных сетях. Тут происходит преобразование мак адресов в сетевые адреса. Главная задача этих действий, это построить оптимальный путь для передачи между устройствами.
Злоумышленники научились использовать этот канал, взяв за основу ICMP-flood, чтобы перегрузить ICMP сообщениями целевую сеть. Необходимо это для перегрузки пропускной способности и ограничения числа запросов именно по ICMP протоколу, которое возможно обработать.
4ый уровень - транспортный
Он использует протоколы UDP и TCP, а также обрабатывает и транспортирует пакеты данных между узлами связи. Этот уровень контролирует поток информации и выявляет ошибки. В случае их обнаружения отправляет данные повторно. Тут можно увидеть CRC ошибки
В транспортном уровне хакеры создают условия, при которых превышаются пороговые значения по ширине канала и количеству доступных подключений. Самые распространенные типа DDoS-атак - Smurf и SYN-flood
Далее идут высокоуровневые атаки. В этих методах уже больше логики.
5-й уровень — сеансовый
Пятый уровень управляет взаимодействием между приложениями, а также устанавливает и завершает соединение, синхронизирует задачи операционной системы.
В пример можно привести слабые места программного обеспечения через протокол Telnet, что может привести к потере доступа над сервером у администратора.
6-й уровень — представления
Уровень кодирует/декодирует данные и адаптирует их для человека или машины, в понятном им виде. Сюда входят видеоданные, аудиоданные, изображения и текст. Между 6 и 7 уровнем модели OSI находится SSL-протокол. Он обеспечивает клиенту безопасное соединение с сервером и предоставляет возможность взаимной проверки подлинности.
Опять же, злоумышленниками будет использован флуд, но уже SSL пакетами. Эти пакеты генерируются в искаженном виде, и посланы в большом количестве. Таким образом тормозят ресурсы, так как проверка шифрованных SSL-пакетов занимает много времени.
7-й уровень — прикладной или уровень приложений
Это последний уровень и работает он уже целиком для пользователя, предоставляя ему данные в понятном виде.
Самый простой пример - это использование HTTP флуда. Хакер посылает запросы на подключение, на ввод логинов, на заказ товара, загрузку видео и т.д. В то же время, настоящие легитимные пользователи не могут попасть на сайт, так как он перегружен мусорными запросами.
В ботнете может быть устройства умного дома. Даже чайник, который кипятит воду с утра, может быть заражен, и в любой момент начать отдавать поддельные запросы по указанию хакера.
Классификация DDoS-атак по механизму действия
Первая группа - это атаки, направленные на переполнение канала связи, иными словами любимые хакерами различные типы флуда.
DNS-амплификация
У публичного DNS-сервера запрашивают данные о домене и направляют его ответ на атакуемый сервер. Запрос генерируется таким образом, чтобы в ответ вернулось как можно больше данных.
Фрагментированный UDP-флуд
Атакующий использует пакеты максимально допустимого размера, чтобы заполнить канал минимальным количеством пакетов. Фрагменты пакетов являются фальсифицированными и сервер-жертва тратит все ресурсы для того, чтобы восстанавливать несуществующие пакеты из фальшивых фрагментов.
ICMP-флуд
На сервер-жертву посылается большое количество поддельных ICMP-пакетов с широкого диапазона IP-адресов. Цель злоумышленника — заполнение канала сервера-жертвы потоком поддельных запросов.
NTP-амплификация
Атакующий многократно отправляет запрос monlist на NTP-сервер, одновременно подменяя свой IP-адрес на адрес сервера-жертвы. Ответ monlist может содержать список до 600 последних клиентов. Цель атаки — небольшим запросом отправить большой поток UDP-трафика на сервер-жертвы.
NTP-флуд
Хакер генерирует большое количество поддельных NTP-запросов с широкого диапазона IP-адресов. NTP-сервер пытается обработать все запросы, тем самым тратя системные и сетевые ресурсы.
Фрагментированный ACK-флуд
Используются пакеты максимально допустимого размера для заполнения полосы пропускания канала, при небольшом количестве передаваемых пакетов.
Ping-флуд
Разновидность ICMP-флуд, нацеленная на выведение из строя сервера, с помощью утилиты ping.
UDP-флуд с помощью ботнета
Алгоритм атаки схож с обычным UDP-флудом, за исключением одного — пакеты генерируются ботами. Системные ресурсы заполняют нецелевым трафиком и они выходят из строя.
VoIP-флуд
На сервер-жертву отправляют большое количество поддельных VoIP- пакетов с широкого диапазона IP-адресов. Сервер тратит все ресурсы, чтобы обработать как поддельные, так и легитимные запросы.
Флуд медиа-данными
Злоумышленник отправляет большое количество поддельных пакетов с видео- или аудио-данными на сервер-жертву. Сетевое оборудование вынуждено тратить вычислительные ресурсы на их обработку.
Атака широковещательными UDP-пакетами
Кибератака строится на отправке UDP-пакетов с подмененным IP-адресом, в расчете на то, что каждый из этих пакетов будет отправлен каждому из клиентов этой сети.
Фрагментированный ICMP-флуд
На сервер-жертву направляется поток фрагментированных ICMP-пакетов максимального размера. Полоса забивается мусорным трафиком, и возникает опасность исчерпания вычислительных ресурсов.
DNS-флуд
На атакуемый DNS-сервер направляется масса DNS-запросов с широкого диапазона IP-адресов. Сервер-жертва не может определить, какой из пакетов пришел от легитимного пользователя, а какой — нет, и вынужден отвечать на все запросы.
Группа атак, которые используют уязвимости стека сетевых протоколов
Атаки с модификацией поля TOS
Атакующий создает иллюзию перегруженности сети, и сервер самостоятельно ограничивает пропускную способность для подключений. Для этого хакеры используют поля TOS и ECN в IP-пакетах.
ACK-флуд
Злоумышленники отправляют на сервер-жертву фальсифицированные ACK-пакеты, не принадлежащие ни одной из сессий в списке соединений сервера. Атакуемый сервер не может определить принадлежность поддельных пакетов и выходит из строя.
RST, FIN-флуд
Сервер-жертва получает поддельные RST- или FIN-пакеты, не имеющие отношения ни к одной из сессий в базе данных сервера.
Атака поддельными TCP-сессиями с несколькими SYN-ACK
Хакер генерирует поддельные сессии несколькими SYN- и ACК-пакетами. Это позволяет обойти механизмы защиты и создать трафик, похожий на легитимный.
Атака с помощью перенаправления трафика высоконагруженных сервисов
Алгоритм заключается в перенаправлении трафика легитимных пользователей высоконагруженных приложений на сервер-жертву. Это ведет к сбою в работе из-за установки большого количества соединений.
Атака поддельными TCP-сессиями с несколькими ACK
Этот вариант атаки поддельной сессией выполняется несколькими SYN- и несколькими ACK-пакетами совместно с одним или более RST- или FIN-пакетами.
7ой уровень DDoS атак
HTTP-флуд
Злоумышленник генерирует большое количество запросов, направленных на сервер-жертву, чтобы вынудить его выделять как можно больше ресурсов для обработки вредоносного трафика.
Атака с целью отказа приложения
Специфичный вид атак, который нацелен на выявление уязвимостей в неоптимизированном сайте или приложении. С помощью SQL-инъекций хакер провоцирует зацикливание обращений и отказ всего сервера.
HTTP-флуд одиночными запросами
В отличие от обычного флуда, где злоумышленник атакует сервер-жертву потоком отдельных запросов, этот тип атаки предполагает отправку одного большого пакета, внутри которого одновременно передается 500-600 запросов.
Атака фрагментированными HTTP-пакетами
Алгоритм основан на отправке в адрес цели небольших
фрагментов данных, которые невозможно собрать в единый объект. При такой атаке устанавливается корректное HTTP-соединение с веб-сервером. Далее легитимные HTTP-пакеты разделяются на маленькие фрагменты, и их передают настолько медленно, насколько это позволяет тайм-аут сервера. Обходя таким образом срабатывание механизмов защиты, атакующий незаметно приводит веб-сервер к отказу с помощью вредоносных ботов.
HTTP-флуд одиночными сессиями
Атакующий превышает лимит сессий на стороне жертвы, чтобы беспрепятственно в рамках каждой HTTP-сессии отправлять множество запросов. Цель злоумышленника — заставить сервер выделить как можно больше ресурсов для обслуживания атаки.
Я привел примеры классических атак, с которыми сталкиваюсь каждый день. Есть конечно же и более изощренные виды. Я выделю их в отдельный блок
APT-атака
Эта атака проходит почти незаметно. Цель злоумышленника - найти на устройстве жертвы секретную или любую другую ценную информацию, которую можно использовать в своих целях. Поэтому я настоятельно не рекомендую использовать текстовик с паролями на рабочем столе, с именем "пароли" или "pass", потому что такие файлы парсятся даже без ручного участия хакера.
Тут в ход идет эксплуатация уязвимостей, использование социальной инженерии и другие техники обхода защиты. Хакер незаметно проникает в компьютерную сеть и изучает её длительное время, строя бэкдоры (возможность попасть на сервер жертвы без усилий), отслеживает действия пользователей и анализирует перемещение данных.
Многовекторная атака
Это вид атаки достаточно сложен в исполнении. Многовекторные DDoS-атаки направлены на несколько разных сетевых уровней и элементов инфраструктуры организации. Хакеры одновременно запускают атаки на сайт, сеть и инфраструктуру организаций, чтобы добиться максимально возможного разрушительного эффекта. Такие атаки невероятно опасны для организаций и несут огромные финансовые и репутационные риски
Атака нулевого дня
Злоумышленник исследует новые и ранее неизвестные уязвимости в программном обеспечении, а затем использует их против выбранной цели. Эта кибератака опасна тем, что с момента ее обнаружения до полного устранения и смягчения последствий может пройти много часов. Тем временем злоумышленник может получить несанкционированный доступ к информации или полностью заблокировать веб-ресурс. На текущий момент не существует универсальной защиты от атаки нулевого дня, и без помощи специалистов справиться с ней практически невозможно.
IP-спуфинг
В DDoS спуфинг (фальсификация данных) используется как механизм усиления кибератаки. Хакеры выдают себя за надежные источники, чтобы получить доступ к конфиденциальной информации. Подмена происходит в изменении адреса отправителя, чтобы скрыть настоящий адрес атакующего.
APDoS-атака
APDoS реализует 5-8 векторов атак одновременно. Злоумышленник использует «слепые зоны» атакуемой организации и нападает сразу на несколько уровней сетей.
MITM-атака
Злоумышленник перехватывает трафик и заменяет связь между двумя сторонами, которые считают, что общаются друг с другом без третьих лиц. Атаки особенно распространены в общедоступных сетях Wi-Fi. Например, жертва думает, что работает напрямую с сайтом, в то время как злоумышленник перехватывает все данные, которые были введены: пароль, логин и другие.
Наработки по защите от DDoS атак
На первом месте я бы поставил валидацию заголовков IP-пакета. Тут необходимо проверять заголовки пакетов ICMP, UDP и TCP на соответствие стандартам RFC. Соответственно сбрасывать, которые не соответствуют требованиям. В качестве дополнительной меры, можно сбрасывать пакеты, с параметрами которые не запрещены, но не встречаются в легитимном трафике. Примеры:
- Нулевой порт источника или назначения
- Значение ноль в поле Windows size TCP-сегмента
- Флаги SYN и SYN+ACK в TCP-сегменте с данными
- Флаг SYN в TCP-сегменте без опций
Далее эффективны инструменты по превышении частоты TCP-подключений.
Можно использовать ограничение как подсчет сессий от ip-адреса, так и в сторону адреса клиента. Соответственно либо сбрасывать при превышении, либо заносить во временный черный список адреса, чтоб не тратить ресурсы на анализ пакета.
Для некоторых клиентов львиную долю атаки можно отразить с помощью определения гео расположения атакующих адресов, так как много атак используется с помощью прокси серверов, расположенных заграницей. Достаточно сбрасывать весь входящий трафик не из РФ.
Минимизация зоны атаки
- Настроить firewall сервера. В политиках ни в коем случае нельзя оставлять настройки по дефолту. Важно закрыть все, кроме доверенных адресов и сетей.
- Скрыть все реальные IP-адреса инфраструктуры. Периодически их менять.
- По возможности отказаться от нешифрованного трафика. Перестать использовать HTTP и перейти на HTTPS. Это важно для безопасности в целом, но и от DDoS защищает — чтобы злоумышленники не смогли подсмотреть ваши пакеты и понять, как вы их формируете, чтобы потом подделать.
- Проверить бизнес-логику, чтобы понять, как и куда ваш легитимный клиент должен делать запросы. Так вы научитесь распознавать нелегитимные.
- Если на физическом сервере находится не один сервис, важно тщательно разграничить их по ресурсам. Чтобы упавший сервис не мог съесть все ресурсы и повредить другим сервисам.