SYN攻击原理 TCP在传递数据前需要经过三次握手,SYN攻击的原理就是向服务器发送SYN数据包,并伪造源IP地址。服务器在收到SYN数据包时,会将连接加入backlog队列,并向源IP发送SYN-ACK数据包,并等待ACK数据包,以完成三次握手建立连接。
由于源IP地址是伪造的不存在主机IP,所以服务器无法收到ACK数据包,并会不断重发,同时backlog队列被不断被攻击的SYN连接占满,导致无法处理正常的连接。 SYN优化处理方法 一、减少SYN-ACK数据包的重发次数 sysctl -w net.ipv4.tcp_synack_retries=3 二、使用SYN Cookie技术 sysctl -w net.ipv4.tcp_syncookies=1 三、增加backlog队列,默认是1024 sysctl -w net.ipv4.tcp_max_syn_backlog=2048 四、限制SYN并发数 iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT --limit 1/s 如何处理 TimeWait 连接过多? 第一步:vi /etc/sysctl.conf 第二步:看服务器状况修改变量 net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭; net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭; net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。 net.ipv4.tcp_fin_timeout = 30 修改系默认的 TIMEOUT 时间(默认30)
|