Ubuntu Syslog日志审计与合规性检查落地指南
一 合规目标与总体架构
二 日志采集与集中配置
systemctl is-enabled rsyslog && systemctl is-active rsyslog/etc/rsyslog.conf 或 /etc/rsyslog.d/50-remote.conf 添加:*.* @192.0.2.10:514/etc/rsyslog.conf 加入
module(load="imudp")input(type="imudp" port="514")systemctl restart rsyslog;验证端口:ss -ulnp | grep 514。/etc/systemd/journald.conf 设置 Storage=persistent(默认 auto,若 /var/log/journal 不存在会退化为易失)。journalctl -u ssh.service -b、journalctl --since "2025-12-16 00:00:00"。三 日志保护与留存策略
chmod 600 /var/log/auth.log;属主属组:root:adm。chattr +a /var/log/auth.log(必要时对 syslog、kern.log 等同样处理)。/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-usage;ls -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 阻断暴力登录 |
#!/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 不可达"
注:阈值与保留周期应结合制度/法规与业务风险确定,并纳入变更与审计流程管理。五 高级增强与取证能力
execve),便于还原用户命令执行链。
sudo apt-get install auditd audispd-pluginssudo auditctl -a always,exit -S execve(重启后需持久化规则)ausearch -m EXECVE | tail -n 50,aureport --execve --summarymax_log_file/num_logs 与 logrotate 策略管理。