Debian中追踪用户权限变更
一 关键事件与日志来源
- 身份与特权命令:关注用户通过 su、sudo 提升权限的行为,通常记录在 /var/log/auth.log(Debian 常用 auth.log;部分发行版为 secure),可用 journalctl -u ssh 或 journalctl -f 实时查看。
- 账户与组变更:用户、组及密码策略的变更会影响权限基线,重点文件为 /etc/passwd、/etc/shadow、/etc/group。
- 文件与目录权限:实际资源访问控制的变化体现在文件权限/属主变更,可通过审计或 Syslog 的权限变更事件进行追踪。
- 系统调用层变更:进程通过 setuid/setgid 等系统调用改变有效 UID/GID,属于高风险特权操作,建议用内核审计精确捕获。
二 基于Syslog与journalctl的快速追踪
- 实时查看认证与授权相关日志:
- 查看全部认证日志:sudo journalctl -f -u ssh 或 sudo tail -f /var/log/auth.log
- 按关键字筛选 sudo/su 事件:sudo grep -iE “sudo|su” /var/log/auth.log
- 文件权限变更告警:在 rsyslog 中针对权限/属主变更事件做专门记录或转发,便于集中审计与告警(例如在 rsyslog 配置中增加针对权限变更日志的专属规则,并配合 logrotate 做长期保存)。
三 基于auditd的精确审计规则
- 安装与启用:sudo apt-get install auditd audispd-plugins;确保服务开机自启。
- 关键规则示例(建议写入 /etc/audit/rules.d/audit.rules 或新建 .rules 文件,避免直接改 /etc/audit/audit.rules):
- 监控关键账户文件写入(传统 watch,兼容性好):
- sudo auditctl -w /etc/passwd -p wa -k user_priv_escalation
- sudo auditctl -w /etc/shadow -p wa -k user_priv_escalation
- sudo auditctl -w /etc/group -p wa -k user_priv_escalation
- 监控特权命令执行(execve 系统调用):
- sudo auditctl -a always,exit -F arch=b64 -S execve -F exe=/usr/bin/sudo -k user_priv_escalation
- sudo auditctl -a always,exit -F arch=b64 -S execve -F exe=/usr/bin/su -k user_priv_escalation
- 监控 setuid/setgid 等特权系统调用:
- sudo auditctl -a always,exit -F arch=b64 -S setuid,setgid -F auid>=1000 -k user_priv_escalation
- 规则持久化与生效:
- 将当前规则导出:sudo sh -c ‘auditctl -l > /etc/audit/rules.d/audit.rules’
- 重启服务:sudo systemctl restart auditd(或 service auditd restart)
- 查询与检索:
- 按关键字检索审计事件:sudo ausearch -k user_priv_escalation
- 注:auditd 规则支持“旧式 -w 文件监控”和“新式 -a + path/perm 绑定 inode”两种,后者更高效,生产环境优先。
四 查询与告警实践
- 典型检索命令:
- 查看 sudo 使用:sudo ausearch -k user_priv_escalation | grep sudo
- 查看 su 切换:sudo ausearch -k user_priv_escalation | grep su
- 查看 setuid/setgid 调用:sudo ausearch -k user_priv_escalation | grep -E “setuid|setgid”
- 实时跟踪日志:sudo journalctl -f | grep -iE “sudo|su|setuid|setgid”
- 告警与集中化:
- 将 auth.log 或 auditd 日志通过 rsyslog 转发到远程日志服务器,便于统一检索、可视化与长期留存。
- 配置 logrotate 对 /var/log/auth.log、/var/log/syslog 及 audit 日志做按日/按大小轮转,防止磁盘被占满。
五 加固与排错要点
- 确保 rsyslog/auditd 开机自启并持续运行;对日志文件设置最小权限(如仅 root:syslog 可读写),防止篡改。
- 审计规则变更后使用 ausearch/auditctl -l 校验;系统升级或内核切换后检查规则是否仍生效。
- 若未见到预期事件,优先检查:服务是否运行、规则是否加载、是否监控了正确的架构(如 b64)、以及日志是否被外部系统轮转或清理。