如何在保持最严格的安全性的同时正确地通过 SSH 进入 NAT 后面的服务器?

如何在保持最严格的安全性的同时正确地通过 SSH 进入 NAT 后面的服务器?

我在 Amazon AWS 中有一个 VPC。公共子网中运行着一个 NAT 服务器,它连接到 Internet 网关。我在 VPC 内的各个私有子网中运行着一堆服务器。我想通过 SSH 连接到私有子网中的服务器。我所有的服务器都运行着 AWS Linux(CentOS)。

目前,我可以使用私钥通过 SSH 连接到 NAT 服务器。NAT 服务器仅允许从我当前的开发 IP 进行 SSH 连接。然后,只有当我在这些服务器上设置 SSH 登录,或者将密钥文件放在 NAT 服务器上然后使用它们进行 SSH 连接时,我才能通过 SSH 连接到私有子网中的服务器。出于安全考虑,我似乎不应该做这两件事。

是否有首选的最佳实践方法来建立此连接?似乎应该有一种方法可以通过运行 Apple OSX 的家用开发机器上的单个 SSH 调用进行连接。

答案1

您不应该将您的密钥放在网关上,而且您也不必这样做:-)

设置本地 SSH 配置,以便您可以在需要时使用 NAT 网关进行端口转发:

在您的中创建一个条目~/.ssh/config,设置到您想要连接的主机的本地转发:

Host natgw-fwd
        User ec2-user
        HostKeyAlias natgw-fwd.my.domain
        HostName 54.182.32.11
        LocalForward 1025 10.0.2.1:22

然后为每个主机添加一个条目,并进行转发HostKeyAlias

Host internal-one
        User ec2-user
        HostKeyAlias internal-one.ec2.internal
        HostName localhost
        Port 1025

在一个 shell 中启动隧道:

ssh -C -v natgw-fwd

并在另一个 shell 中连接到内部主机:

ssh internal-one

当使用大量“快速 + 短”连接以及一两个 shell 时(例如使用 dsh 之类的工具),单个连接的建立和拆除延迟会变得更加明显,我使用ControlMasterControlPath启用连接共享。这些限制并不困扰我,因为在这种情况下我很少使用代理或 X11。

答案2

我进行了一些研究,发现了一篇似乎与您所问的内容相关的文章。

SSH 和堡垒服务器

默认情况下,EC2 中的 Linux 实例使用 SSH 密钥文件进行身份验证,而不是 SSH 用户名和密码。使用密钥文件可以减少有人试图猜测密码以访问实例的机会。但是,将密钥对与堡垒主机一起使用可能会带来挑战 - 连接到私有子网中的实例需要私钥,但您永远不应将私钥存储在堡垒上。

一种解决方案是在客户端上使用 SSH 代理转发 (ssh-agent)。这允许管理员从堡垒连接到另一个实例,而无需将私钥存储在堡垒上。这就是我将在本文中讨论的方法。

http://blogs.aws.amazon.com/security/post/Tx3N8GFK85UN1G6/Securely-connect-to-Linux-instances-running-in-a-private-Amazon-VPC

希望您能找到解决方案,按照文章的建议在客户端中创建堡垒服务器并使用 SSH 代理转发。

答案3

@Don King 的回答非常有帮助,这里是教程他建议道。它有针对 OSX 和 Windows 的说明。

以下是我从本地 OSX 机器登录时所做操作的摘要。这假设您的 VPC 中的基本基础设施已经正确。请参阅此教程了解详情。

  1. 在 NAT 安全组上打开一个出站 SSH 连接,该连接允许连接到私有子网中服务器的安全组。

  2. 在允许来自 NAT 安全组的连接的私有子网中的服务器安全组上打开入站 SSH 连接。

  3. 在 OSX 上,将您的 public_key.pem 添加到您的本地钥匙串:ssh-add -K .aws/public_key.pem

  4. 使用 -A (ssh-agent) 从本地机器通过 SSH 连接到 NAT:ssh -A ec2-user@ip_of_nat

  5. 从 NAT 通过 SSH 连接到公有子网中的服务器:ssh ec2-user@ip_of_private_server

潜在问题:

  • 确保在 OSX /etc/ssh_config 文件中将 ForwardAgent 设置为 yes。默认情况下应该是 yes。

相关内容