如何阻止除通过密钥认证的 SSH 之外的所有控制台访问?

如何阻止除通过密钥认证的 SSH 之外的所有控制台访问?

我有一个服务器环境,其中唯一的登录方法是 SSH 或数据中心的本地终端。我已将其设置为允许特定用户仅使用密钥而不是密码登录(明确禁用)。此用户也没有设置密码。

由于该用户需要在服务器上执行一些操作,我已授予无密码 sudo 访问权限,使用(在 sudoers 文件中):

username ALL=(ALL) NOPASSWD: ALL

显然,这可能是一个安全问题。我需要确保用户无法使用我们严密保护的 SSH 密钥通过 SSH 以外的任何方式登录服务器。所有 SSH 登录都受到极好的保护,并且也锁定到特定的 IP 地址,因此与基于密钥的登录相结合,是安全的(尽可能安全)。我希望消除通过我们的数据中心登录的能力,以确保用户无法从那里登录,只能通过 SSH 登录。

我该如何阻止那些未经授权的访问尝试?

答案1

您可以为用户设置一个由 30 多个随机字符(有些几乎不可能输入)组成的密码,以防止非 SSH 登录。

但是,这并不能阻止用户通过 SSH 更改密码,然后使用数据中心终端进行直接访问。

答案2

我一直认为更好的解决方案是将密码哈希值(在 /etc/shadow 中)设置为无效值。我通常使用字符串 %%NP%%。这有效地关闭了此用户的密码验证,并禁止任何形式的暴力破解密码。鉴于密码哈希算法中的任何输入都不会与影子文件中的哈希值匹配,因此这非常安全。

对于 Linux,您可以代替(或除了)上述操作,在 /etc/security/access.conf 中设置访问控制参数。该文件中有几个示例应该可以满足您的需求。这种方法的一个缺点是,您很容易锁定 root 权限,使其无法从控制台登录,这在紧急情况下是一个非常糟糕的主意。

相关内容