首页/系统/信创系统运维速查/限制 root 直接登录的范围
安全加固65 条

限制 root 直接登录的范围

从通道上收窄 root 使用:控制台登录由 /etc/securetty 约束、SSH 由 PermitRootLogin 约束,日常运维走普通账户加 sudo,管理动作可审计。

信创系统运维速查系统更新于 2026-10-13

从通道上收窄 root 使用

直接使用 root 的风险在于没有留痕、没有权限边界,一旦口令泄露就是完整控制权。加固的方向不是简单禁用,而是按通道分别约束:控制台登录受 /etc/securetty 约束,SSH 远程登录受 sshd_config 的 PermitRootLogin 约束,图形登录与串口各有对应开关。日常运维改用普通账户加 sudo,既是权限收敛也是审计链路。

基本信息

控制台通道/etc/securetty,限制 root 可登录的终端设备
SSH 通道sshd_config 的 PermitRootLogin(yes / no / prohibit-password / forced-commands-only)
图形通道Display Manager 的允许 root 登录设置
前置条件至少一个可用的 sudo 管理员账户并已实测
查看现状grep PermitRootLogin /etc/ssh/sshd_config、sshd -T | grep permitrootlogin
权限要求root;改 SSH 配置后先 sshd -t 再 reload

典型使用场景

  • 等保与安全基线要求禁止 root 远程直接登录
  • 批量运维场景改用 sudo 后统一关闭 root 直连
  • 排查远程登录失败时确认是否 PermitRootLogin 已收敛
  • 外包人员入场前把 root 通道收紧,只留受控账户
  • 控制台维护场景按需限定 root 可用的终端

现状检查与收敛示例

现状检查与收敛示例
cat /etc/securetty                                    # 允许 root 登录的控制台列表(文件存在才生效)
grep -i '^PermitRootLogin' /etc/ssh/sshd_config       # 当前 SSH 侧策略
sshd -T | grep -i permitrootlogin                     # 看最终生效值(含 drop-in 合并结果)
# 收敛为禁止口令登录、仅允许密钥(推荐折中):
# PermitRootLogin prohibit-password
sshd -t && systemctl reload sshd                      # 语法检查通过后再重载

sudo 管理员通道准备

sudo 管理员通道准备
id opsadmin                                     # 确认存在普通管理员账户
usermod -aG wheel opsadmin                      # 加入 sudo 组(Debian 系为 sudo 组,RHEL 系为 wheel)
su - opsadmin -c 'sudo -n true; echo exit=$?'   # 验证该账户具备 sudo 权限(-n 表示不提示口令)
sudo -l -U opsadmin                             # 查看该账户被授予的具体权限
# 全部验证通过后再关闭 root 远程登录,顺序不能颠倒

PermitRootLogin 取值

取值含义适用场景
yes允许 root 用口令或密钥登录最宽松,公网环境不建议
prohibit-password允许密钥登录、禁止口令登录常见的折中选项
forced-commands-only仅允许带强制命令的密钥登录自动化场景
no完全禁止 root 远程登录安全基线最推荐,需有替代管理通道
未显式配置取默认值,不同版本默认不同用 sshd -T 查实际生效值
securetty 只约束控制台登录,不影响 SSH 与图形登录:各通道要分别配置,只改一处并不意味着 root 不可登录。
收敛 root 登录前必须先在另一个会话实测普通账户的 sudo 可用性,否则可能出现所有管理通道同时不可用的情况;救援流程(如单用户模式)也要提前确认仍可用。

易错点

  • 先关掉 root 远程登录再去验证 sudo 账户,结果普通账户授权没配好,管理通道全部中断
  • 只改 sshd_config 主文件,忽略 conf.d 或 Include 目录里的覆盖项,最终生效值仍允许 root 登录
  • 把 PermitRootLogin 改成 no 却未添加任何免密钥的替代路径,自动化脚本随即失败
  • 以为 securetty 生效就能挡住 root,实际上 SSH 通道完全没动,安全评估时被判不合格
  • 改完配置不执行 sshd -t 就直接 reload,语法错误导致 sshd 拒绝重载,排查方向被误导

数据来源与参考

  • man 5 securetty
  • man 5 sshd_config
  • 红帽安全指南(限制 root 登录)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌