如何利用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 --file、sudo 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 logwatch;logwatch --detail High --service All --range today
- 实时入侵防御:sudo apt install fail2ban;sudo systemctl enable --now fail2ban
- 合规与取证建议:
- 保持 NTP 时间同步(例如使用 chrony 或 systemd-timesyncd),确保审计事件时间线准确,便于取证与等保测评。