iptables流量镜像与协议审计一体化方案采用TEE克隆双向流量、mangle表标记协议特征、LOG/counter留痕,结合CONNMARK保障会话一致性,并通过prefix分类、counter统计及脚本导出实现闭环管理。

iptables 流量镜像与协议审计可以整合为一套轻量、可控、可落地的一体化方案,核心是用 TEE 做流量克隆 + mangle 表做协议识别与标记 + LOG 或 counter 实现审计留痕。它不依赖专用硬件或虚拟交换机,适合中小规模网络或测试环境快速部署。
用 TEE 实现双向流量镜像
镜像必须覆盖进出两个方向,否则审计会缺失响应或回程数据:
-
入向镜像:在 PREROUTING 链复制所有进来的包,目标为审计主机(同网段或路由可达):
iptables -t mangle -A PREROUTING -i eth0 -j TEE --gateway 192.168.1.100 -
出向镜像:在 POSTROUTING 链复制本机发出的包,确保服务响应也被捕获:
iptables -t mangle -A POSTROUTING -o eth0 -j TEE --gateway 192.168.1.100 - 注意:TEE 不修改三层 IP 地址,但会重写二层 MAC 地址;目标主机需开启混杂模式并监听对应接口
按协议类型做差异化审计标记
在镜像的同时,利用 mangle 表对不同协议打标,便于后续分类处理或日志归因:
- TCP 连接建立行为(SYN)、异常标志(FIN/RST 混合):
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL SYN -j MARK --set-mark 0x100 - UDP 非标准端口访问(如非 53/67/68/123):
iptables -t mangle -A PREROUTING -p udp ! --dport 53,67,68,123 -j MARK --set-mark 0x200 - ICMP 异常类型(timestamp-request、address-mask-request):
iptables -t mangle -A PREROUTING -p icmp --icmp-type 13 -j MARK --set-mark 0x300 - 标记后可配合 LOG 或 counter 规则,例如:
-j LOG --log-prefix "AUDIT-TCP-SYN: "或-j COUNTER
结合 connmark 保障审计一致性
对 TCP 等有状态协议,单靠包级标记无法保证请求与响应被统一归类。需用 CONNMARK 绑定连接生命周期:
- 首次包打标并保存:
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 0x400iptables -t mangle -A PREROUTING -m mark --mark 0x400 -j CONNMARK --save-mark - 后续包(含回程)恢复标记:
iptables -t mangle -A PREROUTING -m connmark --ctmark 0x400 -j CONNMARK --restore-mark - 本地响应也需覆盖:
iptables -t mangle -A OUTPUT -m connmark --ctmark 0x400 -j CONNMARK --restore-mark - 这样,SSH 全连接的请求与返回都会带相同标记,审计系统可关联成完整会话
日志与计数闭环管理
避免日志刷屏或丢失关键指标,建议采用 prefix 分类 + counter 绑定 + 定期导出的组合方式:
- 每条审计规则末尾加
log prefix "SSH-ATTEMPT: " level info counter - 用
nft list ruleset -a查看规则 handle,再通过nft get counter inet audit input handle XXX提取精确计数 - 写简单脚本每小时 dump 一次计数器值到 CSV,字段包括时间、前缀、packet_count、byte_count
- 日志可通过 rsyslog 或 journald 转发至 ELK 或本地文件,便于后续分析或告警










