温馨提示×

如何利用Ubuntu日志进行系统审计

小樊
35
2025-12-13 21:36:15
栏目: 智能运维

Ubuntu 日志系统审计实操指南

一 日志全景与关键文件

  • Ubuntu 的日志主要分布在 /var/log,核心文件与用途如下:
    • /var/log/syslog:系统级综合日志(Debian/Ubuntu 常用)。
    • /var/log/auth.log:登录与认证事件(SSH、sudo、PAM 等)。
    • /var/log/kern.log:内核日志。
    • /var/log/dmesg:内核启动与硬件相关输出。
    • /var/log/cron:计划任务执行日志。
    • 服务日志:/var/log/nginx//var/log/apache2//var/log/mysql/ 等。
  • 常用查看方式:
    • 实时查看系统日志:tail -f /var/log/syslog
    • 查看本次启动日志:journalctl -b
    • 查看服务日志:journalctl -u nginx.service
  • 建议先确认日志服务运行状态:systemctl is-enabled rsyslog && systemctl is-enabled systemd-journald

二 启用与配置系统审计 auditd

  • 安装与启动:
    • 安装:sudo apt update && sudo apt install auditd audispd-plugins
    • 启动与开机自启:sudo systemctl enable --now auditd
  • 规则示例(写入到 /etc/audit/rules.d/audit.rules 以持久化):
    • 监控关键账户与配置文件的写入/属性更改:
      • -w /etc/passwd -p wa -k user_account_changes
      • -w /etc/shadow -p wa -k shadow_changes
    • 监控命令执行(进程创建):
      • -a always,exit -F arch=b64 -S execve -k process_execution
    • 监控 SSH 相关认证行为:
      • -a always,exit -F arch=b64 -S execve -F path=/usr/sbin/sshd -k user_login
  • 使规则生效:
    • 生成并加载持久化规则:sudo augenrules --load
    • 或加载规则文件:sudo auditctl -R /etc/audit/rules.d/audit.rules
  • 常用查询与报表:
    • 按关键字检索:sudo ausearch -k user_account_changes
    • 生成审计报告:sudo aureport --filesudo aureport --process
  • 提示:auditd 规则需同时覆盖 b64/b32 架构;动态规则可用 auditctl 测试,再写入规则文件持久化。

三 集中化与加固日志

  • 远程日志(防本地篡改):
    • 客户端(Ubuntu 使用 rsyslog):在 /etc/rsyslog.conf/etc/rsyslog.d/ 添加
      • . @remote_log_server:514(UDP),或 @@remote_log_server:514(TCP)
      • 重启:sudo systemctl restart rsyslog
    • 服务器端启用接收(示例 UDP):
      • /etc/rsyslog.conf 中确保加载模块与端口:
        • module(load=“imudp”)
        • input(type=“imudp” port=“514”)
      • 重启 rsyslog 并开放防火墙端口 514
  • 日志轮转与保留(避免磁盘被占满):
    • 编辑 /etc/logrotate.d/rsyslog 或相应配置,示例:
      • /var/log/syslog { daily; rotate 7; compress; missingok; notifempty; create 640 root adm }
    • 测试与生效:sudo logrotate -d /etc/logrotate.conf(干跑),必要时执行实际轮转。
  • 日志文件保护(降低被篡改风险):
    • 关键日志权限:sudo chmod 600 /var/log/auth.log
    • 追加不可变属性:sudo chattr +a /var/log/auth.log(谨慎使用,变更前评估对 logrotate 的影响)。

四 审计查询与自动化告警

  • 认证与会话审计:
    • 最近登录:last
    • 失败登录尝试:grep “Failed password” /var/log/auth.log
    • 结合时间窗口检索:ausearch --start today --end now -k process_execution | aureport -x
  • 入侵迹象快速定位:
    • Web 异常:grep -E “(404|403|500)” /var/log/nginx/access.log | tail
    • 内核告警:grep -i “error|fail” /var/log/kern.log
  • 自动化分析与报告:
    • 安装与运行 Logwatch:sudo apt install logwatchlogwatch --detail High --service All --range today
    • 实时入侵防御:sudo apt install fail2bansudo systemctl enable --now fail2ban
  • 合规与取证建议:
    • 保持 NTP 时间同步(例如使用 chronysystemd-timesyncd),确保审计事件时间线准确,便于取证与等保测评。

0