防范协议栈资源耗尽攻击的关键在于限制异常行为、控制连接生命周期、过滤畸形报文并启用spi状态检测;需协同内核调优(如启用tcp_syncookies、设tcp_synack_retries=0)与防火墙规则(封禁land/smurf、限速syn、丢弃无效连接)。

防范针对网络协议栈的资源耗尽攻击(如SYN Flood、Land、Smurf、Ping of Death、Teardrop等),关键在于限制异常协议行为、控制连接状态生命周期、过滤畸形报文,并启用状态检测机制。这类攻击不依赖漏洞利用,而是通过构造大量非法或半开连接,快速耗尽系统TCP连接表、内存或CPU资源。配置需兼顾内核参数调优与防火墙规则协同。
启用并强化状态检测(SPI)
状态检测是防御协议栈耗尽类攻击的核心能力。它不只检查单个数据包头,还会跟踪TCP三次握手全过程,仅允许属于合法会话的后续包通过。
- Windows:在“高级安全Windows防火墙”属性中,确保“域/专用/公用”三个配置文件均启用“状态检测”(默认开启,勿手动关闭)
- Linux(firewalld):firewalld 默认基于 nftables/netfilter,天然支持连接跟踪;确认 `nf_conntrack` 模块已加载(modprobe nf_conntrack)
- Linux(iptables):确保 `iptables -t raw -A PREROUTING -m conntrack --ctstate INVALID -j DROP` 规则存在,直接丢弃无效连接状态报文
针对性阻断典型攻击报文
对已知攻击模式设置显式拦截规则,不依赖状态跟踪,从源头过滤。
- 封禁Land攻击:阻止源IP=目的IP且协议为TCP/UDP的报文(iptables示例:iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -m pkttype --pkt-type host -j DROP;实际部署建议用更精确匹配)
- 抑制Smurf攻击:禁用向广播地址发送的ICMP Echo Request(echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts),并在边界防火墙上丢弃目标为子网广播地址的ICMP包
- 防御Ping of Death:现代内核已默认修复,但可补充限制ICMP包大小(iptables -A INPUT -p icmp --icmp-type echo-request -m length --length 65536:65535 -j DROP)
- 限制SYN半连接:启用SYN Cookies(echo 1 > /proc/sys/net/ipv4/tcp_syncookies),避免SYN队列溢出
限制连接速率与并发数
对高风险端口(如22、80、443)实施连接频控,防止单IP发起海量连接耗尽资源。
- Linux(iptables + limit模块):对SSH端口限流(iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 5/min --limit-burst 10 -j ACCEPT)
- Windows:使用“高级安全防火墙”新建入站规则 → 选择“自定义” → “协议和端口”设为TCP/22 → “作用域”中指定管理IP段 → “高级”页勾选“配置连接安全”,再在“操作”页选择“允许连接”,最后在“配置文件”页仅启用“域”或“专用”
- 通用建议:对非管理用途端口(如445 SMB)直接阻断入站,而非仅限流
调优内核网络参数
防火墙规则需与底层协议栈行为协同,否则规则可能失效或被绕过。
- 缩短TIME_WAIT超时(net.ipv4.tcp_fin_timeout = 30),加快连接回收
- 限制SYN队列长度(net.ipv4.tcp_max_syn_backlog = 2048)并增大连接跟踪表(net.netfilter.nf_conntrack_max = 65536)
- 禁用IP源路由(net.ipv4.conf.all.accept_source_route = 0)、关闭重定向响应(net.ipv4.conf.all.send_redirects = 0)
- 所有修改后执行 sysctl -p 生效,并写入 /etc/sysctl.conf 持久化











