linux无原生双管理员审核机制,但可通过sudo脚本化审批、权限角色分离、全链路审计及提权链路加固实现近似效果:强制双人终端确认、最小权限分组、tlog会话录制、远程不可删日志与绕过防护。

Linux 本身没有原生的“双管理员审核”机制(类似 Windows 的 Just-In-Time 特权管理),但可通过组合权限控制、审计日志、sudo 策略与外部流程实现近似效果:关键操作需两名授权人员协同确认或分步执行,且提权行为全程可追溯、不可绕过。核心不在于“改系统内核”,而在于“重构提权路径+强化审计闭环”。
一、用 sudo + 脚本化审批实现双人确认提权
不依赖第三方商业平台,通过自定义 sudo 命令包装器强制二次人工确认:
- 编写一个审批脚本(如 /usr/local/bin/sudo-approve),要求输入两位管理员的工号/令牌(可对接 LDAP 或本地哈希校验);
- 配置 sudoers 使用 requiretty 和 noexec 防止后台绕过,并将敏感命令(如 systemctl restart nginx、usermod -aG wheel)重定向至此脚本;
- 脚本执行前生成带时间戳的待审记录(写入 /var/log/sudo-approval-pending),第二位管理员需在 5 分钟内运行 sudo-approve --confirm
才放行; - 所有审批动作自动记入 /var/log/sudo-audit.log,含源 IP、终端、UID、审批者 UID、命令哈希。
二、分离权限:拆解“管理员”角色,避免单点 root 能力
禁用直接 root 登录,按职责划分最小权限组:
- 创建 auditadm 组:仅允许 ausearch、aureport、读取 /var/log/secure,禁止任何执行权限;
- 创建 opsadm 组:允许有限 sudo(如服务启停、包安装),但禁止修改用户、网络配置、内核参数;
- 创建 secadm 组:专管防火墙(iptables/nft)、SELinux 策略、密钥轮换;
- 所有组成员均不能直接 su - 或 sudo -i,必须显式申请具体命令(sudo systemctl reload httpd)。
三、审计全覆盖:从命令执行到 shell 会话级留痕
确保每一步操作均可回溯,不只记录“谁执行了什么”,还要记录“怎么执行的”:
- 启用 auditd 持续监控:-w /usr/bin/sudo -p x -k sudo_exec、-a always,exit -F arch=b64 -S execve;
- 强制记录交互式 shell:在 /etc/bash.bashrc 中添加 export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.info "$(whoami) [$$] $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//") [$RETRN_VAL]"';
- 使用 tlog(推荐)替代简单 history:它录制完整终端会话(含键盘输入、屏幕输出),支持按时间/用户检索回放,日志加密存储于独立服务器;
- 所有审计日志同步至远程 syslog 服务器(禁用本地删改),并设置 logrotate 定期归档加哈希签名。
四、加固提权链路:堵住常见绕过方式
即使有审批流程,也要防止被技术手段跳过:
- 禁用不安全的 sudo 配置:检查 /etc/sudoers 中无 NOPASSWD、!authenticate、通配符命令(如 /bin/*);
- 锁定 shell 环境:对管理员账户设置 /bin/rbash(受限 shell),并通过 /etc/shells 限制可切换 shell;
- 关闭未使用的提权通道:禁用 pkexec(systemctl mask polkit)、移除 /usr/bin/doas(如有)、禁用 SSH 的 PermitRootLogin yes 和 AllowUsers root;
- 定期扫描提权痕迹:用 lynis audit system 或自定义脚本检查 /etc/sudoers.d/ 新增文件、异常 cron 任务、可疑 .bash_history。
不复杂但容易忽略:真正的双人审核不是靠工具自动完成,而是把“确认动作”设计成必须由两个物理终端、不同账号、不同网络位置发起的显式操作——技术只是让这个过程不可抵赖、不可篡改、不可延迟。










