关键是要激活日志开关并确保可靠捕获:firewalld需执行--set-log-denied=all加--reload;iptables须将log规则置于drop前并加--log-prefix;windows需在wf.msc中为三类配置文件启用“记录被丢弃的数据包”并设权限、重启服务。

要让防火墙真正记录被拦截的非法访问,关键不是“开了日志就行”,而是确保每条 DROP/REJECT 行为都被明确捕获、独立存放、便于定位和分析。不同平台实现方式不同,但核心逻辑一致:主动启用、精准分流、持续验证。
Linux firewalld:开启拒绝日志并分离存储
firewalld 默认完全不记录拦截行为,必须手动激活且 reload 才生效:
- 执行 firewall-cmd --permanent --set-log-denied=all(或更轻量的
unicast),再运行 firewall-cmd --reload —— 缺少 reload,配置无效 - 验证是否生效:firewall-cmd --get-log-denied 应返回
all - 默认日志混在
/var/log/messages(RHEL/CentOS)或/var/log/syslog(Debian/Ubuntu)中,不建议直接 tail;可用 journalctl -u firewalld -f | grep "_DROP\|_REJECT" 实时过滤 - 为避免污染主日志,用 rsyslog 单独分流:在
/etc/rsyslog.d/firewalld.conf中写入两行::msg, contains,"_DROP" /var/log/firewalld.log:msg, contains,"_REJECT" /var/log/firewalld.log & stop
创建文件、设权限(chmod 644 /var/log/firewalld.log),再重启rsyslog和firewalld
Linux iptables:在规则链中前置 LOG 动作
iptables 不自动记录拦截,需手动插入 LOG 规则,位置决定能否真正捕获:
- LOG 规则必须放在 DROP/REJECT 规则之前,例如:
iptables -I INPUT -p tcp --dport 22 -s 192.168.100.50 -j LOG --log-prefix "SSH-BLOCK: " --log-level 6iptables -I INPUT -p tcp --dport 22 -s 192.168.100.50 -j DROP -
--log-prefix(如SSH-BLOCK:)和--log-level 6(info 级)便于后续 grep 或日志系统识别 - 规则需持久化:CentOS/RHEL 运行
service iptables save;Debian/Ubuntu 执行iptables-save > /etc/iptables/rules.v4 - 日志走内核日志子系统,查看方式:
tail -f /var/log/kern.log(Debian)或tail -f /var/log/messages(RHEL),也可用journalctl -k -f | grep "SSH-BLOCK"
Windows 防火墙:启用 pfirewall.log + 事件 ID 5157
Windows 默认不记录拦截细节,需分两层启用才能覆盖完整上下文:
- 打开
wf.msc→ 右键“高级安全 Windows 防火墙(本地)” → “属性” → 依次切换“域”“专用”“公用”三个配置文件 → 每个都点“日志”区域的“自定义” → 勾选“记录被丢弃的数据包”,路径设为C:\Windows\System32\LogFiles\Firewall\pfirewall.log,最大大小 ≥8192 KB - 手动确认目录权限:右键
C:\Windows\System32\LogFiles\Firewall\→ “属性” → “安全” → 给 SYSTEM 和 Administrators 赋予“完全控制” - 重启服务:
net stop mpssvc && net start mpssvc - 同时查结构化事件:进“事件查看器” → “Windows 日志” → “安全” → 筛选事件 ID 5157,可看到被拦程序路径(
ApplicationPath)、触发规则名(FilterName)、源 IP 和目标端口等字段
日志分析与实战判断要点
日志本身只是线索,需结合模式识别才能定位非法访问:
- 同一 IP 在短时间内大量尝试不同端口(如 22→3389→445→135)→ 典型扫描行为
- 某 IP 被 DROP 后,紧接着在非业务端口(如 2375、6379、9200)出现拒绝记录 → 暗示横向探测或后门试探
- pfirewall.log 中出现大量来自公网 IP 的入站 DROP,且无对应 ALLOW 记录 → 可能正遭受主动探测
- firewalld 日志中频繁出现
_DROP且源 IP 集中 → 可导出统计频次,加入黑名单:firewall-cmd --permanent --add-source=xxx.xxx.xxx.xxx --block











