首页/安全/取证与溯源速查/防火墙日志判读
日志溯源53 条

防火墙日志判读

边界与主机防火墙日志给出"被拦截的连接":拒绝风暴常是扫描,放行后的会话才是关注点;结合规则命中计数看策略变化。

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

防火墙日志怎么用

防火墙日志记录连接被允许、拒绝或丢弃的情况,字段通常包含来源、目的、端口、协议、动作与命中的规则。在调查中它有两个用途:一是从拦截记录中识别扫描与探测的规模与来源(被拦截的尝试同样是情报),二是从放行记录中找出真正建立了会话的异常连接。主机侧防火墙(iptables/nftables、firewalld、ufw)与云平台安全组、网络 ACL 的日志位置不同,云端日志要在平台侧查询与导出。

基本信息

适用平台Linux 主机侧(iptables/nftables、firewalld、ufw)与云平台安全组、网络 ACL
日志位置内核日志(journalctl -k、/var/log/kern.log)或专用日志文件;云侧在平台日志服务中
关键字段SRC、DST、DPT(目的端口)、PROTO、动作(DROP/REJECT/ACCEPT)、规则名或前缀
前提需显式配置 LOG 规则或在云侧开启日志投递,否则默认不产生日志
注意对拒绝连接做限速时,日志会被丢弃一部分,只保留采样

典型使用场景

  • 评估外部扫描的规模:按来源 IP 聚合被拒连接的端口数
  • 确认攻击者的目标端口与攻击面,判断是否有可利用的暴露服务
  • 从放行记录中找出异常外联:内部主机访问陌生地址与端口
  • 解释日志缺口:某时段网络不可达导致的告警缺失
  • 验证加固效果:调整策略后拒绝量与目标分布的变化

检索与聚合

检索与聚合
# 内核日志中的防火墙记录(iptables/nftables 的 LOG 动作)
journalctl -k | grep -i 'iptables\|nft' | tail -50
# 按来源 IP 聚合被拒连接数量,识别扫描源
journalctl -k --since '24 hours ago' | grep 'DPT=' | awk '{for(i=1;i<=NF;i++) if($i ~ /^SRC=/) print $i}' | sort | uniq -c | sort -rn | head -15
# 看某来源攻击了哪些端口
journalctl -k --since '24 hours ago' | grep 'SRC=203.0.113.10' | grep -o 'DPT=[0-9]*' | sort | uniq -c | sort -rn | head
# 云安全组/网络 ACL 日志在平台侧查询并导出,本地无对应记录

字段逐步读法

字段含义判读要点
SRC / DST来源与目的地址来源聚合找扫描源,目的为内网主机则确认暴露面
DPT目的端口端口分布广说明扫描,集中于少数端口说明定向探测
PROTO协议TCP SYN 无后续为典型扫描,UDP 扫描关注 DNS 与 SNMP
动作DROP/REJECT/ACCEPT被拒记录说明尝试,放行记录说明真正连上
规则名/前缀命中的规则或日志前缀规则改名后历史日志定位困难,需记录规则版本
被拦截不等于没发生:攻击尝试本身是有价值的情报,能反映攻击面、来源分布与攻击者的工具偏好。
日志规则常配合限速(rate limit)使用,高频扫描的日志会被采样丢弃:统计到的次数只是下限,报告中不能把日志条数当成真实尝试次数。

易错点

  • 逐条阅读默认拒绝产生的海量日志:这类记录必须聚合成统计视图,逐条看会耗尽时间且抓不住重点
  • 把日志条数当作真实攻击次数:限速与采样会让实际尝试次数高于日志条数,需在报告中说明口径
  • 忽略云侧策略日志:安全组与网络 ACL 的日志不在主机上,只查本机会漏掉边界拦截记录
  • 规则改名后直接检索旧名称:历史日志与新日志的定位关键词不同,应同时保留规则版本记录
  • 只看拒绝不看放行:真正造成影响的是被允许的会话,缺少放行视角会漏掉异常外联

数据来源与参考

  • netfilter 日志文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌