Что такое DDoS-атаки, как они устроены и почему от них сложно защититься
DDoS-атака напоминает толпу случайных зевак возле ресторана, которые никого не пускают и мешают работать. В вебе вместо ресторанов страдают серверы.
Иллюстрация: Оля Ежак для Skillbox Media
Главная опасность DDoS-атак в том, что их может организовать или заказать любой желающий. Стоимость атаки на незащищённый IP или сайт составляет от 90 долларов за 24 часа — это первый попавшийся тариф, который мы обнаружили за минуту гугления.
В этой статье мы обсудим природу DDoS-атак, их причины, вариации и перспективы. Взглянем на примеры атак и подумаем над доступными методами защиты.
Эксперт
Дмитрий Зайцев
CTO Flocktory, программный директор профессии «DevOps-инженер» в Skillbox, директор программного комитета DevOpsConf.
Содержание
Что такое DDoS-атаки и как они проходят
DDoS-атака (distributed denial of service, «распределённый отказ в обслуживании») — это попытка злоумышленников ограничить доступ пользователей к сайту, серверу или сети. Они атакуют цель вредоносными пакетами с множества устройств, перегружая его большими объёмами трафика. В результате сервис может временно прекратить работу, замедлиться или оставить часть пользовательских запросов без ответа.
Незащищённому ресурсу сложно предотвращать DDoS-атаки из-за их многопоточности и высокой скрытности. Многопоточность мешает быстро отсеять все вредоносные IP-адреса, а грамотное планирование нападения позволяет замаскировать начало атаки под естественный трафик.
Представьте ресторан, внутри и снаружи которого столпились случайные люди. Те, что снаружи, почти никого не пропускают внутрь. Люди внутри отвлекают всех официантов и персонал, но ничего не заказывают. Из-за этого все сотрудники ресторана заняты, но никто из них не обслуживает реальных клиентов. Так может продолжаться до тех пор, пока ресторан не закроется или фейковые посетители сами не уйдут. Подобная ситуация может повториться, если владельцы ресторана не примут меры.
Для DDoS-атаки нужен главный компьютер, компьютеры-зомби и цель. С главного компьютера злоумышленник подаёт сигнал компьютерам-зомби, которые перегружают выбранную цель и пытаются вывести её из строя.
Сеть компьютеров-зомби ещё называют ботнетом. Это различные устройства, которые из-за уязвимости были заражены вирусом злоумышленника (контроллером ботнета). В список могут попадать любые гаджеты, подключённые к интернету: ноутбуки, смартфоны, планшеты, серверы, устройства интернета вещей (IoT), а также все умные домашние гаджеты.
Большинство устройств участвуют в DDoS-атаках ненамеренно. Даже не исключено, что ваша умная кофеварка взламывает по ночам чей-то сайт.
Самое нелогичное звено в DDoS-атаках — это люди, которые их заказывают или проводят. Кто-то делает это ради развлечения или самоутверждения, просто потому, что может. Ещё для кого-то это способ расквитаться с конкурентами. Немало и тех, кто превратил шантаж и вымогательство в полноценный бизнес. Какова бы ни была причина, распространение вредоносных программ является преступлением, за которое можно получить до семи лет заключения по статье 273 УК РФ.
Виды DDoS-атак
Злоумышленники могут создавать избыточную нагрузку на систему с помощью разных запросов, пакетов и действий. Поэтому есть множество видов DDoS-атак, которые можно классифицировать по трём основным категориям: атаки на сетевой, транспортный и прикладной уровень OSI.
Модель OSI — это стандартный набор правил и протоколов, с помощью которых компьютеры и другие устройства в сети обмениваются данными. Она включает семь уровней, каждый из которых обеспечивает определённые аспекты передачи информации: от физического подключения до прикладных приложений. Такая организация позволяет устройствам эффективно и безопасно взаимодействовать между собой.
Сетевой уровень предназначен для передачи данных между сетями. Он работает с IP-адресами и отвечает за маршрутизацию пакетов данных от отправителя к получателю через интернет. На этом уровне DDoS-атаки направлены на перегрузку сетевой инфраструктуры, такой как роутеры или маршрутизаторы интернет-провайдеров.
Допустим, в качестве вектора атаки злоумышленник выбрал UDP-флуд. В этом случае он попытается исчерпать пропускную способность сервера за счёт множества UDP-пакетов. Все эти пакеты будут проходить через маршрутизатор, который должен будет их обработать и перенаправлять.
Маршрутизатор использует собственный процессор и память, которые при большом количестве входящих UDP-пакетов быстро исчерпываются. Это приводит к задержкам, замедлению работы сети или потере связи. В результате трафик не может нормально проходить через маршрутизатор.
Транспортный уровень отвечает за передачу данных между устройствами и обеспечивает их доставку без ошибок и повреждений. На транспортном уровне есть два основных протокола: TCP и UDP.
DDoS-атаки на транспортном уровне направлены на исчерпание ресурсов сервера, например памяти или процессорного времени. Возьмём вектор атаки SYN-флуд. В этом случае злоумышленник будет воздействовать на протокол TCP, который использует трёхэтапный процесс рукопожатия:
- Клиент отправляет SYN-пакет, инициируя запрос на соединение.
- Сервер подтверждает запрос и отвечает клиенту SYN-ACK-пакетом.
- Клиент отправляет ACK-пакет и подтверждает соединение.
Злоумышленник отправит на сервер множество SYN-запросов, но не будет подтверждать для них установку соединения. Сервер выделит память под каждый запрос и будет ожидать завершения соединения. Но завершения не будет. В итоге из-за большого количества незавершённых соединений сервер истощит свои ресурсы и не сможет обрабатывать новые запросы.
Прикладной уровень отвечает за взаимодействие пользователей с сетевыми сервисами: сайтами, электронной почтой, банк-клиентами и другими интернет-приложениями. Например, здесь осуществляется управление данными пользователей, включая процессы аутентификации, авторизации, поддержки активной сессии и последующее её завершение. Основные протоколы прикладного уровня: HTTP, HTTPS, SMTP и FTP.
DDoS-атаки на прикладном уровне направлены на истощение ресурсов конкретных сервисов. Например, злоумышленники могут попытаться перегрузить сайт, заставив его обрабатывать огромное количество HTTP-запросов. Такой вектор атаки называется HTTP-флуд.
С точки зрения формата флуд-запросы выглядят вполне легитимно, однако из-за их чрезмерного количества сервер перегружается и не справляется с нагрузкой. Из-за этого запросы реальных пользователей также не обрабатываются и они не могут получить доступ к сайту.
Если вас интересует архитектура DDoS-атак, рекомендуем сайт компании Netscout. На нём вы найдёте описание популярных векторов и методов атак, а также карту всех отслеживаемых DDoS-атак в реальном времени.
Как защититься от DDoS-атак
Для защиты от DDoS-атак необходима комплексная защита и в этом разделе мы обсудим, как её организовать. Рассмотрим общие рекомендации и сервисы, которые вы можете попробовать использовать.
Для начала вы можете настроить сетевые фильтры (firewalls) и ограничить количество запросов с одного IP-адреса. Фильтры будут проверять данные и блокировать те, которые не соответствуют заданным правилам. Правила блокировки подозрительных IP-адресов можно настроить самостоятельно.
На следующем шаге можно настроить сайт для работы с CDN, подключить мониторинг трафика и добавить резервные серверы на случай перегрузки:
- CDN позволит распределить нагрузку между несколькими серверами по всему миру.
- За счёт регулярного отслеживания сетевого трафика вы сможете выявлять подозрительные активности на ранних стадиях и принимать меры до того, как атака станет критической.
- На крайний случай у вас будут резервные серверы, на которые можно перенаправить трафик и сохранить доступность ресурса.
Теперь давайте рассмотрим популярные программы и сервисы, которые помогут реализовать перечисленные шаги для защиты от DDoS-атак.
- Cloudflare. Анализирует и фильтрует трафик, блокирует вредоносные запросы до их атаки на ваш сервер.
- Akamai. Распределяет нагрузку и блокирует атаки, используя глобальную сеть серверов.
- AWS Shield. Защищает веб-приложения и инфраструктуру AWS от DDoS-атак, автоматически обнаруживает вредоносный трафик.
- Google Cloud Armor. Обеспечивает защиту веб-приложений и служб Google Cloud от различных сетевых угроз. Использует свою глобальную сеть для фильтрации и блокировки нежелательного трафика.
- Imperva Incapsula. Всесторонняя защита от ботов, DDoS-атак и других угроз. Предлагает CDN для высокой доступности контента.
- Sucuri. Защищает от атак, обнаруживает и удаляет вредоносный код, обеспечивает мониторинг безопасности и восстановление после инцидентов. Подходит для WordPress и других популярных CMS.
- Radware. Защищает веб-приложения и сетевую инфраструктуру с помощью интеллектуальных алгоритмов, которые способны обнаруживать и смягчать угрозы в режиме реального времени.
- ModSecurity. Это веб-приложение, которое выполняет роль брандмауэра: оно умеет обнаруживать и предотвращать атаки, блокировать подозрительный трафик. Устанавливается на сервер.
- Fail2Ban. Это система для предотвращения вторжений, которая умеет сканировать логи и блокировать вредоносные IP-адреса.
- HAProxy. Это высокопроизводительный балансировщик нагрузки, защищающий от атак путём распределения и фильтрации трафика.
- Nginx. Лимитирует количество запросов и балансирует нагрузку.
- pfSense. Позволяет управлять фильтрами и маршрутизаторами.
- Snort. Система обнаружения вторжений и предотвращения атак.
- Kaspersky DDoS Protection. Комплексная система защиты для выявления и нейтрализации массовых DDoS-атак любой сложности.
- Netdata. Инструмент мониторинга, позволяющий отслеживать производительность и трафик вашего сервера в реальном времени. Позволяет настроить оповещения о подозрительной активности.
- Graylog. Платформа для анализа и мониторинга логов, обнаружения аномалий. Предупреждает в случае подозрительной активности.
Ещё добавим несколько полезных WordPress-плагинов для вашего сайта:
- Wordfence Security. Это один из самых популярных плагинов безопасности для WordPress. Он защищает от DDoS-атак, проводит веб-сканирование на наличие уязвимостей, блокирует вредоносные IP-адреса и предоставляет брандмауэр на уровне веб-приложений.
- Sucuri Security. Мониторит целостность файлов, ищет вредоносные программы и обеспечивает защиту с помощью брандмауэра.
- Jetpack. Многофункциональный плагин от разработчиков WordPress.com. Защищает от DDoS-атак, проводит мониторинг безопасности, организовывает автоматическое резервное копирование и сканирование на наличие вредоносных программ.
- All In One WP Security & Firewall. Комплексный плагин для улучшения безопасности WordPress. Он включает брандмауэр, блокирует IP-адреса, проводит мониторинг и защищает базы данных.
- Cloudflare. Это плагин для интеграции сайта с сервисом Cloudflare. Он защищает от сетевых угроз, улучшает производительность, предоставляет SSL-сертификаты и кэширование.
- Solid Security. Популярный плагин для защиты WordPress с множеством функций. Среди основных: двухфакторная аутентификация, мониторинг файловой системы, брандмауэр.
- WP fail2ban. Плагин для интеграции WordPress с системой Fail2Ban. Фиксирует попытки вторжения в систему и блокирует IP-адреса.
Читайте также:
Старайтесь использовать последние версии программного обеспечения и регулярно обновляться. Если возможно, настройте автоматические обновления. Так вы будете защищены от новых видов атак и уязвимостей.
Примеры DDoS-атак
Несмотря на меры предосторожности, защититься от DDoS-атак сложно и не всегда удаётся даже крупным компаниям с огромными бюджетами на безопасность. Посмотрим на примеры подобных атак и их последствия.
В 2000 году 15-летний школьник под псевдонимом Mafiaboy нанёс удар нескольким крупным компаниям: CNN, Dell, E-Trade, eBay, Amazon и Yahoo.
Настоящее имя хакера — Майкл Калс. Он запустил проект Rivolta, что в переводе с итальянского означает «восстание». Майкл вторгся в компьютерные сети нескольких университетов, создал из них ботнет и направил трафик на ресурсы компаний. Атака длилась восемь дней.
Действия Калса привели к хаосу на фондовом рынке, аналитики оценивают ущерб в 1,2 млрд долларов. Атака была настолько масштабной, что для её остановки потребовалась команда экспертов и саммит по безопасности в Белом доме, который пришлось созывать президенту Биллу Клинтону.
Сегодня Майкл Калс белый хакер — помогает компаниям выявлять недостатки безопасности в своих системах и организовывать защиту. О своей истории взлома он написал книгу, которая продаётся на Amazon.
В феврале 2018 года на сервис GitHub подвергся одной из мощнейших DDoS-атак в истории. Атака длилась около 20 минут, достигла объёма трафика в 1,35 Тбит/с и совершена методом memcached-амплификации.
Злоумышленники отправляли небольшие запросы на серверы Memcached, подделывали IP-адреса, провоцировали сервер реагировать на запросы и за счёт этого значительно нарастили объём трафика для атаки на GitHub.
Для отражения атаки команда GitHub перераспределила нагрузку и направила избыточный трафик через сервис Akamai Prolexic. В результате GitHub был недоступен с 17:21 до 17:26 и частично зависал с 17:26 до 17:30.
Эта атака не принесла значительного ущерба, но стала напоминанием для компаний о необходимости постоянного улучшения систем безопасности.
Читайте также:
В октябре 2016 года хакеры провели масштабную DDoS-атаку на компанию Dyn, управляющую DNS-инфраструктурой. В результате многие популярные сайты оказались недоступными, включая Twitter, Reddit, Netflix и другие. Атака осуществлена с использованием ботнета Mirai, который контролировал тысячи устройств интернета вещей.
Атака проходила в несколько этапов. Первая волна началась в 11:10 и затронула восточное побережье США. Вторая волна началась в 17:00 и затронула центральные и западные регионы США. Атака вызвала значительные перебои в работе множества сайтов и сервисов, так как пользователи не могли разрешить DNS-запросы для этих доменов.
Компания Dyn сотрудничала с интернет-провайдерами и службами защиты от DDoS для снижения объёма трафика. Некоторым компаниям удалось временно переключить сайты на резервные DNS-провайдеры. Однако многие из них понесли потери из-за прерывания дохода от рекламы, подписок и других форм монетизации. Ещё часть компаний выплачивала компенсации своим клиентам за причинённые неудобства.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!