我已经读到,使EC2实例可通过Internet访问的最佳安全做法是将它们放置在专用VPC子网中,在公共VPC子网中创建堡垒主机,并使用安全组仅允许来自堡垒的连接托管,然后进行密钥转发以登录到私有实例。
但是,似乎AWS提供了各种配置,这些配置似乎提供了与实际堡垒主机相似的功能。例如,在公共子网上使用安全组似乎很好,并且如果有人可以访问您的堡垒,他们似乎离您的私钥并不远。无论如何,在任何地方都可以找到有关此主题的更多信息?
答案 0 :(得分:4)
您可以在这里找到使用Bastion Host的最佳做法:https://docs.aws.amazon.com/quickstart/latest/linux-bastion/architecture.html
对堡垒主机的访问被锁定在已知的CIDR范围内 入口。这是通过将堡垒实例与 安全组。快速入门创建了一个BastionSecurityGroup 为此目的的资源。
端口被限制为仅允许对堡垒的必要访问 主机。对于Linux堡垒主机,用于SSH连接的TCP端口22为 通常是唯一允许的端口。
请注意,创建SSH隧道以通过堡垒主机https://myopswork.com/transparent-ssh-tunnel-through-a-bastion-host-d1d864ddb9ae
连接到给定资源非常普遍。希望有帮助!
答案 1 :(得分:2)
这是最小化攻击面的问题。
在使用堡垒主机的情况下,开放式Internet(仅适用于负载平衡器)仅 暴露于端口22,该端口由relatively trustworthy软件提供支持。
这也是一个单点管理:定义一个安全组,该安全组标识允许与堡垒联系的IP地址,并创建一个包含授权用户的公钥的单个authorized_keys
文件。当用户离开时,您从每个用户中删除一行。
相比之下,如果您仅依靠安全组来保护可公开访问的主机,则需要在每个组上复制相同的设置(并根据需要删除/更新它们)。而且,如果您允许通过SSH访问这些主机,则必须在每次更改后分发authorized_keys
文件。
尽管我不建议您这样做,但在堡垒主机上打开端口22进行世界访问至少是合理的。如果您有很多用户,或者这些用户通过网络连接的手机进行连接,那么这甚至可能是合理的。这是您永远都不会想对任意服务进行的操作。