База знаний: Linux Server
Защита от SYN FLOOD атак
Автор Алексей | HiTex.BY на 04 ноября 2019 9:56
|
|
Для начала проверяем, действительно ли это Syn Flood:
netstat -n | grep SYN_RECV | wc -l Если больше 5 соединений, значит, это syn атака. 1) Вводим для iptables правила ниже: iptables -N syn_flood iptables -A INPUT -p tcp --syn -j syn_flood iptables -A syn_flood -m limit --limit 30/s --limit-burst 100 -j RETURN iptables -A syn_flood -j DROP 2) Устанавливаем лимиты в /etc/sysctl.conf: net.ipv4.tcp_max_syn_backlog = 40000 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_syncookies = 1 net.core.somaxconn = 60000 net.ipv4.tcp_fin_timeout = 15 net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_intvl = 15 net.ipv4.tcp_keepalive_time = 15 net.core.netdev_max_backlog = 40000 net.ipv4.ip_local_port_range = 1024 65535 net.ipv4.conf.default.rp_filter = 1 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.tcp_window_scaling = 0 net.ipv4.tcp_sack = 0 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.netfilter.nf_conntrack_max=400000 net.netfilter.nf_conntrack_tcp_timeout_close = 5 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 5 net.netfilter.nf_conntrack_tcp_timeout_last_ack = 1 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 5 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 1 net.netfilter.nf_conntrack_tcp_timeout_established = 30 net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 1 net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 1 net.netfilter.nf_conntrack_tcp_loose = 0 Принимаем настройки: sysctl -p 3) Через Iptables ставим ограничение одновременных число коннектов к веб-серверу с одного ip iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 3 --connlimit-mask 24 -j DROP | |
|
Комментарии (0)