可通过shell包装器+sudoers授权实现高危命令自动录像:授权带script或asciinema录制逻辑的包装脚本,配合requiretty、log_input/log_output强化审计,并严格限制录像目录与脚本权限防篡改。

不能直接靠 sudoers 本身触发视频录制,但可以结合 sudo 的命令拦截机制、shell 封装和审计工具,实现“执行特定高危命令时自动启动会话录像”。关键在于把录像逻辑嵌入到被授权命令的执行链中,而非依赖 sudoers 的语法原生支持。
用 shell 包装器 + sudoers 授权实现自动录制
核心思路:不直接授权原始命令(如 /bin/rm),而是授权一个带录制逻辑的包装脚本,并限制该脚本只能被 sudo 调用。
- 创建包装脚本(例如
/usr/local/bin/audit-rm),内容如下:
exec script -t 2>/var/log/audit/timing_$(date +%s).log /var/log/audit/session_$(date +%s).log --command="/bin/rm $@"
- 给脚本加执行权限:
sudo chmod 755 /usr/local/bin/audit-rm - 在
/etc/sudoers中授权该包装器(不用 NOPASSWD):
- 用户执行
sudo audit-rm /tmp/important.log时,实际触发script录制整个操作过程 - 录像文件含时间戳,命名可进一步加入用户名与主机名,便于归档索引
配合 requiretty 和 log_input/log_output 强化审计可信度
仅录屏不够,必须确保操作上下文真实、不可绕过:
- 在
/etc/sudoers顶部启用:Defaults requiretty, log_input, log_output -
requiretty阻止非终端环境(如 cron、web shell)调用 sudo,保证录像一定发生在真实交互终端 -
log_input和log_output会让 sudo 自动记录命令输入和输出二进制流(保存在/var/log/sudo-io/子目录),与script录像互为备份 - 二者同时启用后,即使用户退出再重连,只要没超时(默认5分钟),sudo 仍会继续记录 I/O,提升连续操作覆盖度
生产环境推荐:用 asciinema 替代 script 提升可靠性
script 在遇到 vim、less 或多窗口复用(tmux/screen)时容易失真;asciinema 更健壮且自带审计友好特性:
- 将包装脚本中的
script换成asciinema rec:
- 生成 JSON 文件,天然支持 Web 回放、命令搜索、时间轴跳转,适合安全团队快速核查
- 可配置自动上传至私有 asciinema server 或中心日志平台,避免本地文件被删改
- 搭配
Defaults logfile="/var/log/sudo.log",日志里会记录该次 asciinema 命令的调用时间、用户、目标主机,与录像元数据对齐
安全加固要点:防止绕过与篡改
录像机制自身必须可信,否则审计失效:
- 所有录像目录(如
/var/log/audit/)设权限为700,属主为root:root,普通用户不可读写 - 禁用用户对包装脚本的修改权:
sudo chown root:root /usr/local/bin/audit-rm && sudo chmod 755 - 启用 AIDE 或 Tripwire 监控
/usr/local/bin/audit-rm和/var/log/audit/下文件哈希值,异常变更立即告警 - 若使用
sudoers.d/管理,将规则单独放在/etc/sudoers.d/audit-wrapper并设权限440

















