拒绝日志为什么必须开
firewalld 默认只回绝不记录:被丢弃的流量既看不到来源也看不到目标端口,防火墙就成了黑盒。开启拒绝日志后,扫描、误配置与策略变更的副作用都会留下痕迹,是「配置可见」这一步的落点。日志还需要后端服务与轮转配合,否则一次扫描就能刷满磁盘。
基本信息
| 适用平台 | Linux(RHEL/CentOS/Fedora 的 firewalld) |
|---|---|
| 配置项 | firewall-cmd --set-log-denied=all|unicast|off |
| 日志落点 | 内核日志(journald 或 /var/log/messages) |
| 基线 | 记录被拒流量且日志量受控 |
典型使用场景
- 边界主机监控:观察被拒目标端口分布,判断是否在被扫描
- 策略上线后的验证:确认预期的放行生效、其余确实被拦
- 误配置排查:业务报不通时,先看是否有对应拒绝记录,区分网络问题与策略问题
- 审计取证:为「边界访问控制有效」提供可检索的证据
开启与观测
开启与观测
# 查看当前策略
firewall-cmd --get-log-denied
# 开启记录(all 记录全部被拒,unicast 只记单播)
firewall-cmd --permanent --set-log-denied=all
firewall-cmd --reload
# 按目标端口聚合,避免淹没在逐行日志里
journalctl -k --since '10 min ago' | grep -i 'DPT=' | awk '{print $NF}' | sort | uniq -c | sort -rn | head -20取值与读法
| 取值 | 记录范围 | 适用场景 |
|---|---|---|
| off | 不记录 | 仅排障临时使用,不建议长期 |
| unicast | 只记单播被拒流量 | 内网主机常规取值,噪声较小 |
| all | 记录全部被拒流量 | 公网边界与需要完整证据的场景 |
| 日志字段 DPT | 目标端口 | 出现大量同一端口被拒,多半是扫描或错配的服务发现 |
公网主机被持续扫描时日志量很大:先确认 journald 或 syslog 的轮转与集中采集就绪,再开启 all;内网可先用 unicast 降低噪声。
判读要按来源与目标端口聚合,逐行看没有意义。日志本身只说明「被拒」,不说明「为什么被拒」,仍需回到规则集核对。
接入集中日志平台后可做趋势统计:同一端口被拒次数突然上升,通常是新暴露面出现或扫描升级的前兆,比单次告警更有判断价值。