首页主机资讯如何通过Linux防火墙进行日志审计

如何通过Linux防火墙进行日志审计

时间2025-12-12 21:54:04发布访客分类主机资讯浏览677
导读:Linux防火墙日志审计实操指南 一 选择方案与准备 明确目标:记录被拒绝/丢弃的数据包、特定源/目的IP或端口、特定协议,并能按时间、接口、方向进行检索与统计。 方案选择: 使用 iptables/nftables 的 LOG 目标,...

Linux防火墙日志审计实操指南

一 选择方案与准备

  • 明确目标:记录被拒绝/丢弃的数据包、特定源/目的IP或端口、特定协议,并能按时间、接口、方向进行检索与统计。
  • 方案选择:
    • 使用 iptables/nftables 的 LOG 目标,灵活、细粒度,适合服务器与网关。
    • 使用 firewalldlogdenied 选项,快速开启被拒日志,适合以区域为基础的管理。
  • 日志通道:防火墙日志通常走 内核日志(kern),由 rsyslog 写入文件(如 /var/log/messages/var/log/kern.log),也可单独分流到自定义文件便于审计与轮转。

二 使用 firewalld 开启日志审计

  • 查看与开启被拒日志:
    • 查看状态:firewall-cmd --get-log-denied(常见值:offunicastbroadcastmulticastall
    • 开启示例: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):
      :msg,contains,"_DROP" /var/log/firewalld.log
      &
           stop
      :msg,contains,"_REJECT" /var/log/firewalld.log
      &
           stop
      
      重启 rsyslog:systemctl restart rsyslog
  • 日志字段要点:常见包含 IN=接口SRC=源IPDST=目的IPPROTO=协议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 ...
  • 日志落盘与分流(rsyslog 示例,创建 /etc/rsyslog.d/iptables.conf):
    :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
    &
     stop
    
    重启 rsyslog:systemctl 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):
      *.* @192.168.31.230:1514;
          RSYSLOG_SyslogProtocol23Format
      
      重启 rsyslog 后生效。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何通过Linux防火墙进行日志审计
本文地址: https://pptw.com/jishu/770963.html
Nginx日志中的缓存问题怎么解决 Nginx错误日志常见问题及解决方法

游客 回复需填写必要信息