双人审核机制是在高危操作前需两名授权人员分别确认和授权的安全控制措施,通过权限分离、操作留痕与审批联动三层控制实现,不依赖sudo原生支持,需结合日志审计、外部审批工具及脚本控制落地。

什么是双人审核机制
双人审核机制指在执行高危操作(如使用 sudo 修改系统关键配置、重启服务、删除敏感数据等)前,必须由两名授权人员分别确认和授权,防止误操作或越权行为。它不是 sudo 原生支持的功能,需通过组合日志审计、外部审批工具、权限隔离与脚本控制来实现逻辑上的“双签”效果。
核心实现思路:权限分离 + 操作留痕 + 审批联动
不依赖单一配置,而是构建三层控制:
- 角色拆分:将“申请执行权”和“最终授权权”分配给不同用户组。例如,开发人员可提交命令请求,但无权直接 sudo;运维组长或安全员拥有审批后临时放行的权限。
-
命令封装与日志绑定:所有需双审的操作必须通过统一入口(如自定义脚本
sudo-approve)提交,自动记录申请人、时间、目标主机、待执行命令、SHA256哈希值,并生成唯一审批编号。 -
审批触发与验证:审批人通过独立通道(如企业微信机器人、内部审批系统、或 SSH 登录专用审批终端)核对请求详情后,输入指令(如
approve 20240520-ABC123)完成签名;系统比对哈希、时效性、权限范围后,才临时写入 /etc/sudoers.d/ 下的限时授权片段。
简易落地示例(无第三方系统场景)
适用于中小团队,仅用 Linux 基础工具实现最小可行双审:
- 创建两个用户组:
sudo_requestors(可提交)、sudo_approvers(可审批);禁止二者互相登录对方账号。 - 编写
/usr/local/bin/sudo-req:接收命令参数 → 生成带时间戳和哈希的请求文件(存于/var/log/sudo-requests/)→ 提示申请人通知审批人。 - 编写
/usr/local/bin/sudo-approve:只允许sudo_approvers运行;读取指定编号请求 → 校验未过期(默认2小时)、命令白名单(如仅允许systemctl restart nginx)、申请人是否在预设列表 → 成功则调用visudo -f /etc/sudoers.d/tmp_$(date +%s)写入单次有效规则(如%requestor_user ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx),并设置at任务2分钟后自动清理该文件。 - 在
/etc/sudoers中添加:#includedir /etc/sudoers.d,确保动态规则生效。
注意事项与加固建议
该机制有效性的前提是流程不被绕过:
- 禁用 root 直接登录,关闭
PermitRootLogin;所有 sudo 行为必须走审批入口,禁止直接sudo xxx。 - 所有请求与审批日志同步推送至远程日志服务器(rsyslog + TLS),不可本地篡改。
- 审批人每次操作须二次认证(如 SSH key + 一次性口令 PAM 插件),避免账号共用风险。
- 定期审计
/etc/sudoers.d/下残留文件、审批日志匹配度、超时未执行请求是否已清除。

















