有效监控服务器特权账户需覆盖“谁、何时、从哪来、做了什么”,依托auditd内核审计、sudo全命令记录、ssh会话追踪及行为分析告警,确保日志防篡改、可溯源。

监控服务器特权账户使用情况,关键在于覆盖“谁、何时、从哪来、做了什么”四个维度,且日志必须防篡改、可溯源。仅靠 history 或零散的 /var/log/secure 日志远远不够,真实有效的监控需结合内核级审计、权限执行日志、会话追踪与行为分析。
启用 auditd 进行内核级操作审计
auditd 是 Linux 内核自带的审计框架,能捕获 root 和 sudo 用户的真实系统调用,绕过 shell 层干扰(如 bash -c 或脚本执行)。
- 安装启动:
yum install audit -y && systemctl enable --now auditd(RHEL/CentOS)或apt install auditd -y && systemctl enable --now auditd(Debian/Ubuntu) - 添加关键规则(写入
/etc/audit/rules.d/privileged.rules):-a always,exit -F uid=0 -F perm=x -k privileged_exec-w /etc/sudoers -p wa -k config_change-w /bin/su -p x -k su_usage - 重载规则:
augenrules --load && systemctl restart auditd - 查询示例:
ausearch -k privileged_exec | aureport -f -i可看到 root 执行了哪个命令、参数、终端和时间
规范 sudo 使用并集中记录完整命令
禁止直接登录 root,所有提权操作必须走 sudo,并强制记录含参数的完整命令行。
- 在
/etc/sudoers中配置(用visudo编辑):Defaults logfile="/var/log/sudo.log"Defaults log_input,log_output(后者支持 I/O 录制,需配合sudo_logsrvd) - 限制权限粒度,例如:
alice ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/tail /var/log/nginx/error.log - 日常检查:
grep 'COMMAND=' /var/log/sudo.log | tail -20查最近命令;sudo -l -U alice验证实际授权范围
强化登录来源与会话上下文追踪
知道“执行了什么”只是基础,“谁在什么位置发起的”同样关键,尤其要识别异常 IP、终端和时间。
- 增强 SSH 日志:在
/etc/ssh/sshd_config中设置LogLevel VERBOSE(记录认证方式与密钥指纹)PrintLastLog yesMaxAuthTries 3 - 保护日志文件权限:
chown root:root /var/log/secure /var/log/auth.log /var/log/sudo.logchmod 600 /var/log/secure /var/log/auth.log /var/log/sudo.log - 快速查登录痕迹:
last -ai(IP+终端)、who -u(当前活跃会话+空闲时间)
引入行为分析与异常告警机制
单纯记录日志不够,需对特权行为建模,识别偏离基线的可疑活动。
- 检测非工作时间执行管理命令(如凌晨 3 点重启数据库服务)
- 发现跨地域并发登录(同一账户在纽约和新加坡同时活跃)
- 识别服务账户高频修改用户权限(正常应极少变更)
- 匹配已知攻击模式(如连续执行
net user+reg save+certutil -encode) - 工具建议:可用 ADAudit Plus(AD 环境)、Ping32(终端侧会话录制+进程跟踪),或自建 ELK + 自定义规则做行为聚类











