如何查看CentOS9上firewalld的详细运行日志?
美国、香港服务器
如何查看CentOS9上firewalld的详细运行日志?
06-24 来源:
CentOS Stream 9 firewalld 详细日志查看完整教程
分为两类日志:
firewalld 服务运行日志:服务启停、规则重载、配置报错、服务异常
数据包拦截 / 放行内核日志:哪个 IP、哪个端口被防火墙拒绝(默认关闭,需要手动开启)
一、查看 firewalld 服务运行日志(最常用)
1. 查看全部历史日志
bash
运行
journalctl -u firewalld
2. 实时跟踪日志(调试规则推荐)
bash
运行
journalctl -u firewalld -f
3. 只看错误、警告日志(快速排错)
bash
运行
# 错误日志
journalctl -u firewalld -p err
# 警告+错误
journalctl -u firewalld -p warning
4. 按时间段查询日志
bash
运行
# 查看今天0点至今日志
journalctl -u firewalld --since "today"
# 指定时间范围
journalctl -u firewalld --since "2026-06-24 08:00:00" --until "2026-06-24 18:00:00"
5. 分页查看、最新 100 行
bash
运行
journalctl -u firewalld -n 100 --no-pager
二、开启【数据包拦截详细日志】(必做,默认关闭)
firewalld 默认不记录被丢弃 / 拒绝的连接,必须开启LogDenied才能看到:来源 IP、目标端口、协议、网卡等详细拦截信息。
1. 永久开启记录所有被拒绝数据包
bash
运行
# 永久配置
firewall-cmd --permanent --set-log-denied=all
# 重载生效
firewall-cmd --reload
# 验证是否开启成功
firewall-cmd --get-log-denied
# 返回 all 即为正常
参数说明:
all:记录单播、广播、组播所有被拦截数据包(安全审计推荐)
unicast:仅记录普通 TCP/UDP 单播流量(日志量更小,日常用)
off:关闭拦截日志(默认)
2. 查看防火墙拦截的详细数据包日志
拦截日志属于内核 netfilter 日志,不能直接用-u firewalld过滤:
方式 1:实时监控所有被拒绝连接
bash
运行
journalctl -kf | grep -E "FINAL_REJECT|FINAL_DROP"
方式 2:查看历史拦截记录
bash
运行
journalctl -k | grep -E "FINAL_REJECT|FINAL_DROP"
方式 3:从系统总日志过滤
bash
运行
grep -E "FINAL_REJECT|FINAL_DROP" /var/log/messages
日志字段说明(看懂拦截详情)
plaintext
kernel: filter_IN_drop_REJECT: IN=eth0 OUT= MAC= SRC=113.44.xx.xx DST=服务器IP PROTO=TCP DPT=2222
SRC:攻击源 IP
DPT:被访问的目标端口
PROTO:TCP/UDP 协议
三、提升日志级别,输出 DEBUG 详细调试日志
需要排查规则加载异常、富规则不生效时使用:
编辑配置文件
bash
运行
vi /etc/firewalld/firewalld.conf
修改:
ini
LogDenied=all
LogLevel=debug
重启防火墙
bash
运行
systemctl restart firewalld
查看详细调试日志
bash
运行
journalctl -u firewalld -f -p debug
四、把防火墙拦截日志单独保存到独立文件(便于审计)
1. 配置 rsyslog 拆分日志
bash
运行
cat > /etc/rsyslog.d/firewalld.conf <
:msg,contains,"FINAL_REJECT" /var/log/firewalld-denied.log
:msg,contains,"FINAL_DROP" /var/log/firewalld-denied.log
& stop
EOF
2. 重启日志服务
bash
运行
systemctl restart rsyslog
3. 查看独立防火墙拦截日志
bash
运行
tail -f /var/log/firewalld-denied.log
五、常用日志排查场景命令汇总
实时看防火墙服务运行 + 规则报错
bash
运行
journalctl -u firewalld -f
实时监控服务器被哪些 IP 扫描端口
bash
运行
journalctl -kf | grep -E "FINAL_REJECT|FINAL_DROP"
统计高频扫描 IP(安全巡检)
bash
运行
grep FINAL_REJECT /var/log/messages | awk "{print $11}" | sort | uniq -c | sort -nr | head -20
关闭拦截日志(防止日志量过大占磁盘)
bash
运行
firewall-cmd --permanent --set-log-denied=off
firewall-cmd --reload
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快
上一篇:没有了 下一篇:如何在CentOS9上配置防火墙?