TCP 自从 1974 年被发明出来之后,历经 30 多年发展,目前成为最重要的网际互联网基础协议,但 TCP 协议中也存在一些缺陷。
SYN 攻击就是利用 TCP 协议的缺陷,来导致系统服务停止正常的响应。
SYN 攻击原理
TCP 在传递资料前需要经过三次握手,SYN 攻击的原理就是向站群服务器传送 SYN 资料包,并伪造源 IP 地址。
站群服务器在收到 SYN 资料包时,会将连线加入 backlog 伫列,并向源 IP 传送 SYN-ACK 资料包,并等待 ACK 资料包,以完成三次握手建立连线。
由于源 IP 地址是伪造的不存在 WordPress 主机 IP,所以站群服务器无法收到 ACK 资料包,并会不断重发,同时 backlog 伫列被不断被攻击的 SYN 连线占满,导致无法处理正常的连线。
SYN 攻击处理
针对 SYN 攻击的几个环节,提出相应的处理方法:
方式 1:减少 SYN-ACK 资料包的重发次数(预设是 5 次):
sysctl -w net.ipv4.tcp_synack_retries=3
sysctl -w net.ipv4.tcp_syn_retries=3
方式 2:使用 SYN Cookie 技术:
sysctl -w net.ipv4.tcp_syncookies=1
方式 3:增加 backlog 伫列(预设是 1024):
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
方式 4:限制 SYN 并发数:
iptables -A INPUT -p tcp –syn -m limit –limit 1/s -j ACCEPT –limit 1/s