配置 Auditd 记录系统用户的终端会话输入内容

大婷君_7892

大婷君_7892

2026-07-13

822人浏览

原创

auditd能精确捕获execve系统调用(如谁在何时执行何程序),但默认不记录完整命令行字符串;需配置arch=b64/b32规则、启用enriched日志格式并结合auid归因,才能还原用户实际执行的命令,且无法记录shell内建命令或多行交互内容。

配置 auditd 记录系统用户的终端会话输入内容

Auditd 本身不记录用户在终端里“敲了什么”,它只审计内核级事件,比如 execve() 系统调用——也就是“谁在什么时候执行了哪个程序”,但默认不保存原始命令行字符串(如 cp -r /tmp/a /home/user/)。要接近“记录终端输入内容”的目标,必须组合配置、理解限制,并做合理取舍。


✅ 明确目标:记录“用户实际执行的命令”而非“按键流”

Auditd 能做到的是:

  • 精确捕获每个 execve 调用(含可执行路径、参数个数、部分参数内容)
  • 关联真实 UID、AUID(登录时固定审计 ID)、TTY、会话 ID、时间戳
  • 不受 HISTFILE、unset、sudo -i、ssh user@host 'cmd' 等绕过影响

但它做不到:

  • 记录未触发 execve 的 shell 内建命令(如 cd、export、alias)
  • 还原多行编辑、历史展开(!!)、管道组合(ls | grep x 是两个 execve)
  • 捕获被 exec 替换掉的进程后续输入(如 exec python 后的所有交互)

所以,“记录终端会话输入内容”的务实做法是:启用 execve 参数记录 + 用 auid 区分真实登录者 + 配合 bash history/syslog 做补充还原。


? 启用 execve 参数记录(关键步骤)

要让 auditd 日志中出现 argv[0], argv[1] 等字段,需同时满足:

  • 内核启动参数含 audit=1
    检查:cat /proc/cmdline | grep audit=1
    若无,需在 GRUB 配置(如 /etc/default/grub)中添加 audit=1,再 sudo update-grub && sudo reboot

  • 审计规则明确指定 -S execve 并带 -k 标签
    在 /etc/audit/rules.d/cmd.rules 中写入:

    -a always,exit -F arch=b64 -S execve -k cmd_exec
    -a always,exit -F arch=b32 -S execve -k cmd_exec

    注意:不要加 -F uid!=0 类过滤,改用 auid 查询更可靠;文件名必须以 .rules 结尾。

  • 确保 auditd 配置支持参数日志
    检查 /etc/audit/auditd.conf 中:

    log_format = ENRICHED   # RHEL 8+/CentOS 8+/Ubuntu 20.04+ 默认开启

    旧系统若为 RAW,改为 ENRICHED 并重启服务。

  • 验证是否生效
    执行一条命令(如 date "+%F"),然后运行:

    sudo ausearch -m execve -i | grep -A5 "comm="

    若输出含 argc=2、argv[0]=date、argv[1]=+%F,说明参数已记录;否则检查 audit_backlog_limit(建议 ≥ 8192)和内核模块加载状态。


? 使用 auid 准确归因到登录会话

普通 uid 在 su 或 sshd 子进程中可能不可靠,而 auid(Audit UID)从用户首次登录起就固定不变:

宝塔Linux面板11.3.0
宝塔Linux面板11.3.0

宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。

下载
  • 查某用户所有命令(例如 john):

    sudo ausearch -m execve -ui $(id -u john) --raw | aureport -f -i
  • 查某次登录会话(如 session ID 为 12345):

    sudo ausearch -m execve --session 12345 --raw | aureport -f -i
  • 查 auid 对应的用户名(需 /etc/passwd 可读):

    sudo ausearch -m execve -auid 1001 --raw | aureport -f -i

提示:last -i 或 loginctl list-sessions 可帮你找到活跃 session ID;ausearch -m USER_LOGIN 可查登录事件本身。


?️ 补充加固与替代方案(提升完整性)

单纯依赖 auditd 仍有盲区(如内建命令、高并发丢参)。生产环境推荐组合策略:

  • 强制记录 shell 历史到 syslog(稳定还原输入)
    在 /etc/bash.bashrc 或 /etc/skel/.bashrc 中添加:

    export HISTTIMEFORMAT="%Y-%m-%d %T "
    export PROMPT_COMMAND='history -a; logger -p local6.info -t "bash[$$]" "$(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//")"'

    再配置 rsyslog 将 local6.* 转发至远程日志服务器。

  • 锁定审计日志防篡改

    sudo chattr +a /var/log/audit/audit.log
  • 转发日志至 SIEM
    编辑 /etc/rsyslog.d/audit.conf:

    $IncludeConfig /etc/rsyslog.d/*.conf
    :programname, isequal, "auditd" /var/log/audit/remote.log
    *.* @your-siem-server:514
  • 避免全局监控引发性能问题
    如非必要,不启用全量 execve;可按需聚焦高危路径:

    -w /bin/rm -p x -k dangerous
    -w /usr/bin/python3 -p x -k script_exec

不复杂但容易忽略

相关文章

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

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

下载

相关标签:

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

相关专题

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

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

2023.06.21

4010

4

如何安装LINUX
如何安装LINUX

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

2023.06.29

3433

10

linux find
linux find

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

2023.06.30

2593

5

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

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

2023.07.05

6310

7

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

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

2023.07.06

5962

7

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

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

2023.07.20

3473

8

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

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

2023.07.20

2965

4

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

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

2023.07.25

3199

6

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

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

2023.07.31

297

3

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP安全与漏洞
PHP安全与漏洞

共12课时 | 2.5万人学习

宝塔官方文档(产品介绍)
宝塔官方文档(产品介绍)

共0课时 | 0人学习