我正在尝试按照一些安全指南设置一个 ubuntu 服务器(14.04 LTS)。
其中一条指导原则建议禁用 root 用户,并使用 sudo 创建以管理员身份工作的新用户。另一条指导原则建议禁用通过用户和密码进行的 ssh 身份验证,并启用公钥身份验证。
我遵循了这两个建议,现在我发现自己在服务器上使用新的管理员帐户,但每次需要执行管理命令时都需要输入该用户的密码(sudo 要求输入)。
问题是:一切真的是这样运作的吗(根据安全指南)?
我的意思是:用于 ssh 身份验证的密码的漏洞与用于在打开的会话“内部”执行 sudo 的(相同)密码的漏洞不同?
答案1
实际上还没有人回答你的问题。
禁用 sudo 命令的密码不会带来太大的安全风险,尤其是当您使用仅密钥 SSH 登录时。为此,请运行:
sudo visudo
并编辑“sudo”组行如下:
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
NOPASSWD 是关键。有了它,您在使用 sudo 运行命令时将不再需要输入密码。
答案2
是的,这确实是一种常见的做法。
使用sudo
而不是以 root 身份工作主要是为了保护您自己 - 如果您必须sudo
做一些危险的事情,您更有可能注意。
关于使用 SSH 密钥:
禁用基于密码的登录可以有效地防止任何通过简单尝试大量常见帐户(如 root)密码来登录 SSH 服务器的暴力尝试。你需要私钥文件以这种方式登录。这比允许密码登录要安全得多。
这一层安全性添加到了您的密码安全性中sudo
,因为您只有在使用私钥文件通过 SSH 登录机器后才能使用它。
答案3
是的,这是常见的做法。这是常见的做法,因为如果 root 禁用了 ssh,攻击者就必须猜测有权访问服务器的用户名。
如果您想避免输入密码,您有以下几种选择:
- 通过以下方式登录到 root shell
sudo bash
- 调整 sudoer 文件中的超时值。
打开 sudoers 文件:
sudo visudo
并改变默认 timestamp_timeout达到更舒适的值。
Default timestamp_timeout=30
使用此值 sudo 会在 30 分钟内记住您的密码。
您还可以在 sudoers 文件中更改其他几项内容。我建议阅读这篇博文。