在配置每台服务器时将 RSA 密钥指纹添加到 known_hosts 的最佳方法是什么?

在配置每台服务器时将 RSA 密钥指纹添加到 known_hosts 的最佳方法是什么?

这个问题的灵感来自此主题

假设情景如下:

  1. SSH 服务器(无论是路由器、防火墙等)在部署之前都首先在私有 + 安全的环境中进行配置。SSH 密钥在此环境中的服务器上本地生成。
  2. SSH 服务器有自己的 ACL,用于拒绝除我们的主机之外的任何连接
  3. 主机将是一台具有多个用户的 Linux 机器

标准方法可能是采用 PKI,在所有用户帐户上安装受信任的 CA,并部署本地 SCEP 服务器等。但是,除此以外,明智的做法是:

  1. 在安全环境中,在配置后,known_hosts使用以下命令将服务器的 RSA 指纹导入到主机的容器中(或存储它的任何地方,我对 Linux 还不太熟悉)ssh-keyscan -H x.x.x.x >> ~/.ssh/known_hosts

  2. 在该主机上的用户之间共享/镜像该 RSA 指纹容器

  3. 配置主机/每个用户在出现以下提示时拒绝/丢弃/拒绝连接,以便

The authenticity of host '[hostname] ([IP address])' can't be established. RSA key fingerprint is [key fingerprint]. Are you sure you want to continue connecting (yes/no)?

  1. 他们不能连接到任何尚未经过此过程的服务器,然后
  2. 也许可以为上述流程+限制无法实现但仍需要远程配置的情况创建一个沙盒单独用户,以便主要常用密码不会被可能的假 SSH 服务器泄露。

答案1

您有内部 DNS 服务器吗?将主机公钥放入 SSHFP 记录中。现在它们可在整个组织中使用,而无需手动复制到任何地方。需要配置客户端计算机来VerifyHostKeyDNS yes检查它们。如下所示/etc/ssh/ssh_config

Match host *.internal.example.com
    VerifyHostKeyDNS yes

要阻止连接到未知主机,请使用StrictHostKeyChecking yes。但请注意,需要连接到新主机的情况非常常见,因此这可能会带来足够的不便,导致用户试图绕过它。请参阅手册页以了解可能达到更好平衡的替代配置。

相关内容