LINUX防SYN攻击初步设置
SYN攻击是利用TCP/IP协议3次握手的原理,发送大量的建立连接的网络包,但不实际建立连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问。
Linux内核提供了若干SYN相关的配置,用命令:
sysctl -a | grep syn
看到:
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syn_retries = 5
tcp_max_syn_backlog是SYN队列的长度,tcp_syncookies是一个开关,是否打开SYN Cookie功能,该功能可以防止部分SYN攻击。tcp_synack_retries和tcp_syn_retries定义SYN
的重试次数。
加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie功能可以阻止部分
SYN攻击,降低重试次数也有一定效果。
调整上述设置的方法是:
增加SYN队列长度到2048:
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
打开SYN COOKIE功能:
sysctl -w net.ipv4.tcp_syncookies=1
降低重试次数:
sysctl -w net.ipv4.tcp_synack_retries=3

sysctl -w net.ipv4.tcp_syn_retries=3


为了系统重启动时保持上述配置,可将上述命令加入到/etc/rc.d/rc.local文件中。
使用如下指令开启截流阀的功能只允许每分钟30个syn通过攻击结束后自动恢复.
1.首先 -P 确定INPUT 为DROP
iptables -A INPUT -i XXX(封包进入的网卡如eth0) -p tcp –syn -m \limit –limit 30/m -j ACCEPT或iptables -A INPUT -p tcp –tcp-flags SYN,ACK,FIN,RST SYN -m limit –limit 30/m –limit-burst 2 -j ACCEPT

优化 timewait 快速回收复用

echo 1>/proc/sys/net/ipv4/tcp_tw_recycle

echo 1>/proc/sys/net/ipv4/tcp_tw_reuse