禁用本地 root 登录,允许 root 通过 ssh 登录

禁用本地 root 登录,允许 root 通过 ssh 登录

我想阻止 root 用户直接从 RHEL 机器上的本地控制台登录,但允许从 ssh 登录。可以这样做吗?

谢谢...

答案1

是的。

  1. 为 root 创建 SSH 密钥并将公共部分添加到~/root/.ssh/authorized_keys
  2. 编辑/etc/ssh/sshd.conf-设置PermitRootLoginwithout-password
  3. 重启 sshd
  4. 测试-- 确保您可以使用密钥通过 SSH 以 root 身份登录。
    • 测试单用户模式- 确保它不要求输入 root 密码(完成第 5 步后,root 将不再能够使用密码登录,因此打破单用户模式可能是一件坏事)
  5. 锁定root的登录密码(将/etc/shadow中的密码字段替换为*x等)

笔记:

  1. 任何走到控制台的人都可以 root 你的机器(因为单用户模式不会要求输入密码),但是当他们尝试时你的机器将会关闭,所以理论上你会知道。
    • 如果您将单用户模式配置为需要密码,那么在系统上执行恢复工作的唯一方法就是使用恢复 CD,并且您与上述处于相同的安全境地,但现在黑客很恼火。
  2. 您的机器的网络配置文件现在仅与 root 的 SSH 密钥一样安全,因此请确保设置好的密码并将密钥保存在安全的地方。
  3. 如果您丢失了 SSH 密钥,那么以 root 身份重新进入系统的唯一方法就是在单用户模式下重新启动(或破解您自己的机器)。

另一种配置也是可行的,即监听 root 登录的单独 sshd 仅在可用,localhost并且您使用代理转发以 root 身份登录。我知道至少有一家大公司采用这种配置,它增加了一层安全性(和复杂性)。

答案2

禁用本地 root 登录是个坏主意。在系统崩溃的情况下,可能需要访问权限。根据NSA RHEL 5 安全指南, 2.3.1.1 限制 Root 登录系统控制台

直接 root 登录应仅在紧急情况下允许。在正常情况下,管理员应通过唯一的非特权帐户访问系统,并使用 su 或 sudo 执行特权命令。阻止管理员直接访问 root 帐户可确保在拥有多个管理员的组织中进行审计跟踪。锁定 root 可以直接连接的渠道可减少对 root 帐户密码猜测的支持。

(...)

还应禁止 Root 通过网络协议进行连接。

可以通过从 /etc/securetty 中删除行 tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8 tty9 tty10 tty11 来禁用从本地控制台的 root 登录。

相关内容