Linux防火墙日志高效查看与排查
一、先确认你的防火墙栈
sudo systemctl is-active firewalld(返回 active 表示在用)。sudo iptables -L -n -v(有规则即在使用)。sudo firewall-cmd --list-all(仅对 firewalld 有效)。以上有助于选择对应的日志查看路径与命令。二、iptables 日志查看与开启
sudo grep -i iptables /var/log/messages 或 sudo grep -i iptables /var/log/syslog。sudo journalctl -k | grep -i iptables。sudo iptables -N LOGGINGsudo iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4sudo iptables -A LOGGING -j DROP-I INPUT 1 放到最前,或放在具体业务规则之后)。kern.* /var/log/iptables.logsudo systemctl restart rsyslog三、firewalld 日志查看与开启
sudo journalctl -u firewalldsudo journalctl -u firewalld -fsudo journalctl -u firewalld --since "2025-11-16 00:00:00" --until "2025-11-16 12:00:00"sudo journalctl -u firewalld -p err(常用级别:err、warning、info、debug)。LogDenied=all(或 zones 配置中对应项),然后 sudo systemctl restart firewalld。sudo grep -i "DROP\|REJECT" /var/log/messages 或 sudo grep -i "DROP\|REJECT" /var/log/syslogsudo journalctl -k | grep -i "DROP\|REJECT"。sudo firewall-cmd --set-log-level debug(仅在排障时临时使用,避免高负载)。sudo journalctl --vacuum-time 2weeks(保留近两周)。四、高效分析与排障命令清单
sudo tail -f /var/log/messages | egrep "DROP|REJECT|IPTables-Dropped",或 sudo journalctl -k -f | egrep "DROP|REJECT"。sudo journalctl -k --since "2025-11-16 10:00:00" --until "2025-11-16 10:05:00" | egrep "DROP|REJECT"。sudo grep -i "IPTables-Dropped" /var/log/syslog | awk '{print $11}' | sort | uniq -c | sort -nr | head。sudo grep ":22 " /var/log/messages | egrep "DROP|REJECT"。ss -tnp | grep :22、sudo tcpdump -ni any port 22,与日志交叉确认是否为规则或业务问题。五、稳定性与性能建议
--log-prefix 与 limit 模块,避免日志洪泛影响性能与磁盘。LogDenied=all(或至少对关键区域开启),排障期再临时提升 firewalld 日志级别到 debug,事后恢复。journalctl --vacuum-time 或 logrotate 策略,防止磁盘被占满。