核心是切断未经审计的提权路径并保留最小可验证能力:一、禁用root远程登录并验证;二、清理高危组与宽泛sudo授权;三、通过/etc/sudoers.d/实现四要素精细化、可审计授权;四、严格测试、同步策略、预留应急通道并接入siem告警。

收回生产服务器上运维人员的 root 直接操作权限,核心不是“删掉密码”或“禁用账户”,而是切断所有未经审计、不可追溯、无约束的提权路径,同时保留其完成职责所需的最小可验证能力。
一、立即阻断 root 远程登录入口
这是最基础且必须优先执行的动作:
- 编辑 /etc/ssh/sshd_config,确保 PermitRootLogin no(注意:删除注释、避免多行冲突)
- 重启服务:sudo systemctl restart sshd
- 验证:在新终端执行 ssh root@server-ip,应返回 Permission denied
- 同步检查 AllowUsers 或 DenyUsers 配置,防止规则覆盖
二、清理所有隐性 root 权限载体
很多 root 权限并非来自账号本身,而是通过间接方式获得:
- 检查并移除用户所属的高危组:sudo usermod -G $(groups | tr ' ' ',' | sed 's/,wheel,//;s/,sudo,//;s/,$//') username(剔除 wheel/sudo 组)
- 搜索 sudoers 中的宽泛授权:sudo grep -r "ALL=(ALL)" /etc/sudoers* 2>/dev/null,逐条确认并删除或收紧
- 检查是否启用 requiretty(默认已启用),防止 crontab、Web 后台等非交互式提权绕过
- 禁用 sudo su、sudo -i 等交互式 shell 入口,在 sudoers 中添加:Defaults !env_reset, !authenticate, !set_logname 并显式屏蔽 ! /bin/bash、! /bin/sh
三、将操作权转为可审计、可回收的技术行为
不靠“人守规矩”,而靠“配置即审批、日志即凭证、复核即回收”:
- 所有 sudo 授权必须写入独立文件:/etc/sudoers.d/team-202609(含日期便于自动清理)
- 每条规则严格满足四要素:谁(User_Alias)、在哪(Host_Alias)、以谁身份(Runas_Alias)、执行哪条命令(Cmnd_Alias),例如:%ops ALL=(nginx) NOPASSWD: /usr/bin/systemctl restart nginx
- 命令必须绝对路径 + 参数约束:/usr/bin/systemctl restart nginx ✅,/usr/bin/systemctl ❌
- 所有 /etc/sudoers.d/ 文件纳入 Git 版本管理,提交需注明工单号、用途说明、有效期
四、验证与保底机制不能少
权限回收后若无法登录或执行关键任务,等于制造了新的故障点:
- 用目标用户登录,测试关键操作:sudo -l 查看可用命令,sudo -n whoami 验证免密逻辑
- 确认堡垒机或跳板机策略已同步更新,避免因中间层缓存导致权限残留
- 预留应急通道:一个重命名的本地管理员账号(如 adm-backup),强密码+密钥登录,不在任何自动化流程中使用
- 日志必须接入 SIEM,对 sudo 执行、su 尝试、setuid 调用等实时告警










