sudo 会话本身也要加固
提权授权管的是「谁可以用 sudo」,会话加固管的是「用 sudo 的过程是否可控」。默认情况下,提权在成功输入口令后有一段时间无需再次确认,执行过程也不一定留完整日志。加上近年提权组件本身出现过高危漏洞,除了版本管理,还需要配置层面的三件事:启用伪终端、缩短免确认窗口、记录执行日志。
基本信息
| 加固项 | 提权会话的可控性与可审计性 |
|---|---|
| 适用平台 | Linux(sudo,RHEL/CentOS/Debian/Ubuntu) |
| 风险等级 | 中 |
| 配置位置 | /etc/sudoers 或其引入目录下的文件 |
| 编辑要求 | 必须使用校验工具编辑,避免语法错误 |
典型使用场景
- 等保安全审计:要求特权操作留痕、可追溯到具体用户
- 事件取证:还原提权过程中执行的完整操作
- 会话防劫持:降低被劫持会话直接获得提权的可能
- 共享账号治理:多人使用同一账号时依靠日志区分操作
- 版本整改:提权组件升级后同步完善配置项
推荐配置
推荐配置
Defaults use_pty # 通过伪终端执行,便于控制与记录
Defaults timestamp_timeout=5 # 口令免确认窗口 5 分钟
Defaults passwd_tries=3 # 口令尝试次数上限
Defaults logfile="/var/log/sudo.log" # 记录提权执行日志
Defaults log_input, log_output # 记录输入输出(需会话记录支持)校验与生效
校验与生效
visudo -c # 校验语法,改动后必做
sudo -l # 确认当前账号的授权正常
systemctl restart rsyslog 2>/dev/null # 日志落盘目标服务确认运行
ls -l /var/log/sudo.log 2>/dev/null # 确认日志文件已生成参数作用读法
| 参数 | 作用 | 设置建议 |
|---|---|---|
| use_pty | 提权命令在伪终端中执行 | 建议启用,便于会话控制与记录 |
| timestamp_timeout | 口令免确认的时间窗口 | 建议缩短;为 0 表示每次都要输入 |
| passwd_tries | 口令错误允许次数 | 配合账号锁定策略设置 |
| logfile | 提权执行的日志文件 | 集中管理并由日志轮转维护 |
| log_input 与 log_output | 记录会话的输入输出内容 | 需要相应组件支持,启用前先测试 |
参数加固不能替代版本升级:提权组件近年出现过高危漏洞,受影响版本的提权路径只有升级才会关闭。按要求先完成版本更新,再逐项落实配置加固,只做其中一半属于假加固。
免确认窗口设为 0 表示每次执行都要重新输入口令,适合对特权操作要求严格的场景;设成很大数值则等于长期免密,会话被劫持的风险随之上升。日志文件需要确认接收端服务在运行并配置轮转,否则可能出现日志不落盘或被快速覆盖。
配置与审计的闭环
配置完成后要做两件事:一是用校验工具确认语法正确,并实际执行一次提权确认日志已产生;二是把日志接入集中留存,与身份文件监控、提权命令审计形成同一条时间线。这样既满足条款要求,也能在事件发生时用一份日志回答「谁执行了什么」。