首页/安全/安全加固速查/sudo 凭据缓存与提权审计
口令与认证策略55 条

sudo 凭据缓存与提权审计

sudo 默认缓存认证 5 分钟:共享运维机上缓存等于给后来者免密提权;收紧 timeout 并开启 I/O 日志更适合审计场景。

安全加固速查安全更新于 2026-10-13

sudo 凭据缓存为什么要收紧

sudo 默认在一次成功认证后缓存约 5 分钟,期间再执行 sudo 不需要重新输入口令。单人独占的笔记本上这很方便,共享的跳板机与运维机上等于给后来者留下免密提权窗口。收紧缓存时间并开启提权审计,才符合共享环境的安全预期。

基本信息

适用平台Linux/macOS(sudo 1.8+)
配置文件/etc/sudoers 或 /etc/sudoers.d/ 下的独立文件
关键参数timestamp_timeout、use_pty、logfile、log_input/log_output
强制要求所有修改必须用 visudo 或 visudo -c 校验

典型使用场景

  • 共享跳板机:缩短缓存时间,避免后来的登录者直接拿到提权能力
  • 合规审计:把提权命令与输入输出落盘,满足运维操作留痕要求
  • 批量运维环境:确认自动化的 sudo 调用方式,避免缓存设为 0 导致脚本卡住
  • 故障排查:用 sudo -l 与日志确认某个用户实际拥有哪些提权权限

sudoers 配置

sudoers 配置
# 用 visudo 打开独立文件,避免直接编辑主文件
# visudo -f /etc/sudoers.d/99-hardening
Defaults timestamp_timeout=5
Defaults use_pty
Defaults logfile=/var/log/sudo.log
Defaults log_input, log_output
# 校验语法后再生效(visudo 保存时已校验,这里做二次确认)
visudo -c

核验

核验
# 查看当前用户可用的提权权限
sudo -l
# 确认版本与编译参数,判断是否支持日志相关选项
sudo -V | head -5
# 查看提权日志
ls -l /var/log/sudo.log 2>/dev/null && tail -5 /var/log/sudo.log

参数读法

参数含义取值建议
timestamp_timeout认证缓存分钟数共享环境取 5 或更短;0 表示每次都问
use_pty在伪终端中运行命令开启,可防止部分绕过与输出丢失
logfile记录执行的命令单独指定文件便于集中采集
log_input / log_output记录完整输入输出审计价值高,但日志本身属敏感数据
log_input 与 log_output 会记录完整会话内容:审计价值高,泄露风险同样高,日志目录权限应为 750 以上并限定读取者。
改 sudoers 必须用 visudo:语法错误的 sudoers 文件会让所有提权操作失效,届时只能靠单用户模式或救援控制台修复。
改动前保留一个已获得 root 权限的会话:若新配置有误,仍可用该会话回滚,这是所有提权相关变更的通用纪律。

易错点

  • 把 timestamp_timeout 设为 0:自动化脚本里的 sudo 会等待口令输入而卡死,任务静默堆积
  • 直接编辑 /etc/sudoers:写错一行就锁死全部提权,必须走 visudo 校验
  • 日志目录权限过宽:提权日志含敏感命令与参数,属于内部敏感数据
  • 只改缓存不改审计:处置时无法说明谁在什么时候做了什么

数据来源与参考

  • sudoers(5) 手册
  • CIS Benchmark:sudo 条目
  • 等保 2.0:运维审计

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌