新手防御畸形分片攻击的核心是内核协议栈前端拦截:关闭IP转发、启用rp_filter(推荐值2)、强化分片校验参数,全部通过sysctl配置,不依赖iptables,轻量高效。

新手防御畸形分片报文攻击,核心不是靠防火墙“拦”,而是让内核在网络栈最前端就识别并丢弃异常分片——关键参数就两个:关闭IP转发(防被用作反射跳板)和启用反向路径过滤(rp_filter),再配合系统级分片校验加固。这些都在内核协议栈入口生效,不进iptables、不耗CPU,是真正轻量又有效的第一道防线。
先关IP转发,切断反射放大链路
畸形分片攻击常结合IP转发滥用,把你的服务器变成反射源(如向目标伪造大量带分片的ICMP或UDP包)。非网关设备必须禁用转发:
- 编辑/etc/sysctl.d/99-security.conf,添加:
net.ipv4.ip_forward = 0net.ipv6.conf.all.forwarding = 0 - 执行
sudo sysctl -p /etc/sysctl.d/99-security.conf立即生效 - 验证:
sysctl net.ipv4.ip_forward返回 0 即成功
启用rp_filter,过滤伪造源地址的分片包
畸形分片往往伴随源IP欺骗。rp_filter能直接在入包时检查“回程路径是否合理”,对无法匹配路由表的分片(包括大部分伪造分片)直接丢弃:
- 推荐宽松模式(兼容云环境、多网卡、Kubernetes节点):
net.ipv4.conf.all.rp_filter = 2net.ipv4.conf.default.rp_filter = 2 - 若确定是单网卡纯路由环境,可用严格模式:
net.ipv4.conf.all.rp_filter = 1 - 配完别忘了刷新:
sudo sysctl -w net.ipv4.route.flush=1
开启内核分片校验与重组限制
Linux内核自带分片重组逻辑,但默认容忍度偏高。启用校验可拦截重叠、错序、超长等典型畸形分片:
- 强制校验所有IPv4分片(推荐):
net.ipv4.ipfrag_high_thresh = 262144net.ipv4.ipfrag_low_thresh = 196608net.ipv4.ipfrag_time = 30(缩短未完成重组等待时间) - 禁用危险扩展选项(防源路由+分片组合攻击):
net.ipv4.conf.all.accept_source_route = 0net.ipv4.conf.all.accept_redirects = 0 - 所有参数统一写入/etc/sysctl.d/99-security.conf,再
sysctl -p加载
验证是否真起作用
别只看配置文件,要确认内核实际行为:
- 查当前值:
sysctl net.ipv4.ip_forward net.ipv4.conf.all.rp_filter net.ipv4.conf.all.accept_source_route,全部应为 0 或 2 - 模拟测试(需另一台机器):
用hping3 --flood --frag -1 target_ip发乱序分片包,观察目标机/proc/net/snmp中InDiscards或ReasmFails是否明显上升 - 若业务异常(如部分内网不通),优先检查
rp_filter = 2是否误伤;可临时设为0排查,再针对性加src_valid_mark = 1微调


















