使用 ssh 密钥时允许 sudo 访问的最佳方式

信息安全 验证 linux SSH 授权
2021-08-27 21:29:22

可能是一个简单的问题,但我似乎找不到任何实际的最佳实践。我管理着几台服务器,我真的厌倦了在 pwsafe 中跟踪我的密码。我一直在考虑使用 SSH 密钥进行身份验证,而不是密码,但我担心在这种情况下对用户实施 sudo 权限的最佳方式。

我知道很多人修改 /etc/sudoers 以拥有并将他们需要的用户设置为 NOPASSWD。但是我没有看到有人给他们的用户密码,所以我很难做到这一点。如果我的盒子是作为非特权用户拥有的,那么我只需要一个快速的“su 用户”进入我的 NOPASSWD 用户,理论上我就完蛋了。或者更糟糕的是,物理访问和知道我用户名的人。

最好的做法是继续为这些帐户设置密码,还是使用其他一些机制,例如阻止本地登录,或者人们只是设置密码并将其丢弃/从不使用?

2个回答

NOPASSWD选项允许sudo程序由 sudo 用户执行,而无需输入密码。这并不意味着您的帐户没有密码。

其他运行su youruser的用户仍然需要输入密码youruser但是,如果您以youruser(通过物理访问或通过 SSH)身份登录,则在运行sudo somecommand.

就像@Lekensteyn 在他的回答中提到的那样,文件中的NOPASSWD指令/etc/sudoers仅仅消除了用户在执行sudo命令时输入密码的需要。

这实际上与用户是通过密码还是 ssh 密钥 ssh 进入盒子的相关性为零。无论哪种方式,如果用户对盒子有 ssh 访问权限,并且您允许他执行所有命令,甚至只是su通过文件sudo执行/etc/sudoers,他可以通过简单地运行sudo su -.

当然,最好的做法是不要让任何老用户使用sudo. 建立一个应允许特定用户以 root 身份执行的命令白名单,并允许他访问其他任何内容。您可以轻松(如果有点乏味)设置具有不同sudo权限集的各种“管理员”组,并将所述组分配给特定用户。有关man sudoers特定配置的更多信息,请咨询。