防火墙日志怎么用
防火墙日志记录连接被允许、拒绝或丢弃的情况,字段通常包含来源、目的、端口、协议、动作与命中的规则。在调查中它有两个用途:一是从拦截记录中识别扫描与探测的规模与来源(被拦截的尝试同样是情报),二是从放行记录中找出真正建立了会话的异常连接。主机侧防火墙(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)使用,高频扫描的日志会被采样丢弃:统计到的次数只是下限,报告中不能把日志条数当成真实尝试次数。