ubuntu防火墙日志分析
小樊
46
2025-11-23 01:03:48
Ubuntu 防火墙日志分析实用指南
一 日志来源与存放位置
- UFW(Uncomplicated Firewall):日志默认写入 /var/log/ufw.log,启用日志可用 sudo ufw logging on,日志级别可为 low/medium/high/full(默认 low)。UFW 日志以 [UFW BLOCK] 或 [UFW ALLOW] 开头,便于快速筛选。
- iptables/nftables:内核 Netfilter 日志通常写入 /var/log/kern.log(Ubuntu/Debian),也可在 /var/log/syslog 中检索;通过规则中的 -j LOG 或 log 语句输出,建议加 –log-prefix 便于过滤。
- firewalld:服务日志通过 journalctl -u firewalld 查看;被拒绝的数据包可在 /etc/firewalld/firewalld.conf 中将 LogDenied=all 后重启服务以记录。
- 系统日志常用路径:/var/log/syslog、/var/log/kern.log、/var/log/messages 等,配合 tail、grep、less 等命令进行查看与检索。
二 快速定位与实时监控
- 实时查看 UFW 日志:tail -f /var/log/ufw.log
- 实时查看内核/iptables 日志:tail -f /var/log/kern.log | grep -i “UFW\|iptables”
- 查看 firewalld 服务日志:journalctl -u firewalld -f
- 按时间窗口检索:journalctl --since “2025-11-23 10:00:00” --until “2025-11-23 12:00:00” -u firewalld
- 按关键字过滤:grep “UFW BLOCK” /var/log/ufw.log 或 grep “DPT=22” /var/log/kern.log
- 组合条件示例:查找过去 10 分钟所有被 UFW 拒绝的 TCP 22 端口尝试
- journalctl --since “10 minutes ago” -u firewalld | grep “UFW BLOCK” | grep “DPT=22”
- grep “UFW BLOCK” /var/log/ufw.log | grep “DPT=22” | tail -n 50
三 日志字段解读与示例
- 典型 UFW 日志行(/var/log/ufw.log):
- 示例:Sep 16 15:08:14 hostname kernel: [UFW BLOCK] IN=eth0 OUT= MAC=… SRC=123.45.67.89 DST=987.65.43.21 LEN=40 TTL=249 ID=8475 PROTO=TCP SPT=48247 DPT=22 WINDOW=1024 RES=0x00 SYN URGP=0
- 关键字段含义:
- [UFW BLOCK/ALLOW]:事件类型(拦截/放行)
- IN/OUT:入站/出站方向
- SRC/DST:源/目的 IP
- PROTO:协议(TCP/UDP/ICMP 等)
- SPT/DPT:源/目的端口
- LEN/TTL:包长度/生存时间
- SYN:TCP SYN 标志(常见于新连接尝试)
- 这些字段可用于快速判断是否为端口扫描、暴力登录、异常协议访问等。
四 常用分析命令与处置建议
- 统计与定位
- 统计被拒来源 Top 10:grep “UFW BLOCK” /var/log/ufw.log | awk ‘{print $8}’ | sort | uniq -c | sort -nr | head
- 按端口统计被拒:grep “UFW BLOCK” /var/log/ufw.log | awk -F’DPT=’ ‘{print $2}’ | awk ‘{print $1}’ | sort -n | uniq -c | sort -nr
- 查找某 IP 的所有拦截记录:grep “SRC=1.2.3.4” /var/log/ufw.log
- 观察新连接速率(近 1 分钟):journalctl --since “1 minute ago” -u firewalld | grep “UFW BLOCK” | wc -l
- 处置动作(示例)
- 临时封禁单个 IP:sudo ufw deny from 1.2.3.4
- 封禁子网:sudo ufw deny from 203.0.113.0/24
- 重载规则:sudo ufw reload
- 调整日志级别(减少/增加日志量):sudo ufw logging medium|high
- 可视化与告警
- 使用 Logwatch/GoAccess 生成日报/趋势图;结合 journalctl 或 rsyslog 做集中化与长期留存。
五 日志轮转与性能优化
- 日志量较大时优先调整 UFW 日志级别(low/medium/high/full),避免记录过多包级细节;必要时仅对关键链/端口记录。
- 确保 logrotate 正常运行,对 /var/log/ufw.log、/var/log/kern.log、/var/log/syslog 进行按日/按大小轮转与压缩,防止磁盘被占满。
- 高并发场景建议将防火墙日志接入集中式日志平台(如 rsyslog/ELK/Graylog),便于检索、告警与审计。