Ubuntu防火墙如何日志分析
小樊
38
2025-12-26 11:51:06
Ubuntu 防火墙日志分析实操指南
一 日志位置与启用
- 使用 UFW 时,先开启日志,日志默认写入 /var/log/ufw.log;UFW 是 Ubuntu 的默认防火墙前端,便于规则管理与审计。
命令示例:
sudo ufw logging on
sudo tail -f /var/log/ufw.log
如未生成日志,检查是否被 rsyslog 配置写入到 /var/log/syslog 或 /var/log/kern.log。UFW 规则与状态可用 sudo ufw status verbose 查看。
- 使用 iptables/nftables 时,建议创建专用日志链并加前缀,便于检索;日志通常进入内核/系统日志。
命令示例:
sudo iptables -N LOGGING
sudo iptables -A INPUT -j LOGGING
sudo iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
sudo iptables -A LOGGING -j DROP
查看方式:
sudo tail -f /var/log/kern.log
sudo tail -f /var/log/syslog
提示:UFW 本质基于 iptables/nftables,开启 UFW 后也可用上述路径查看对应日志。
二 快速定位与常用命令
- 实时监控与检索
- 实时看 UFW 日志:tail -f /var/log/ufw.log
- 实时看内核/系统日志:tail -f /var/log/kern.log 或 tail -f /var/log/syslog
- 按时间筛选:journalctl --since “2025-12-26 00:00:00” -f
- 按关键字过滤:grep “IPTables-Dropped” /var/log/kern.log
- 统计 Top N 来源 IP(iptables 前缀示例)
- 提取被丢弃包的源 IP 并计数:
grep “IPTables-Dropped” /var/log/kern.log | awk ‘{print $11}’ | sort | uniq -c | sort -nr | head
- 说明:字段位置会随日志格式略有差异,必要时用 awk 调整列号或用正则匹配 SRC= 后的 IP。
- 按端口/协议快速筛查
- 查看某端口相关的拒绝日志:grep ":22 " /var/log/ufw.log 或 grep “dpt:22” /var/log/ufw.log
- 结合协议筛选:grep “PROTO=TCP” /var/log/kern.log。
三 进阶分析场景
- 识别扫描与暴力尝试
- 统计单 IP 的连接尝试次数(示例为 iptables 前缀日志):
grep “IPTables-Dropped” /var/log/kern.log | awk ‘{print $11}’ | sort | uniq -c | sort -nr | head
- 关联认证失败与防火墙拒绝,定位暴力来源:
grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -nr
grep “IPTables-Dropped” /var/log/kern.log | grep ":22 " | awk ‘{print $11}’ | sort | uniq -c | sort -nr
- 时间窗口分析
- 统计最近 10 分钟内的拒绝趋势:
journalctl --since “10 minutes ago” | grep “IPTables-Dropped” | wc -l
- 将日志时间对齐(例如转换为 UTC 或本地时区)后再做跨日志关联,有助于排查瞬时峰值与联动事件。
- 字段提取与模式匹配
- 当日志格式不固定时,用正则从“SRC=”“DPT=”等字段提取 IP 与端口,再用 sort | uniq -c 汇总,能稳定得到 Top N 源/目的。
四 可视化与告警
- 集中化与可视化
- 使用 rsyslog/syslog-ng 将日志统一收集到中央服务器,便于审计与留存。
- 使用 ELK Stack(Elasticsearch, Logstash, Kibana) 或 Graylog 做索引、可视化与仪表盘,结合规则实现趋势分析与异常告警。
- 报表与阈值告警
- 采用 Logwatch 生成每日/每周安全与防火墙报告,并通过邮件发送摘要。
- 使用 Swatch 对关键模式(如 DROP/REJECT 前缀)进行实时监控与自定义动作(邮件、封禁脚本等)。
五 日志治理与加固
- 控制日志量与保留策略
- 为 iptables 日志加 limit 限速,避免日志洪泛:
-m limit --limit 2/min(可按需调整为 5/min 等)。
- 配置 logrotate 定期轮转与压缩(/etc/logrotate.conf 与 /etc/logrotate.d/),防止磁盘被占满。
- 安全与合规
- 限制日志文件权限(如 640,属主 root:adm),避免泄露敏感信息;必要时对归档与传输链路进行加密。
- 对多台主机采用集中式日志存储,降低本地篡改风险。