温馨提示×

Ubuntu Syslog日志审计:如何实现合规性检查

小樊
42
2025-12-16 23:14:49
栏目: 智能运维

Ubuntu Syslog日志审计与合规性检查落地指南

一 合规目标与总体架构

  • 明确审计范围:覆盖用户认证(如 SSH 登录/登出、sudo 提权)、系统关键事件(服务启停、内核告警)、计划任务网络与安全设备日志等,确保可追溯、不可抵赖。
  • 架构建议:在 Ubuntu 上以 systemd-journald 为统一采集层,配合 rsyslog/syslog-ng 做本地落盘与远程转发,必要时接入 SIEM/ELK 做关联分析与报表。
  • 关键控制点:启用持久化存储、配置远程集中日志、实施访问控制与完整性保护、落实日志轮替与保留、建立告警与报表机制。

二 日志采集与集中配置

  • 启用并验证采集组件:
    • 检查服务状态:systemctl is-enabled rsyslog && systemctl is-active rsyslog
    • Ubuntu 默认使用 rsyslog;如需更强路由与解析可部署 syslog-ng
  • 配置 rsyslog 转发到远程日志服务器(UDP 示例):
    • 客户端 /etc/rsyslog.conf/etc/rsyslog.d/50-remote.conf 添加:*.* @192.0.2.10:514
    • 服务端启用 UDP 接收:在 /etc/rsyslog.conf 加入
      • module(load="imudp")
      • input(type="imudp" port="514")
    • 重启服务:systemctl restart rsyslog;验证端口:ss -ulnp | grep 514
  • 使用 systemd-journald 的要点:
    • 建议持久化:/etc/systemd/journald.conf 设置 Storage=persistent(默认 auto,若 /var/log/journal 不存在会退化为易失)。
    • 统一查询:journalctl -u ssh.service -bjournalctl --since "2025-12-16 00:00:00"

三 日志保护与留存策略

  • 文件权限与防篡改:
    • 关键日志最小权限:chmod 600 /var/log/auth.log;属主属组:root:adm
    • 追加不可变属性:chattr +a /var/log/auth.log(必要时对 syslogkern.log 等同样处理)。
  • 轮替与保留(logrotate):
    • 编辑 /etc/logrotate.d/rsyslog,示例:
      /var/log/syslog
      /var/log/auth.log {
        daily
        rotate 30
        compress
        missingok
        notifempty
        create 640 root adm
        postrotate
          systemctl reload rsyslog >/dev/null 2>&1 || true
        endscript
      }
      
    • 测试与生效:logrotate -d /etc/logrotate.d/rsyslog(调试),logrotate /etc/logrotate.d/rsyslog(执行)。
  • 远程集中与本地留存双保险:本地保留满足快速取证,远程集中避免本地清证。

四 合规性检查清单与可落地检查脚本

  • 建议的合规检查清单(示例,按制度细化阈值与口径):
检查项 目标与要点 判定/工具示例
远程集中日志已启用 防止本地日志被清,满足留存与取证 grep -E '@[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:514' /etc/rsyslog.* 或检查服务端 imudp 配置
关键日志持久化 重启后日志不丢失 journalctl --disk-usagels -ld /var/log/journal
日志权限最小化 仅授权人员可读 stat -c "%a %U:%G %n" /var/log/auth.log /var/log/syslog
日志轮替与保留 满足法规/内控周期 `grep -E 'daily
完整性保护 防篡改与可验证 lsattr /var/log/auth.log(含 +a 属性);对高要求可启用 journald FSS
登录审计覆盖 记录成功/失败登录与提权 `grep -E 'Failed
计划任务审计 记录 cron 执行与异常 `grep CRON /var/log/syslog
内核与系统告警 及时发现硬件/安全事件 tail -n 50 /var/log/kern.log
远程日志连通性 网络与端口可达 nc -vzu 192.0.2.10 514 或 `ss -ulnp
报表与告警机制 持续合规与异常发现 配置 Logwatch 日报;部署 Fail2Ban 阻断暴力登录
  • 可落地的快速检查脚本(示例,按需扩展与接入工单/CMDB):
    #!/usr/bin/env bash
    set -Eeuo pipefail
    echo "=== [1] 远程集中日志 ==="
    grep -R --include='*.conf' -E '@[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:514' /etc/rsyslog* || echo "未配置远程转发"
    
    echo "=== [2] Journald 持久化 ==="
    if [[ $(readlink -f /etc/systemd/journald.conf) ]]; then
      grep -E '^\s*Storage=' /etc/systemd/journald.conf || echo "未显式设置 Storage"
    fi
    ls -ld /var/log/journal 2>/dev/null || echo "未启用持久化存储"
    
    echo "=== [3] 关键日志权限 ==="
    stat -c "%a %U:%G %n" /var/log/auth.log /var/log/syslog
    
    echo "=== [4] 轮替与保留 ==="
    grep -E 'daily|rotate [0-9]+' /etc/logrotate.d/rsyslog || echo "未配置轮替/保留"
    
    echo "=== [5] 登录审计抽样 ==="
    tail -n 20 /var/log/auth.log | egrep -i 'Failed|Accepted'
    
    echo "=== [6] 远程连通性 ==="
    nc -vzu 192.0.2.10 514 2>&1 || echo "远程 Syslog 514/UDP 不可达"
    
    注:阈值与保留周期应结合制度/法规业务风险确定,并纳入变更与审计流程管理。

五 高级增强与取证能力

  • 命令级审计(补充 Syslog 的不足):部署 auditd 记录关键系统调用(如 execve),便于还原用户命令执行链。
    • 安装:sudo apt-get install auditd audispd-plugins
    • 规则示例(监控命令执行):sudo auditctl -a always,exit -S execve(重启后需持久化规则)
    • 查询与报表:ausearch -m EXECVE | tail -n 50aureport --execve --summary
    • 注意:审计日志量大,需结合 max_log_file/num_logslogrotate 策略管理。
  • 完整性校验与取证:
    • journald 支持前向安全密封 FSS(Forward Secure Sealing),用于检测历史日志是否被篡改,适合高合规场景。
  • 集中分析与告警:
    • 将 Syslog 接入 ELK/SIEM 做关联分析、可视化与合规报表;使用 Logwatch 生成日报/周报,配合 Fail2Ban 对暴力登录做自动阻断。

0