如何监控系统身份切换行为并记录详细的Su操作日志教程

梦静酱_1249

梦静酱_1249

2026-04-12

1040人浏览

原创

linux中su命令需通过pam日志增强、shell会话捕获和auditd三方面协同实现可审计监控:配置pam_exec记录完整参数与上下文,设置root shell历史与syslog输出,启用auditd监听execve调用,并统一归集告警。

如何监控系统身份切换行为并记录详细的su操作日志教程

Linux 系统中,su 命令是普通用户切换身份(尤其是提权到 root)最常用的方式之一,但默认日志记录非常简略(仅在 /var/log/auth.log 或 /var/log/secure 中留下一行“pam_unix(su:session): session opened for user root by xxx”),缺乏命令行参数、执行路径、终端信息、甚至失败原因等关键上下文。要真正实现可审计的身份切换行为监控,需从 PAM 日志增强、shell 会话捕获和审计子系统三方面协同配置。

启用并配置 PAM 的详细 su 日志记录

PAM(Pluggable Authentication Modules)是 su 行为的日志源头。默认的 pam_unix.so 模块日志级别低,需显式启用调试与完整字段输出:

  • 编辑 /etc/pam.d/su 和 /etc/pam.d/su-l(后者用于 su -)
  • 找到类似 auth [default=ignore] pam_succeed_if.so user = root quiet 或 auth [success=ok default=bad] pam_unix.so 的行
  • 在 auth 和 session 类型下,添加或修改为以下两行(确保位置靠前,优先生效):
    auth [default=info] pam_echo.so debug "su invoked by $(whoami) on $(tty) with args: $0 $@
    session required pam_exec.so debug log=/var/log/su-session.log /bin/sh -c 'echo "$(date +%Y-%m-%d\ %H:%M:%S) | $(tty) | $PAM_USER | $PAM_RUSER | $PAM_RHOST | $0 $@" >> /var/log/su-session.log'
  • 重启 rsyslog(systemctl restart rsyslog),测试执行 su -c 'id',检查 /var/log/su-session.log 是否包含调用者、目标用户、终端、远程主机(如 SSH)、完整命令行

强制所有 su 启动的 shell 记录操作历史(含 root 会话)

即使 su 成功,root 的后续命令仍不会自动记入原用户日志。需让每个 su 启动的交互式 shell 主动记录自身行为:

  • 在 /root/.bashrc(或对应 shell 配置文件)中追加:
    export HISTFILE="/var/log/bash-history-$(date +%Y%m%d)-$UID-$$"
    export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
    export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.info "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//") [$RETRN_VAL]"'
  • 同时配置 rsyslog 将 local6.info 转发至独立文件:新建 /etc/rsyslog.d/50-su-commands.conf,写入:
    local6.info /var/log/su-commands.log
    & stop
  • 重启 rsyslog,下次 su 进入的 shell 执行任意命令,都会在 /var/log/su-commands.log 中留下带时间戳、PID、命令内容和返回值的条目

使用 auditd 捕获底层 execve 调用(最可靠、不可绕过)

auditd 可监听内核级的系统调用,无论用户用 su、sudo、还是直接 exec /bin/bash,只要触发了 execve 且目标为 su 或 bash,即可捕获完整上下文:

  • 确认 auditd 已启用:systemctl enable --now auditd
  • 添加规则,监控 su 及其派生进程:
    auditctl -a always,exit -F path=/bin/su -F perm=x -k su-exec
    auditctl -a always,exit -F path=/usr/bin/su -F perm=x -k su-exec
    auditctl -a always,exit -F arch=b64 -S execve -F a0=*su* -k su-exec(匹配命令行含 su 的 execve)
  • 为持久化,将上述规则写入 /etc/audit/rules.d/su-monitor.rules,然后 augenrules --load
  • 查看记录:ausearch -k su-exec | aureport -f -i,可精确还原调用者 UID、终端、命令行参数、目标可执行文件、甚至 capset 变更

统一日志归集与告警建议

分散的日志不利于审计。推荐将三类日志(PAM session、shell command、auditd event)通过 rsyslog 或 filebeat 推送到集中日志平台(如 ELK、Graylog)。对以下行为设置实时告警:

  • 非白名单用户执行 su(对比 /etc/sudoers 或自定义允许列表)
  • su 切换后 5 分钟内无有效命令(疑似提权后闲置,可能被滥用)
  • 同一 IP 在 1 小时内 su 失败 ≥3 次(暴力尝试)
  • su -c 执行的命令含敏感关键词(如 dd if=、mkswap、iptables -F)

不复杂但容易忽略的是:所有日志路径需设为不可删除(chattr +a /var/log/su-*.log),且定期校验日志完整性(例如用 aide 监控 /var/log/ 目录变更)。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4090

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3473

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2673

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6510

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6162

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3573

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3065

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3299

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.8万人学习