本文目录导读:

- 网络层与硬件层防御(最基础)
- 协议栈与系统内核调优(轻量级、低开销)
- 流量清洗与DDoS防火墙(针对大规模攻击)
- 特殊场景:针对ACK Flood / RST Flood
- 地理限制与IP信誉(辅助手段)
- 实际拦截策略建议(组合拳)
TCP洪水攻击(如SYN Flood、ACK Flood等)是一种常见的拒绝服务攻击(DDoS),其核心是攻击者利用TCP协议的三次握手或状态机制,发送大量伪造或非法的TCP数据包,耗尽目标服务器的连接资源、带宽或CPU处理能力。
由于攻击行为通常发生在第四层(传输层),传统的IPS/IDS或应用层防火墙难以高效识别和清洗,有效的拦截策略需要从网络边界、协议栈特性和流量清洗三个层面进行组合。
以下是针对TCP洪水攻击的几种主流拦截方法:
网络层与硬件层防御(最基础)
在流量进入服务器前进行粗暴但有效的过滤。
- 防火墙与ACL(访问控制列表):
- 黑/白名单: 识别出攻击源IP(通常是伪造的,但在某些攻击场景下有效),在核心交换机或边界防火墙上直接丢弃来自特定IP或IP段的流量。
- 速率限制: 对目标IP、端口或协议的入站流量设置阈值(如每秒多少连接),一旦超过阈值,自动丢弃后续数据包。
- 非标准包过滤: 丢弃明显异常的包,如源IP为内网地址、源IP为多播地址、SYN和FIN同时为1的包(通常由扫描工具发出)。
协议栈与系统内核调优(轻量级、低开销)
在服务器自身层面,通过调整TCP/IP协议栈参数来增强抗冲击能力,但不能完全抵御大规模攻击。
-
SYN Cookie(最核心的SYN Flood防御
- 原理: 当SYN请求队列(半连接队列)满时,服务器不分配任何内存资源,而是根据连接信息加密计算一个Cookie值作为SeqNum发回给客户端,如果客户端是真实的(能返回正确的ACK),服务器才建立连接。
- 操作: 在Linux下,默认是开启的。
sysctl -w net.ipv4.tcp_syncookies=1
-
调整TCP半连接与全连接队列:
- 增大
tcp_max_syn_backlog(半连接队列大小)和somaxconn(全连接队列大小),让服务器能暂存更多等待握手的连接,争取处理时间。
- 增大
-
缩短超时时间:
- 缩短
tcp_synack_retries(SYN-ACK重试次数)和tcp_fin_timeout(FIN等待时间),快速释放无效的半连接。
- 缩短
-
反向代理 / 负载均衡:
- 使用Nginx、HAProxy或LVS,它们通常具备更好的协议处理能力和抗DDoS模块(如
limit_conn),后端服务器不直接暴露在公网,攻击流量先打在代理层。
- 使用Nginx、HAProxy或LVS,它们通常具备更好的协议处理能力和抗DDoS模块(如
流量清洗与DDoS防火墙(针对大规模攻击)
当攻击流量超过服务器出口带宽(例如10Gpbs横向攻击)或消耗大量CPU时,必须引入专业的清洗设备或云服务。
-
云防护:
- 阿里云高防IP、Cloudflare、AWS Shield等。
- 原理: 所有流量先经过云清洗中心,边缘节点会分析TCP行为的指纹(如TTL、窗口大小、时间戳),区分出正常浏览器流量和攻击流量,伪造的SYN包往往不符合标准TCP行为模式。
-
硬件清洗设备:
思科Guard、Arbor等专用设备,它们能对流量进行深度包检测(DPI),通过机器学习模型识别出“低慢速”攻击(这种攻击伪装成正常TCP连接,仅发送极低速率的数据包来耗尽连接表)。
特殊场景:针对ACK Flood / RST Flood
这类攻击利用了TCP状态机。
-
状态检测防火墙:
- 启用严格的“状态跟踪”,只允许 已建立连接(ESTABLISHED) 的ACK包通过;对于没有对应SYN记录的ACK包(状态不匹配),直接丢弃,这是最有效的方法之一。
-
无状态过滤:
- 通过iptables等工具,设置
--state INVALID规则,所有不属于已知连接或响应包的无效包都被丢弃。iptables -A INPUT -m state --state INVALID -j DROP
- 通过iptables等工具,设置
地理限制与IP信誉(辅助手段)
- 如果攻击来源集中在某些特定国家或地区,可以在防火墙或CDN上屏蔽该地区的流量。
- 订阅实时IP黑名单(如Spamhaus DROP list),自动阻止已知的恶意IP或僵尸网络地址。
实际拦截策略建议(组合拳)
- 第一道防线(边界): 在运营商或云服务商侧启用流量清洗(如Anti-DDoS),过滤掉大部分攻击流量,确保带宽不被耗尽。
- 第二道防线(代理/负载均衡): 使用Nginx反向代理,开启
limit_conn(限制并发数)和limit_req(限制速率),并启用SYN Cookie。 - 第三道防线(服务器): 调整内核参数,启用SYN Cookie,并使用iptables的
connlimit模块限制单个IP的最大并发连接数。 - 监控与溯源: 使用
netstat -anp | grep SYN_RECV或tcpdump实时监控,确定攻击特征(源端口分布、TTL值等),用于动态调整过滤规则。
最后提醒: 防御TCP洪水攻击的关键在于尽早识别并卸载流量,如果攻击直接打到服务器网卡,再好的系统优化也很难完全解决;在云服务商或网络入口处启用专业的DDoS高防服务是最推荐的大规模防御方案。