Linux防火墙日志查看与分析
一、先确认防火墙类型与日志开关
firewall-cmd --state;查看规则用 firewall-cmd --list-all。若为 firewalld,建议开启被拒日志:firewall-cmd --set-log-denied=all --permanent && firewall-cmd --reload(可选值:all/unicast/broadcast/multicast/off,默认 off)。iptables -L -n -v --line-numbers 查看规则顺序与命中;日志默认走内核日志(rsyslog),常见落盘为 /var/log/messages 或 /var/log/syslog,取决于系统与 rsyslog 配置。二、查看日志的常用方法
journalctl -u firewalld -f(实时跟踪)。tail -F /var/log/messages | grep 'iptables:' 或 tail -F /var/log/syslog | grep 'iptables:'。journalctl --since "2025-12-01 00:00:00" --until "2025-12-01 23:59:59";按关键字如 DROP/REJECT/iptables 过滤。三、日志落盘与分离配置
/etc/rsyslog.d/firewalld.conf:systemctl restart rsyslog。/etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf 增加:kern.warning /var/log/iptables.logsystemctl restart rsyslog。/var/log/iptables.log、/var/log/firewalld.log 等设置按日轮转、压缩与保留天数(如保留 7 天)。四、快速分析与排障命令
awk '{print $10}' /var/log/firewalld.log | grep -o 'SRC=[0-9a-fA-F.:]\+' | sort | uniq -c | sort -nr | headgrep DPT /var/log/firewalld.log | awk '{print $19}' | sort -n | uniq -c | sort -nr | head(TCP);UDP 可改为 $20。tail -F /var/log/firewalld.log | egrep '(_DROP|_REJECT)'iptables -L -n -v --line-numbers(看命中计数与顺序);必要时在相应链前插入 LOG 规则做“只记录不阻断”的验证。tcpdump -ni eth0 'tcp port 22 or udp port 53'(与日志时间窗口对齐,验证是否为真实流量)。五、常见模式与处置建议
fail2ban、限制来源网段、仅允许跳板机访问。