服务器登录日志审计与监控如何做

作者:袖梨 2026-08-08

auditd是Linux内核级审计核心,通过-a always,exit -F arch=b64 -S execve等规则捕获SSH、su/sudo等全路径登录行为,结合auid唯一标识会话并串联操作链,配合ausearch精准回溯,远超/var/log/secure等应用层日志能力。

服务器登录日志审计与监控,核心是捕获真实登录行为、统一标识会话、串联完整操作链,并能快速回溯。只依赖 /var/log/secure 或 Windows 事件查看器远远不够——攻击者可绕过应用层日志,必须从内核级入手。

Linux:用 auditd 捕获全路径登录行为

SSH 登录、本地控制台、su/sudo 切换都需覆盖,每条规则都要带上 -k login_context 标签和 -F auid!=4294967295 过滤系统进程:

  1. 监控 SSH 连接建立:-a always,exit -F arch=b64 -S connect -F a0=0x3 -k ssh_connect(匹配 IPv4 建连)
  2. 捕获 PAM 认证调用:-w /etc/pam.d/sshd -p r -k pam_ssh(绕过 sshd 日志的关键兜底)
  3. 盯住提权入口:-w /usr/bin/sudo -p x -k sudo_exec-w /bin/su -p x -k su_attempt
  4. 记录会话启动:-a always,exit -F arch=b64 -S execve -F path=/bin/bash -k bash_spawn

Windows:启用高级审计策略并配足空间

基本审计粒度太粗,必须启用“高级审核策略配置”:

  1. 打开 gpedit.msc → 计算机配置 → 安全设置 → 高级审核策略配置 → 系统审核策略
  2. 逐项启用:账户登录(成功+失败)、特权使用详细跟踪(进程创建)、对象访问(若需监控敏感文件)
  3. 进入 compmgmt.msc → 事件查看器 → 安全日志 → 右键属性 → 设置日志大小至少 1GB,启用“按需覆盖事件”

统一溯源:用 auid 和时间窗口拉取完整行为链

auid 是用户首次登录时分配的唯一 ID,不随 su/sudo 改变,是关联所有操作的核心字段:

  1. 查某次登录(比如来自 192.168.1.100):ausearch -m USER_LOGIN -i | grep "host=192.168.1.100"
  2. 根据登录时间戳拉整条链:ausearch -ts "07/30/2026 02:15:00" -te "07/30/2026 02:18:00" -k login_context -i
  3. Windows 对应操作:在事件查看器中筛选事件 ID 4624(登录)、4672(特权登录)、4688(进程创建),按 SubjectLogonId 关联

落地关键:测试→持久化→查日志,三步不能跳

别让规则长期静默失效:

  1. 先用 auditctl -a ... 加临时规则,手动 SSH 或 sudo 一次
  2. 立刻运行 ausearch -k ssh_connect -i | tail -3,确认有输出再写入 /etc/audit/rules.d/20-login.rules
  3. 执行 augenrules --load 加载,再用 auditctl -l | grep login_context 验证是否生效
  4. 查日志永远用 ausearchaureport,不要直接 cat /var/log/audit/audit.log

相关文章

精彩推荐