Analitycs

Показаны сообщения с ярлыком iptables. Показать все сообщения
Показаны сообщения с ярлыком iptables. Показать все сообщения

четверг, 28 июля 2011 г.

Как защититься от SYN-флуда?

SYN флуд - один из способов DDOS-атаки на веб сервер.

Увеличеваем очередь "полуоткрытых" TCP-соединений:

sysctl -w net.ipv4.tcp_max_syn_backlog=1024

Уменьшаем время удержания "полуоткрытых" соединений:

sysctl -w net.ipv4.tcp_synack_retries=1

Включаем TCP syncookies:

sysctl -w net.ipv4.tcp_syncookies=1

Ограничиваем максимальное числа "полуоткрытых" соединений с одного IP к конкретному порту - в нашем случае http - 80:


iptables -I INPUT -p tcp --syn --dport 80 -m iplimit --iplimit-above 10 -j DROP

iptables -N syn-flood
iptables -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
iptables -A syn-flood -j LOG --log-prefix "SYN flood: "
iptables -A syn-flood -j DROP


Да, разумеется - iplimit должен присутствовать в системе, иначе - никак ;-)


+ Добаляем в /etc/sysctl.conf следующие строки:

# Защита от спуфинга
net.ipv4.conf.default.rp_filter = 1
# Проверять TCP-соединение каждую минуту. Если на другой стороне - легальная машина, она сразу ответит. Дефолтовое значение - 2 часа.
net.ipv4.tcp_keepalive_time = 60
# Повторить пробу через десять секунд
net.ipv4.tcp_keepalive_intvl = 10
# Количество проверок перед закрытием соединения
net.ipv4.tcp_keepalive_probes = 5