Блог A1QA

О тестировании и качестве ПО

DDoS/DoS атаки как угроза web-безопасности

О DDoS/DoS-атаках в наше время не слышал только ленивый. О них пишут в Интернете и говорят на телевидении.  Увидеть результат таких действий может каждый,  когда за завтраком откроет любимый новостной сайт или ленту в социальной сети, а вместо последних событий или свежей порции лайков от друзей, увидит сообщение о недоступности сервиса.  Что такое DDoS/DoS-атака и какие типы атак выделяют?

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

Проводя DDoS/DoS – атаки злоумышленники преследуют следующие цели:

  • политический протест
  • нечестная конкуренция
  • шантаж
  • личная неприязнь

Первая атака типа «Отказ в обслуживании» была зарегистрирована в сентябре 1996, и в том же месяце (19 сентября) вышел первый информационный бюллетень об атаках на отказ в обслуживании от Компьютерной группы быстрого реагирования на инциденты информационной безопасности университета Карнеги-Меллон. А в 1999-2000 годах о существовании таких атак узнала широкая общественность, когда один за другим «обвалились» крупнейшие американские порталы, такие как Ebay, Amazon и Yahoo.

Следующий «взлёт» популярности DDoS-атак пришелся на 2010 год. Они стали использоваться для политических протестов. «Взлёт» ознаменовался атаками на крупнейшие системы электронной коммерции, такие как PayPal, Visa, MasterCard. Ну и в последние годы DDoS-атаки наращивают мощности. В 2013 была проведена атака мощностью в 300 гбит/c, а в текущем году рекорд был побит атакой в 400 гбит/c.

Под капотом DoS-атаки

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

  1. Атаки на сетевое подключение сервера.
  2. Атаки на процессорное время сервера.
  3. Атаки на память сервера.

Цель атак на сетевое подключение – ширина канала сервера. Используя ботнет или уязвимые сервера в сети Интернет, злоумышленник может сгенерировать огромный поток паразитного трафика в направлении цели. Такую атаку можно сравнить с автомобильной пробкой на шоссе, по которому пытается проехать скорая помощь. В качестве скорой помощи соответственно выступают соединения от легитимных клиентов. Например, схема работы атаки с использованием уязвимых DNS-серверов, которые в состоянии усиливать трафик в 50 раз по сравнению с первоначальным запросом.

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

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

Ярким примером атаки на процессорное время является атака SSL Renegatiation DoS. В ходе такой атаки клиент многократно осуществляет попытку соединения с сервером по протоколу SSL. Со стороны сервера на это действие затрачивается в 15 раз больше процессорной мощности, чем со стороны клиента. Защитой от подобных атак является отключение механизма SSL Renegatiation. Атаки на процессорное время очень опасны для любых сервисов, так как не требуют от злоумышленника больших затрат, а урон могут нанести серьёзный. Наилучшей защитой от такого рода атак является специальное программное обеспечение, устанавливаемое на сервер, фильтрующее потенциально опасные запросы.

Цель атаки на память – заполнить всю оперативную память или весь жесткий диск, или очень критичную область памяти. В результате сервер оказывается недоступен. Классической атакой такого вида является TCP SYN flood, задачей которой является исчерпание лимита возможности подключения к серверу путем создания множества полуоткрытых соединений.

Атакующий отправляет множество TCP-сегментов с установленным флагом SYN. Для борьбы необходима правильная настройка сервера, при которой информация о новом соединении будет храниться не в памяти сервера, а в ответе сервера, который должен получить инициатор соединения.

При получении ответа от клиента сервер проверяет наличие этой информации в пакете. Такая технология называется syncookies. Она извлекает ip – адрес и порт из пришедшего пакета, преобразует эти данные и представляет в виде чисел, а затем вставляет их в поле Sequence number ответного пакета. Если пользователь легитимный, то в ответе будет Sequence Number +1. В противном случае ответа нет, но это соединение не сохранено и не будет загружать память.

Атака TCP FIN flood схожа с SYN flood лишь c той разницей, что она создает множество полузакрытых соединений. В этом случае соединение создается, а затем отправляется TCP-сегмент с флагом FIN для завершения соединения. Сервер отвечает сегментом с флагом FIN + ACK и ждет нашего подтверждения. А мы подтверждение не отправляем. В результате память загружается. Исправлением для такой уязвимости является патч от производителя.

Несколько по иному принципу работают «медленные» атаки на протокол HTTP. Наиболее подвержен им web-сервер Apache. Суть действий злоумышленника заключается в следующем: атакующий подключается к серверу и начинает медленно принимать или отправлять данные. Для отказа в обслуживании создается множество таких соединений. В результате память сервера становится перегруженной из-за огромного количества созданных потоков сервера Apache.

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

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

Поделиться статьей: