启用SYN Cookies并调大半连接队列、减少SYN/ACK重试次数是防范SYN洪水攻击的核心措施,辅以缩短FIN超时、复用TIME-WAIT套接字等加固参数可提升TCP健壮性。

防范 SYN 洪水攻击,核心是让内核更高效地处理半连接(SYN_RCVD 状态),避免队列耗尽、资源枯竭。配置不复杂,但几项关键参数必须协同生效。
启用 SYN Cookies 机制
这是最基础也最关键的防护手段,能在半连接队列溢出时启用“无状态握手”,防止伪造源 IP 耗尽资源。
- 临时生效:sysctl -w net.ipv4.tcp_syncookies=1
- 永久生效:在 /etc/sysctl.conf 中添加一行 net.ipv4.tcp_syncookies = 1,再执行 sysctl -p
- 注意:值设为 1 即开启;设为 0 则关闭,不可省略
扩大 SYN 半连接队列容量
默认值(如 1024)在高并发或攻击下极易打满,需根据服务器内存和业务负载适当调高。
- 推荐值:一般设为 2048~65536,大流量场景可设为 262144
- 配置命令:sysctl -w net.ipv4.tcp_max_syn_backlog=4096
- 同步写入 /etc/sysctl.conf 并 sysctl -p 生效
减少 SYN/ACK 重试次数
攻击者常利用重试机制拖住连接资源。缩短重试周期能加快释放无效连接,降低队列堆积风险。
- tcp_synack_retries 控制服务端发完 SYN+ACK 后等待 ACK 的重试次数
- 默认是 5(约 3 分钟),建议调为 2 或 3(对应约 21 秒或 45 秒)
- 配置示例:net.ipv4.tcp_synack_retries = 2
- 同理,tcp_syn_retries(客户端重试)也可设为 2,减少自身发起的无效重传
补充加固项(提升整体 TCP 健壮性)
单独防 SYN 不够,还需配合其他参数减少资源滞留、抑制异常行为:
- net.ipv4.tcp_fin_timeout = 30:缩短 FIN_WAIT_2 状态超时,加快连接回收
- net.ipv4.tcp_tw_reuse = 1:允许 TIME-WAIT 套接字快速复用于新连接(需确保 NAT 环境安全)
- net.ipv4.icmp_echo_ignore_broadcasts = 1:防止 ICMP Smurf 放大攻击
- net.ipv4.ip_forward = 0:关闭路由转发,避免被用作反射跳板


















