Атаки DDoS – это оружие массового поражения. В отличие от атак доступа, которые проникают по периметру систем защиты с целью кражи информации, атаки DDoS парализуют Интернет-системы, наводняя серверы, сетевые каналы связи и сетевые устройства (маршрутизаторы, межсетевые экраны и т.д.) фальсифицированным трафиком.
Полнофункциональная защита от атак DDoS строится на четырех принципах:
- Устранение, а не только подавление.
- Точное разграничение благонадежного трафика и злоумышленного трафика, которое позволяет не только выявить присутствие атаки, но и обеспечить устойчивую работу без прерывания деловой активности.
- Особые функциональные характеристики и архитектура, развертываемая на предшествующем отрезке маршрута трафика для защиты всех уязвимых точек.
- Обеспечение надежной и рентабельной масштабируемости.
Оборонительные характеристики защиты от атак DDoS, которая простроена на этих принципах:
- Мгновенный отклик на атаки DDoS с применением встроенных механизмов выявления и блокировки, даже в случае атаки со спуфингом, когда происходит непрерывное изменение идентификационных параметров и профилей хакеров.
- Более полные ресурсы верификации по сравнению с существующими на сегодняшний день ресурсами статических фильтров маршрутизаторов и сигнатур IDS.
- Распознавание аномалий на базе поведения позволяет выявлять внешне корректные пакеты, которые отправлены со злым умыслом, для переполнения сервисных ресурсов.
- Идентификация и блокировка конкретных поддельных пакетов для защиты благонадежных корректных транзакций.
- Механизмы, предназначенные для обработки крупномасштабных атак DDoS без ущерба для защищенных ресурсов.
- Развертывание, в соответствии с потребностями для защиты сети во время атак без возникновения точек сбоя, и дополнительных затрат на линейно-встраиваемое решение.
- Обработка (со встроенной интеллектуальной логикой) только загрязненных потоков трафика, что обеспечивает максимальную надежность и минимальные затраты на масштабирование.
- Применение стандартных протоколы для всех коммуникаций, это помогает обеспечить максимальное взаимодействие и надежность.

CISCO SYSTEMS
Cisco Systems предлагает полнофункциональное решение по защите от атак DDoS, основанное на принципах выявления, переориентации, верификации и пересылки, применение которых гарантирует полную защиту. Если атака DDoS запущена против объекта, который находится под защитой решения Cisco, действуют следующие механизмы:
- Выявление атаки DDoS.
- Переотправка информационного трафика, адресованного целевому объекту, на устройства Cisco для обработки.
- Анализ и фильтрация с отделением потоков «плохого» трафика от потоков «хорошего» трафика. При этом злоумышленный трафик не
- ухудшает быстродействие, и обеспечено выполнение легитимных транзакций.
- Пересылка «хорошего» трафика обеспечивает устойчивую непрерывную работу.
Довольно дорогая устлуга.
Параметры tcp
Ищем файл /etc/sysctl.conf. В него вписываем следующее
Controls IP packet forwarding
Code
net.ipv4.ip_forward = 0
Controls source route verification
Code
net.ipv4.conf.default.rp_filter = 1
Do not accept source routing
Code
net.ipv4.conf.default.accept_source_route = 0
Controls the System Request debugging functionality of the kernel
Controls whether core dumps will append the PID to the core filename
Useful for debugging multi-threaded applications
Code
kernel.core_uses_pid = 1
Controls the use of TCP syncookies
Code
net.ipv4.tcp_syncookies = 1
Controls the maximum size of a message, in bytes
Code
kernel.msgmnb = 65536
Controls the default maxmimum size of a mesage queue
Code
kernel.msgmax = 65536
Controls the maximum shared segment size, in bytes
Code
kernel.shmmax = 4294967295
Controls the maximum number of shared memory segments, in pages
Code
kernel.shmall = 268435456
Через 60 секунд с момента наступления тишины в канале сервером выполняется проба. Если клиент жив, то серверу высылается ответный пакет
Code
net.ipv4.tcp_keepalive_time = 60
Если ответа на проверку нет, то с интервалом в 10 секунд повторить
Code
net.ipv4.tcp_keepalive_intvl = 10
Сколько раз повторить проверку после чего закрыть соединение
Code
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.netfilter.ip_conntrack_max = 65536
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 30
Сохраняем файл и обновляем системные переменные.
Code
[root@hzru etc]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
net.ipv4.ip_conntrack_max = 65536
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
После этого необходимо перезагрузиться, иначе надо ждать два часа, чтобы отвалились открытые соединения. Минут через 5 после перезагрузки посмотрим что получилось.
[root@hzru ~]# cat /proc/net/ip_conntrack | wc -l
3506
[root@hzru ~]# cat /proc/net/ip_conntrack | wc -l
3494
Настраиваем iptables.
HTTP DDoS. С разных IP шли запросы
Code
210.18.136.151 - - [29/Nov/2008:00:09:25 +0300] "GET /setting.xls HTTP/1.1" 404 221 "-" "-" AU
59.92.97.151 - - [21/Nov/2008:00:09:46 +0300] "GET /setting.doc HTTP/1.1" 404 221 "-" "-" -
59.92.97.151 - - [21/Nov/2008:00:09:47 +0300] "GET /setting.xls HTTP/1.1" 404 221 "-" "-" -
59.92.97.151 - - [21/Nov/2008:00:09:49 +0300] "GET /setting.doc HTTP/1.1" 404 221 "-" "-" -
59.92.97.151 - - [21/Nov/2008:00:09:50 +0300] "GET /setting.xls HTTP/1.1" 404 221 "-" "-" -
59.92.97.151 - - [21/Nov/2008:00:09:51 +0300] "GET /setting.doc HTTP/1.1" 404 221 "-" "-" -
59.92.97.151 - - [21/Nov/2008:00:09:52 +0300] "GET /setting.xls HTTP/1.1" 404 221 "-" "-" -
Побороли это просто (должен быть загружен модуль iptables string, iptables должен быть не ниже версии 1.3.5, а ядро – не ниже 2.6.18, собранным с опцией CONFIG_NETFILTER_XT_MATCH_STRING=m)
Code
/sbin/iptables -A INPUT -p tcp --dport 80 -m string --string "GET /setting." --algo kmp -j DROP
Далее можно поставить ограничение по количеству одновременных соединений
Лимит на 20 запросов в секунду для интерфейса eth0
/Code
sbin/iptables --new-chain lim1
/sbin/iptables --insert OUTPUT 1 -p tcp --destination-port 80 -o eth0 --jump lim1
/sbin/iptables --append lim1-m limit --limit 20/sec --jump RETURN
/sbin/iptables --append lim1--jump DROP
Максимум 10 одновременных соединений с одного IP
Code
/sbin/iptables -A INPUT-p tcp --dport 80 -m iplimit --iplimit-above 10 -j REJECT
Блокировка более 10 SYN
Code
/sbin/iptables -I INPUT -p tcp --syn --dport 80 -j DROP -m iplimit --iplimit-above 10
20 соединений на сеть класса С
Code
/sbin/iptables -p tcp --dport 80 -m iplimit --iplimit-above 20 --iplimit-mask 24 -j REJECT