如何通过Linux防火墙进行日志审计
导读:Linux防火墙日志审计实操指南 一 选择方案与准备 明确目标:记录被拒绝/丢弃的数据包、特定源/目的IP或端口、特定协议,并能按时间、接口、方向进行检索与统计。 方案选择: 使用 iptables/nftables 的 LOG 目标,...
Linux防火墙日志审计实操指南
一 选择方案与准备
- 明确目标:记录被拒绝/丢弃的数据包、特定源/目的IP或端口、特定协议,并能按时间、接口、方向进行检索与统计。
- 方案选择:
- 使用 iptables/nftables 的 LOG 目标,灵活、细粒度,适合服务器与网关。
- 使用 firewalld 的 logdenied 选项,快速开启被拒日志,适合以区域为基础的管理。
- 日志通道:防火墙日志通常走 内核日志(kern),由 rsyslog 写入文件(如 /var/log/messages、/var/log/kern.log),也可单独分流到自定义文件便于审计与轮转。
二 使用 firewalld 开启日志审计
- 查看与开启被拒日志:
- 查看状态:
firewall-cmd --get-log-denied(常见值:off、unicast、broadcast、multicast、all) - 开启示例:
firewall-cmd --set-log-denied=all --permanent或仅记录单播:--set-log-denied=unicast - 使配置生效:
firewall-cmd --reload
- 查看状态:
- 查看与分流日志:
- 默认位置:
tail -f /var/log/messages | grep -i reject - 使用 rsyslog 单独保存(创建文件 /etc/rsyslog.d/firewalld.conf):
重启 rsyslog::msg,contains,"_DROP" /var/log/firewalld.log & stop :msg,contains,"_REJECT" /var/log/firewalld.log & stopsystemctl restart rsyslog
- 默认位置:
- 日志字段要点:常见包含 IN=接口、SRC=源IP、DST=目的IP、PROTO=协议、SPT=源端口、DPT=目的端口、以及 FINAL_REJECT/REJECT/DROP 等动作标识,便于定位与统计。
三 使用 iptables 进行日志审计
- 基本记录(建议加前缀与级别,便于检索):
- 记录 INPUT 链:
iptables -A INPUT -j LOG --log-prefix 'IPTABLES-INPUT: ' --log-level 4 - 按源网段记录:
iptables -A INPUT -s 192.168.10.0/24 -j LOG --log-prefix 'IPTABLES-SRC10: ' --log-level 4 - 记录其他链:
iptables -A OUTPUT ...、iptables -A FORWARD ...
- 记录 INPUT 链:
- 日志落盘与分流(rsyslog 示例,创建 /etc/rsyslog.d/iptables.conf):
重启 rsyslog::msg,contains,"IPTABLES-INPUT: " /var/log/iptables-input.log & stop :msg,contains,"IPTABLES-OUTPUT: " /var/log/iptables-output.log & stop :msg,contains,"IPTABLES-FORWARD: " /var/log/iptables-forward.log & stopsystemctl restart rsyslog - 查看与分析:
- 实时查看:
tail -f /var/log/iptables-input.log - 发行版差异:Debian/Ubuntu 常看 /var/log/kern.log;CentOS/RHEL/Fedora 常看 /var/log/messages
- 实时查看:
- 性能提示:LOG 规则应放在对应策略之前,避免记录过多导致性能下降;必要时对高噪声流量设置更精确的前缀与条件。
四 日志解析与常用审计命令
- 字段速览:常见有 IN/OUT(接口)、SRC/DST(地址)、PROTO(协议)、SPT/DPT(端口)、LEN/TTL/ID、以及 TCP 标志位(如 SYN/ACK/RST)等,用于还原连接与判定行为。
- 统计 Top N 被拒来源 IP(firewalld 分流文件示例):
grep 'FINAL_REJECT' /var/log/firewalld.log | awk '{ print $10} ' \ | sort -n | uniq -c | sort -k1nr | head -10 - 统计 Top N 扫描来源 IP(iptables 前缀示例,按 SRC 计数):
grep 'IPTABLES-INPUT: ' /var/log/iptables-input.log \ | awk '{ print $10} ' | sort | uniq -c | sort -nr | head -10 - 按端口统计被拒连接(示例:DPT=22):
grep 'FINAL_REJECT' /var/log/firewalld.log | grep 'DPT=22' \ | awk '{ print $10} ' | sort | uniq -c | sort -nr | head -10 - 说明:字段位置会随系统与日志格式略有差异,建议先
head查看样例,再调整awk列号或配合正则匹配。
五 日志轮转与集中化
- 本地轮转:使用 logrotate 管理防火墙日志文件(如 /var/log/firewalld.log、/var/log/iptables-*.log),设置按日/按大小轮转与压缩,避免磁盘被占满。
- 集中化与可视化:
- 通过 rsyslog 将 kern.* 或指定前缀日志转发到 Elasticsearch/Graylog,再由 Grafana 展示与告警(如按
DPT=9200或特定SRC触发规则)。 - 示例(rsyslog 转发到 Graylog,UDP 1514):
重启 rsyslog 后生效。*.* @192.168.31.230:1514; RSYSLOG_SyslogProtocol23Format
- 通过 rsyslog 将 kern.* 或指定前缀日志转发到 Elasticsearch/Graylog,再由 Grafana 展示与告警(如按
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何通过Linux防火墙进行日志审计
本文地址: https://pptw.com/jishu/770963.html
