首页/安全/取证与溯源速查/代理与防火墙日志对账
日志溯源53 条

代理与防火墙日志对账

代理日志记录应用层请求,防火墙记录连接五元组:两套日志对同一连接的时间与字节数应能对上,对不上先查时区与采样差异。

取证与溯源速查安全更新于 2026-10-13

两套日志描述同一条连接

代理日志记录的是应用层请求:谁访问了哪个域名或地址、请求了什么内容、返回了多大响应;防火墙日志记录的是网络层五元组:源地址、目的地址、端口与连接时长。同一条外联流量通常在两处都有痕迹,对账(把两边对齐)既能补全应用层信息,也能验证双方日志的完整性。

对不上先查三个原因

对不上是常态,常见原因有三个:一是时区差异,一侧本地时间一侧 UTC;二是 NAT 转换,防火墙记录的源地址是网关地址而不是内网主机地址;三是采样或聚合,部分设备在高负载时只记录部分会话。逐项排除之后再判断是否真的存在缺失。

基本信息

适用平台Linux/各类安全设备(代理服务、防火墙、边界设备)
对账键时间加源地址加目的地址或域名
校验字段字节数、连接时长、状态码
常见代理日志访问日志中的时间、客户端地址、目标域名、字节数、状态码
前提材料NAT 映射表、各设备的时区配置

典型使用场景

  • 补全外联对象:代理日志给出域名,防火墙日志给出实际地址
  • 验证日志完整性:某条连接在一侧缺失,说明存在日志丢包或过滤
  • 核对数据量级:两边的字节数应当在同一数量级
  • 定位异常外发:结合响应大小判断是否发生了大文件上传
  • 为报告取证:说明结论同时被两类日志支撑

抽样对账

抽样对账
# 同一客户端地址在两套日志中的记录
grep '203.0.113.10' /var/log/squid/access.log 2>/dev/null | tail -5
grep '203.0.113.10' /var/log/firewall.log 2>/dev/null | tail -5

# 以时间加目的地址为键做并排比对(导出成两列后 diff 或表格比对)
awk '{print $1, $NF}' /var/log/firewall.log | tail -50 > /tmp/fw-tail.txt
awk '{print $1, $4}' /var/log/squid/access.log | tail -50 > /tmp/proxy-tail.txt
wc -l /tmp/fw-tail.txt /tmp/proxy-tail.txt

# NAT 环境下要用转换后的地址对账,先拿到映射表
# grep -i 'nat' /var/log/firewall.log | tail -5

对不上的常见原因

原因表现处理方法
时区差异整体偏移固定小时数统一转 UTC 后重新比对
NAT 转换源地址显示为网关地址索取映射表,用转换后地址对账
采样模式条数明显少于另一侧确认设备是否开启采样
日志落盘延迟尾部记录缺失等待落盘后重取或延长比对窗口
链路不在同一节点部分流量绕过代理补采对应节点日志
对账前先确认两套日志的字节数是否都包含或不包含协议头:一侧统计应用层负载,另一侧统计整包大小,两者天然不同,这不是日志错误。
一次对账只解决一个时间窗口:跨天或跨周的对账要按窗口分别进行,否则时区或配置变更会把结论带偏。

易错点

  • 直接用源地址对账:NAT 环境下防火墙看到的不是内网地址,永远对不上
  • 忽略时区:整体偏移被当成日志缺失
  • 把采样日志当全量:条数差异被误判为设备被绕过
  • 比对字节数时口径不同:把应用层负载与整包大小相比,得出错误结论
  • 一次对账覆盖过长周期:中途配置变更被忽略,结论不可靠

数据来源与参考

  • Squid 日志格式文档
  • SANS 网络日志资料
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌