核心是“角色明确、权限最小、操作可溯”:三类账户(管理员、普通用户、服务账户)严格分离用途,通过RBAC模型绑定组与命令实现自动隔离,强制sudo审计、会话超时、跳板机录像及双因子认证保障行为可追溯与身份可信。

核心是“角色明确、权限最小、操作可溯”。特权账户不直接日常使用,普通账户只拿刚好够用的权限,两者之间不能混用、不能越界。
明确划分三类账户用途
服务器上不是只有“管理员”和“普通用户”两种,而是应按职能分三类:
- 管理员账户:仅用于系统级维护(如升级内核、重配网络、恢复备份),禁止用于登录、写代码、查日志等常规操作;建议禁用密码登录,改用SSH密钥+二次验证
- 普通用户账户:每人一个独立账号,归属具体岗位(开发/测试/运维支持),默认无sudo权限;需执行管理动作时,通过sudo临时提权,且每条命令被记录到/var/log/auth.log或journalctl
- 服务账户:如nginx、mysql、redis等专用账号,无shell(/sbin/nologin)、无密码、不隶属任何用户组,仅对自身运行目录和端口有访问权
用RBAC实现权限自动隔离
不要靠人工记“张三能进A目录、李四不能删B表”,而是用角色模型固化规则:
- 在Linux中,把普通用户加入不同附加组(如dev、db-reader、deploy),再通过/etc/sudoers.d/下的策略文件控制组级权限,例如:
%dev ALL=(ALL) /usr/bin/git, /usr/local/bin/kubectl - 在Argo CD、Sun-Panel等平台中,通过
argocd-rbac-cm或Role = 2字段定义角色,并绑定预设策略(如role:readonly只能同步查看,role:deployer允许触发部署但不可删集群) - 数据库如MySQL,为每个应用创建独立用户,授权精确到库+表+操作类型,例如:
GRANT SELECT, INSERT ON finance.invoice TO 'app_finance'@'10.20.30.%';
强制审计与行为约束
分离不只是“设好就行”,关键在让越权行为无法隐藏、难以发生:
- 所有sudo命令强制记录命令行参数(启用
sudoers中的log_input和log_output),配合tty录屏工具(如ttyrec)保留操作上下文 - 特权账户登录后自动启用会话超时(
TMOU=300),闲置5分钟即退出;远程管理统一走跳板机(Bastion Host),全程录像+双人复核 - 定期用脚本扫描
/etc/passwd和sudo -l -U username输出,比对是否有人被误加wheel组或获得ALL=(ALL)权限
密码与认证双层管控
账户分离的基础是身份可信:
- 管理员账户禁用简单密码,必须用16位以上随机密码+YubiKey或TOTP;普通用户启用SSO或LDAP同步,避免本地密码散落
- BIOS/UEFI层设Supervisor密码,防止绕过操作系统直接修改启动项;服务器启动时校验Secure Boot状态,阻断未签名内核加载
- 所有交互式登录强制走PAM模块(如pam_faillock.so),失败5次锁定30分钟,并通知安全团队

















