直接为用户设置 SSH 密钥root
以进行服务器的管理访问是个好主意吗?
还是最好使用另一个用户通过 SSH 密钥进行 SSH 访问,然后执行sudo
命令?
如果服务器可通过 Internet 上的 SSH 公开访问,还是只能在内部网络上访问,答案是否会有所不同?
答案1
问题是 :直接为 root 用户设置 SSH 密钥以便对服务器进行管理访问是一个好主意吗?
首先明确一下几点:
1.) Linux 技术书籍以这样的行开头:不要在 Linux 操作系统上以 root 身份操作。考虑到这一点,您不需要密钥即可以 root 身份登录,因为您不需要以 root 身份登录。
但...
2.) 如果您想以 root 身份远程登录 Linux 系统,最好不要使用密码,而是使用 SSH 密钥。
3.) 尽管如此,最好的解决方案还是以特权用户(wheel 成员,即 sudoer)组身份登录,强制使用 SSH 密钥登录并使用 sudo 命令,而不是以 root 用户身份登录。
这是一篇关于 SSH 安全问题的非常好的文章:https://www.venafi.com/blog/best-practices-ssh-key-management-what-are-your-ssh-security-risks
答案2
本地和互联网访问的答案是相同的。
在我看来,不要直接以 root 身份登录服务器,就像本地或互联网访问一样。
与本地网络相比,在互联网上面临的风险更大。
始终使用私钥/公钥概念!
检查其他安全概念!
也请查看这个帖子: @Todd A. Jacobs
您还应该考虑所决定的任何控制措施所固有的安全权衡。所有控制措施都需要在架构和系统安全性以及便利性和可用性方面进行权衡。在这方面,围绕 SSH 的控制措施也不例外。
创建一个非 root 用户进行访问。
您还可以监禁该用户,以限制他可以做的事情。
另一个问题是您想在远程机器上做什么。
您也可以使用严格/监禁命令,这样您只能执行视图思考。
您可以为远程机器上的不同操作/命令创建不同的用户。
答案3
完全不允许 root 远程直接登录。
(由于 root 用户始终存在,攻击者不需要猜测用户名并直接开始猜测密码。)
在/etc/ssh/sshd_config
集合中
PermitRootLogin no
设置额外的非特权用户,他们可以使用:
su - root
然后输入 root 密码- 和/或在定义了 sudo 策略之后
sudo -i
输入自己的个人密码
提升他们的权限并成为 root。
理想情况下,要求所有用户都进行基于密钥的身份验证,并完全禁用所有人的密码。在/etc/ssh/sshd_config
设置中
PasswordAuthentication no
当您无法PasswordAuthentication no
为所有用户设置并且PermitRootLogin no
也不可能时,您可以使用Match
指令有选择地禁用 root 的密码验证。
在/etc/ssh/sshd_config
集合中在最后 添加:
Match User root
PasswordAuthentication no