我想阻止 root 用户直接从 RHEL 机器上的本地控制台登录,但允许从 ssh 登录。可以这样做吗?
谢谢...
答案1
是的。
- 为 root 创建 SSH 密钥并将公共部分添加到
~/root/.ssh/authorized_keys
。 - 编辑
/etc/ssh/sshd.conf
-设置PermitRootLogin
为without-password
- 重启 sshd
- 测试-- 确保您可以使用密钥通过 SSH 以 root 身份登录。
- 测试单用户模式- 确保它不要求输入 root 密码(完成第 5 步后,root 将不再能够使用密码登录,因此打破单用户模式可能是一件坏事)
- 锁定root的登录密码(将/etc/shadow中的密码字段替换为
*
、x
等)
笔记:
- 任何走到控制台的人都可以 root 你的机器(因为单用户模式不会要求输入密码),但是当他们尝试时你的机器将会关闭,所以理论上你会知道。
- 如果您将单用户模式配置为需要密码,那么在系统上执行恢复工作的唯一方法就是使用恢复 CD,并且您与上述处于相同的安全境地,但现在黑客很恼火。
- 您的机器的网络配置文件现在仅与 root 的 SSH 密钥一样安全,因此请确保设置好的密码并将密钥保存在安全的地方。
- 如果您丢失了 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 登录。