SYN флуд - один из способов DDOS-атаки на веб сервер.
Увеличеваем очередь "полуоткрытых" TCP-соединений:
Уменьшаем время удержания "полуоткрытых" соединений:
Включаем TCP syncookies:
Ограничиваем максимальное числа "полуоткрытых" соединений с одного IP к конкретному порту - в нашем случае http - 80:
Да, разумеется - iplimit должен присутствовать в системе, иначе - никак ;-)
+ Добаляем в /etc/sysctl.conf следующие строки:
Увеличеваем очередь "полуоткрытых" 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