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

Обнаружение DDoS нападения
DDoS нападение распознать просто – замедление работы сети и серверов, заметное как администратору системы, так и обычному пользователю. Первым шагом в нашей защите мы должны идентифицировать тип трафика, который загружает нашу сеть. Большинство нападений DDoS посылает очень определенный тип трафика - ICMP, UDP, TCP, часто с поддельными IP адресами. Нападение обычно характеризует необычно большое количество пакетов некоторого типа. Исключением к этому правилу являются DDoS нападения, направленные против определенных служб, типа HTTP, используя допустимый трафик и запросы.
Чтобы идентифицировать и изучить пакеты, мы должны анализировать сетевой трафик. Это можно сделать двумя различными методами в зависимости от того, где исследуется трафик. Первый метод может использоваться на машине, которая расположена в атакуемой сети. Tcpdump - популярный сниффер, который хорошо подойдет для наших целей. Анализ трафика в реальном масштабе времени невозможен на перегруженной сети, так что мы будем использовать опцию "-w", чтобы записать данные в файл. Затем, используя инструмент типа tcpdstat или tcptrace, мы проанализируем результаты. Результаты работы tcpdstat, на нашем tcpdump файле:

DumpFile: test
FileSize: 0.01MB
Id: 200212270001
StartTime: Fri Dec 27 00:01:51 2002
EndTime: Fri Dec 27 00:02:15 2002
TotalTime: 23.52 seconds
TotalCapSize: 0.01MB CapLen: 96 bytes
# of packets: 147 (12.47KB)
AvgRate: 5.56Kbps stddev:5.40K PeakRate: 25.67Kbps

IP flow (unique src/dst pair) Information
# of flows: 9 (avg. 16.33 pkts/flow)
Top 10 big flow size (bytes/total in %):
26.6% 16.5% 14.7% 11.6% 9.8% 7.6% 5.4% 5.4% 2.5%

IP address Information
# of IPv4 addresses: 7
Top 10 bandwidth usage (bytes/total in %):
97.5% 34.1% 31.2% 21.4% 10.7% 2.5% 2.5%
Packet Size Distribution (including MAC headers)
<<<<
[ 32- 63]: 79
[ 64- 127]: 53
[ 128- 255]: 8
[ 256- 511]: 6
[ 512- 1023]: 1
>>>>

Protocol Breakdown
<<<<
protocol packets bytes bytes/pkt
------------------------------------------------------------------------
[0] total 147 (100.00%) 12769 (100.00%) 86.86
[1] ip 147 (100.00%) 12769 (100.00%) 86.86
[2] tcp 107 ( 72.79%) 6724 ( 52.66%) 62.84
[3] telnet 66 ( 44.90%) 3988 ( 31.23%) 60.42
[3] pop3 41 ( 27.89%) 2736 ( 21.43%) 66.73
[2] udp 26 ( 17.69%) 4673 ( 36.60%) 179.73
[3] dns 24 ( 16.33%) 4360 ( 34.15%) 181.67
[3] other 2 ( 1.36%) 313 ( 2.45%) 156.50
[2] icmp 14 ( 9.52%) 1372 ( 10.74%) 98.00

Как видно, эти простые утилиты могут быстро помочь определить тип преобладающего трафика в сети. Они позволяют сэкономить много времени, анализируя и обрабатывая зафиксированные пакеты.
Для контроля входящего трафика может использоваться маршрутизатор. С помощью списков ограничения доступа, маршрутизатор может служить основным пакетным фильтром. Скорее всего он также служит шлюзом между вашей сетью и интернетом. Следующий пример от Cisco иллюстрирует очень простой способ использовать списки доступа, чтобы контролировать входящий трафик:

access-list 169 permit icmp any any echo
access-list 169 permit icmp any any echo-reply
access-list 169 permit udp any any eq echo
access-list 169 permit udp any eq echo any
access-list 169 permit tcp any any established
access-list 169 permit tcp any any
access-list 169 permit ip any any
interface serial 0
ip access-group 169 in

Используя команду "show access-list", система покажет количество совпавших пакетов для каждого типа трафика:
Extended IP access list 169
permit icmp any any echo (2 matches)
permit icmp any any echo-reply (21374 matches)
permit udp any any eq echo
permit udp any eq echo any
permit tcp any any established (150 matches)
permit tcp any any (15 matches)
permit ip any any (45 matches)

Результаты просты, но эффективны – обратите внимание на высокое число ICMP echo-reply пакетов. Подробная информация может быть собрана о подозреваемых пакетах, добавляя в конец команду "log-input" к специфическому правилу. Это правило будет регистрировать информацию о любом ICMP трафике:
access-list 169 permit icmp any any echo-reply log-input

Маршрутизатор теперь более подробно регистрирует собранные данные (которые можно посмотреть используя "show log") о соответствующих пакетах. В пример ниже, файл регистрации показывает несколько пакетов, соответствующих правилу DENY ICMP:
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 192.168.45.142 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 192.168.45.113 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 192.168.212.72 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 172.16.132.154 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 192.168.45.15 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 192.168.45.142 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 172.16.132.47 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 192.168.212.35 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 192.168.45.113 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 172.16.132.59 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 192.168.45.82 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 192.168.212.56 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 172.16.132.84 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 192.168.212.47 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 192.168.45.35 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 192.168.212.15 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet
%SEC-6-IPACCESSLOGDP: list 169 denied icmp 172.16.132.33 (Serial0 *HDLC*) -> 10.2.3.7 (0/0), 1 packet

Обратите внимание на информацию, содержавшуюся в каждой строке: источник и адрес назначения, интерфейс и правило, которому оно соответствует. Этот тип детальной информации поможет определить нашу защиту.

Реакция
После того, как мы идентифицировали подозреваемый трафик, пришло время исследовать, как нам ответить на нападение. К сожалению, варианты несколько ограничены, потому что большинство DDoS нападений использует поддельные исходные IP адреса, которые вероятно сгенерированы случайным образом. Так что же нам делать?
Отслеживаем источник атаки
Первое, что приходит в голову, это попытаться "проследить" источник атаки. Однако DDoS, в отличие от традиционного DoS, исходит из множественных источников. Поэтому неплохо было бы определить транзитный маршрутизатор, через который проходят большинство пакетов. К сожалению, для этого потребуется сотрудничать с несколькими источниками, так как вы не способны исследовать пакеты на вышестоящих маршрутизаторах. Каждый участник процесса (главным образом ISP провайдеры) будут использовать очень похожие методы. Идентифицировав злонамеренный тип трафика, используя вышеописанные методы, будет создан новый список ограничения доступа. Добавив его к правилам, которые применены к интерфейсу, который посылает трафик атакуемому адресату, мы снова используем команду "log-input". Регистрация подробно запишет информацию об исходном интерфейсе и MAC адресе источника атаки. Эти данные могут использоваться, чтобы определить IP адрес маршрутизатора, отправляющего злонамеренный трафик. Процесс будет повторен на следующем маршрутизаторе в цепочке. После нескольких итераций, источник (или один из них) будет обнаружен. Тогда можно создать соответствующий фильтр, который заблокирует атакующего. Недостаток в этом методе защиты от DDoS нападения – время и сложность. Получение таких данных требует работы с несколькими сторонами, и иногда использование правового принуждения.
Ограничение допустимого предела (“rate limit”)
Лучший способ немедленной помощи, доступный большинству ISP провайдеров, должно быть “ограничение допустимого предела” злонамеренного типа трафика. Ограничение допустимого предела ограничивает пропускную способность, которую определенный тип трафика может потреблять в данный момент времени. Это может быть достигнуто, удаляя полученные пакеты, когда превышен некоторый порог. Полезно, когда определенный пакет используется в нападении. Cisco предлагает способ, который позволяет ограничить ICMP пакеты, используемые в нападении:
interface xy
rate-limit output access-group 2020 3000000 512000 786000 conform-action
transmit exceed-action drop
access-list 2020 permit icmp any any echo-reply

Этот пример поднимает интересную проблему, которая была отмечена ранее. Что, если злонамеренный трафик полностью законный? Например, ограничение SYN flood, направленное на Web сервер, отклонит и хороший и плохой трафик, так как все законные подключения требуют начального установления связи. Это трудная проблема, не имеющая простого ответа. Нельзя просто защитится от таких типов хитрых DDoS нападений, не принося в жертву часть законного трафика.
Фильтрация черной дыры
ISP провайдеры могут использовать другие способы защиты, которые зависят от изменения маршрутизации, типа фильтрации “черных дыр”. “Black hole” фильтрация отправляет злонамеренный трафик к воображаемому интерфейсу, известному как Null0 – подобный /dev/null на Unix машинах. Так как Null0 - не существующий интерфейс, трафик, направленный к Null0, по существу удаляется. Кроме того, эта методика минимизирует воздействие производительности, так как остальная часть сети остается устойчивой при тяжелых загрузках.
Важно отметить, что адресная фильтрация - не лучший способ защиты против DDoS нападений. Даже если вы заблокировали нападение на своем маршрутизаторе или межсетевой защите – все еще большие порции входящего трафика могут затруднить прохождение законного трафика. Чтобы действительно облегчить эффект от DDoS нападения, трафик должен быть блокирован в вышестоящей цепочке – вероятно на устройстве, управляемом большим провайдером. Это означает, что многие из программ, которые утверждают, что предотвращают DDoS нападения, в конечном счете, бесполезны для маленьких сетей и их конечных пользователей. Кроме того, это означает, что предотвращение DDoS нападения, в некоторый момент, не зависит от нас. Это печальная правда, понятная любому, кто когда-либо имел дело с проблемой.

Предотвращение
Если вы удачно защитились от DDoS нападения, удостоверьтесь, что вы используете следующие предосторожности, которые будут препятствовать вашей собственной сети участвовать в DDoS нападениях.
Нужно включить команду "ip verify unicast reverse-path" (или не Cisco эквивалент) на входном интерфейсе подключения восходящего потока данных. Эта особенность удаляет поддельные пакеты, главную трудность в защите от DDoS нападений, прежде, чем они будут отправлены. Дополнительно, удостоверьтесь, что блокирован входящий трафик с исходными адресами из зарезервированных диапазонов (то есть, 192.168.0.0). Этот фильтр удалит пакеты, источники которых очевидно неправильны.

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

Наконец важно составить точный план мероприятий ПРЕЖДЕ чем, произошло нападение.

Источник: www.securitylab.ru