Попасть под воздействие DDoS атаки – кошмарный сценарий для любого системного администратора, специалиста по безопасности или поставщика доступа. Обычно атака начинается мгновенно и без предупреждения и не прекращается со временем – система не отвечает, канал заблокирован, маршрутизаторы перегружены. Эффективный и быстрый ответ на нападение затруднителен и часто зависит от третих лиц, типа ISP провайдеров. В этой статье исследуется методы, которые должны использовать системные администраторы, если они когда-либо оказались в этой, довольно нежелательной, ситуации.
Чтобы идентифицировать и изучить пакеты, мы должны анализировать сетевой трафик. Это можно сделать двумя различными методами в зависимости от того, где исследуется трафик. Первый метод может использоваться на машине, которая расположена в атакуемой сети. 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Используя команду "show access-list", система покажет количество совпавших пакетов для каждого типа трафика:
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
Extended IP access list 169Результаты просты, но эффективны – обратите внимание на высокое число ICMP echo-reply пакетов. Подробная информация может быть собрана о подозреваемых пакетах, добавляя в конец команду "log-input" к специфическому правилу. Это правило будет регистрировать информацию о любом ICMP трафике:
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)
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
interface xyЭтот пример поднимает интересную проблему, которая была отмечена ранее. Что, если злонамеренный трафик полностью законный? Например, ограничение SYN flood, направленное на Web сервер, отклонит и хороший и плохой трафик, так как все законные подключения требуют начального установления связи. Это трудная проблема, не имеющая простого ответа. Нельзя просто защитится от таких типов хитрых DDoS нападений, не принося в жертву часть законного трафика.
rate-limit output access-group 2020 3000000 512000 786000 conform-action
transmit exceed-action drop
access-list 2020 permit icmp any any echo-reply
Важно отметить, что адресная фильтрация - не лучший способ защиты против DDoS нападений. Даже если вы заблокировали нападение на своем маршрутизаторе или межсетевой защите – все еще большие порции входящего трафика могут затруднить прохождение законного трафика. Чтобы действительно облегчить эффект от DDoS нападения, трафик должен быть блокирован в вышестоящей цепочке – вероятно на устройстве, управляемом большим провайдером. Это означает, что многие из программ, которые утверждают, что предотвращают DDoS нападения, в конечном счете, бесполезны для маленьких сетей и их конечных пользователей. Кроме того, это означает, что предотвращение DDoS нападения, в некоторый момент, не зависит от нас.Это печальная правда, понятная любому, кто когда-либо имел дело с проблемой.
Нужно включить команду "ip verify unicast reverse-path" (или не Cisco эквивалент) на входном интерфейсе подключения восходящего потока данных. Эта особенность удаляет поддельные пакеты, главную трудность в защите от DDoS нападений, прежде, чем они будут отправлены. Дополнительно, удостоверьтесь, что блокирован входящий трафик с исходными адресами из зарезервированных диапазонов (то есть, 192.168.0.0). Этот фильтр удалит пакеты, источники которых очевидно неправильны.
Входящие и исходящие методы фильтрации, также критичны для предотвращения DDoS нападений. Эти простые списки ограничения доступа, если внедрены всеми ISP провайдерами и большими сетями, могли бы устранить пересылку поддельных пакетов в общедоступный интернет, сокращая тем самым время, требуемое для розыска атакующего. Фильтры, помещенные в граничные маршрутизаторы, гарантируют, что входящий трафик не имеет исходного адреса, происходящего из частной сети и что еще более важно, что трафик на пересекающихся курсах действительно имеет адрес, происходящий из внутренней сети. RFC2267 - большой основа для таких методов фильтрации.
Наконец важно составить точный план мероприятий ПРЕЖДЕ чем, произошло нападение.