sudo NOPASSWD 风险是什么
sudo 是 Linux 上从普通账号到 root 的主要通道,因此 sudoers 的授权面就是提权面。NOPASSWD 条目本身不是漏洞,问题出在授权粒度过粗:命令含通配符(如允许编辑任意文件)、被授权脚本位于普通用户可写目录、或授权范围随临时需求不断扩散而无回收机制。核查的工具是 sudo -l 与 sudoers 文件的横向比对。
基本信息
| 配置文件 | /etc/sudoers 与 /etc/sudoers.d/* |
|---|---|
| 核查命令 | sudo -l、sudo -ll(列出明细与来源文件) |
| 语法校验 | visudo -c(修改前后都要执行) |
| 审计 | sudo 日志接入集中日志,高危命令单独告警 |
授权面核查
授权面核查
sudo -l # 当前账号被授权的命令
sudo -ll # 更详细的授权与来源
sudo grep -RE 'NOPASSWD|ALL' /etc/sudoers /etc/sudoers.d/ 2>/dev/null
visudo -c # 修改前后均做语法校验,避免 sudo 整体不可用风险模式与处置
风险模式与处置
1. 命令行含通配符(如 /usr/bin/vi *):可借编辑器逃逸执行命令
2. 授权脚本位于用户可写目录:替换脚本内容即可提权
3. 处置:改为具体命令+参数白名单,脚本目录权限收紧为 root 只读
4. 用别名(Cmnd_Alias)集中管理,避免散落难审
5. 审计:sudo 日志接入集中日志,对高危命令单独告警典型使用场景
- 主机上线基线:确认无通配符授权、无用户可写脚本被 NOPASSWD 放行
- 等保与审计检查:sudo 授权清单是常见核查项
- 应急排查:失陷主机上检查 sudoers 是否被植入后门条目
- 权限收敛:把运维临时授权改为具体命令白名单
- 变更管理:sudoers 修改纳入变更流程与版本记录
典型危险授权
| 授权写法 | 风险 | 建议 |
|---|---|---|
| ALL=(ALL) NOPASSWD: ALL | 等价于免密 root | 仅限自动化专用账号并严格管控 |
| /usr/bin/vi /path/* | 编辑器内可执行 shell | 改为具体文件或换用只读工具 |
| /opt/scripts/*.sh | 脚本目录若用户可写即可替换 | 目录 root 只读,脚本带校验 |
| /bin/systemctl restart * | 可重启任意服务 | 限定服务名白名单 |
visudo 的语法校验是硬性动作:sudoers 语法错误会导致所有 sudo 操作失败,可能直接锁死运维通道;改前保留一个已登录的 root 会话更稳妥。
NOPASSWD 常见于自动化账号与备份脚本,这类账号本身要限制登录来源(如仅允许特定主机密钥),否则等于把免密 root 暴露给拿到该账号的任何人。