核心在于识别异常协议行为并精准拦截:允许必要ICMP类型(如type 0/3),拒绝高危类型(type 5/13/17);启用SYN Cookie防洪泛,用iptables拦截非法TCP标志组合及限速新连接;管控UDP端口与包长,对HTTP等应用层做深度字符串匹配;结合日志与fail2ban实现动态响应。

配置系统防火墙规则防范网络协议异常行为攻击,核心在于识别常见异常模式(如非法ICMP类型、伪造TCP标志位、超长UDP包、SYN洪泛等),并用精准规则拦截,而非简单放行或全拒。
识别并拦截异常ICMP流量
ICMP协议常被滥用于扫描、隧道或DoS攻击。默认允许全部ICMP会暴露主机拓扑信息。
- 只放行必要类型:允许回显应答(type 0)和不可达(type 3),拒绝重定向(type 5)、时间戳请求(type 13)、掩码请求(type 17)等高危类型
- firewalld示例:
firewall-cmd --permanent --add-rich-rule='rule protocol value="icmp" icmp-type="echo-reply" accept';再用--remove-service=icmp关闭默认ICMP通路 - iptables示例:
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT,随后iptables -A INPUT -p icmp -j DROP
防御TCP协议层异常行为
TCP标志位组合异常(如SYN+FIN、NULL扫描)、畸形窗口大小、重复SYN未完成连接,都是扫描或攻击特征。
- 启用内核防护:
sysctl -w net.ipv4.tcp_syncookies=1(防SYN洪泛),net.ipv4.tcp_rmem/tcp_wmem设合理上下限 - iptables拦截非法标志组合:
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP(NULL扫描),--tcp-flags ALL SYN,FIN -j DROP(Xmas扫描) - 限制新连接速率:
iptables -A INPUT -p tcp --syn -m limit --limit 3/sec --limit-burst 6 -j ACCEPT,超出即丢弃
管控UDP与应用层协议异常
UDP无连接特性易被用于反射放大攻击(如DNS、NTP、SSDP),也常携带恶意载荷。
- 禁止开放UDP端口除非明确需要:如DNS仅允许53/udp对可信递归服务器,禁用所有其他UDP入站
- 限制UDP包大小:
iptables -A INPUT -p udp -m length --length 65535 -j DROP(过滤巨型UDP包) - 对HTTP/HTTPS加深度匹配:用
string模块拦截典型协议混淆行为,例如iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string "GET /%2e%2e" -j DROP(目录遍历编码)
启用日志与动态响应机制
单纯拦截不够,需可观测性支撑持续优化。
- 为关键拒绝规则添加日志前缀:
iptables -A INPUT -j LOG --log-prefix "PROTO-ABNORM: ",配合rsyslog写入独立日志文件 - 结合fail2ban监听日志:当某IP在1分钟内触发5次“PROTO-ABNORM”记录,自动调用iptables封禁该IP 1小时
- 定期用
iptables -L -v -n --line-numbers检查规则命中率,移除长期零命中的冗余规则











