[ Отказ в обслуживании ]

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


Виды DoS-атак

Существуют различные причины, по которым может возникнуть DoS-условие:

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

Недостаточная проверка данных пользователя, приводящая к бесконечному либо длительному циклу или повышенному 
длительному потреблению процессорных ресурсов (исчерпанию процессорных ресурсов) либо выделению большого объема 
оперативной памяти (исчерпанию памяти). Флуд (англ. flood) — атака, связанная с большим количеством обычно 
бессмысленных или сформированных в неправильном формате запросов к компьютерной системе или сетевому оборудованию, 
имеющая своей целью или приведшая к отказу в работе системы из-за исчерпания ресурсов системы — процессора, памяти 
либо каналов связи.

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

Если атака (обычно флуд) производится одновременно с большого количества IP-адресов, то в этом случае она называется 
распределённой атакой на отказ в обслуживании (DDoS).

Чтобы более детально разобраться в DoS-атаках, рассмотрим их наиболее известные разновидности. Выделяют пять наиболее 
популярных:

•TCP SYN Flood;
•TCP flood;
•Ping of Death;
•ICMP flood;
•UDP flood


TCP SYN Flood и TCP flood

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

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

Листинг
packet.ip.version=4; // Версия

packet.ip.ihl=5; // Длина заголовка

packet.ip.tos=0; // Тип сервиса

packet.ip.tot_len=htons(40); // Общая длина

packet.ip.id=getpid(); // Идентификатор

packet.ip.frag_off=0; // Смещение фрагмента

packet.ip.ttl=255; // Время жизни

packet.ip.protocol=IPPROTO_TCP; // Протокол

packet.ip.check=0; // Контрольная сумма

packet.ip.saddr=saddress; // Адрес источника

packet.ip.daddr=daddress; // Адрес назначения

TCP flood - это вид атаки, при котором потенциальной жертве отправляется множество TCP-пакетов, что приводит к 
связыванию системных ресурсов.

Следующие виды DoS-атак основаны на совершенно другом принципе. При помощи таких атак можно переполнить сеть или 
отдельно взятую мишень абсолютно бесполезными ping-пакетами. Для реализации следующих видов атаки достаточно нескольких 
строк кода. Итак, это атаки, основанные на протоколе ICMP:


Ping of Death и ICMP flood

Большое количество DoS-атак основывается на протоколе ICMP. Некоторые его функции могут быть полезны для создания 
нападений такого рода.

ICMP flood - это далеко не новый вид атаки, который, тем не менее, не теряет популярности. Здесь используется ping. 
Ping изначально задумывался для проверки качества соединения с удаленным компьютером. Принцип работы следующий: 
программа отсылает некое сообщение, на которое удаленный компьютер автоматически отвечает. Вроде бы все нормально. 
Однако при атаке используются большие (64 кБ), сильно фрагментированные ICMP-пакеты. При получении таких пакетов 
удаленная машина зависает.

Ping of Death основывается на ICMP flood, однако усиливает атаку за счет того, что ping-запросы пересылаются по адресу 
широковещательной рассылки. Используемый в пакетах запроса адрес - это адрес атакуемого сервера. Получившие такие 
"посылки смерти" системы отвечают на них и забивают жертву. Это очень серьезный вид атаки, который, правда, требует 
длительной подготовки. Требуется много "зомби", необходимо собрать достаточное количество информации о жертве и 
посредниках.


UDP flood

Это наиболее опасный вид атаки. UDP-сервис одной машины генерирует последовательность символов для каждого получаемого 
системой пакета. Делается это в целях тестирования. Далее связывается с echo-сервисом другой машины, которая повторяет 
эти символы. В результате, передается большое количество UDP-пакетов с подделанным IP источника. Основная проблема для 
защиты состоит в том, что протокол UDP не устанавливает соединения и нет никаких индикаторов состояния, чтобы помочь 
межсетевой защите выявить нападение. Чтобы с большей долей вероятности избежать такой атаки, нужно удалить все ненужные 
UDP-сервисы, а остальным сервисам использовать механизм прокси-сервера.


Обнаружение DoS-атак

Существует мнение, что специальные средства для обнаружения DoS-атак не требуются, поскольку факт DoS-атаки невозможно 
не заметить. Во многих случаях это действительно так. Однако достаточно часто отмечались успешные атаки, которые были 
замечены жертвами лишь через 2-3 суток. Бывало, что негативные последствия атаки (типа флуд) заключались в излишних 
расходах по оплате трафика, что выяснялось лишь при получении счёта. Кроме того, многие методы обнаружения атак 
неэффективны вблизи цели атаки, но эффективны на магистральной сети. В таком случае целесообразно ставить системы 
обнаружения именно там, а не дожидаться, пока пользователь, подвергшийся атаке, сам её заметит и обратится за помощью. 
К тому же, для эффективного противодействия необходимо знать тип, характер и другие показатели DoS-атаки, а оперативно 
получить эти сведения как раз и позволяют системы обнаружения.

Методы обнаружения можно разделить на несколько больших групп:

сигнатурные — основанные на качественном анализе трафика; статистические — основанные на количественном анализе трафика; 
гибридные — сочетающие в себе достоинства двух предыдущих методов. 


Защита от DoS-атак

Меры противодействия DoS-атакам можно разделить на пассивные и активные, а также на превентивные и реакционные.

Ниже приведён краткий перечень основных методов.

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


    * Фильтрация и блэкхолинг. Эффективность этих методов снижается по мере приближения к цели атаки и повышается по мере 
приближения к её источнику.


    * Устранение уязвимостей. Не работает против атак типа флуд, для которых «уязвимостью» является конечность тех или 
иных ресурсов.


    * Наращивание ресурсов.


    * Рассредоточение. Построение распределённых и продублированных систем, которые не прекратят обслуживать 
пользователей даже если некоторые их элементы станут недоступны из-за атаки.


    * Уклонение. Увод непосредственной цели атаки (доменного имени или IP-адреса) подальше от других ресурсов, 
которые часто также подвергаются воздействию вместе с непосредственной целью.


    * Активные ответные меры. Воздействие на источники, организатора или центр управления атакой. Меры могут быть как 
технического характера (не рекомендуется), так и организационно-правового характера.


(c) Pupkin-Zade