最近,我使用AWS Security Hub对我的 AWS 资源进行了安全评估。结果,在AWS Foundational Security Best Practices v1.0.0类别下,有一个失败的说法是
EC2 实例不应具有公有 IPv4 地址
如果这个实例没有公网IP,如何通过互联网访问这个实例?
我想很好地解释一下EC2 实例不应具有公共 IP 地址的安全最佳实践
最近,我使用AWS Security Hub对我的 AWS 资源进行了安全评估。结果,在AWS Foundational Security Best Practices v1.0.0类别下,有一个失败的说法是
EC2 实例不应具有公有 IPv4 地址
如果这个实例没有公网IP,如何通过互联网访问这个实例?
我想很好地解释一下EC2 实例不应具有公共 IP 地址的安全最佳实践
通常,只有负载均衡器会暴露在 Internet 上。然后,它将流量转发到分布在多个可用区的 Amazon EC2 实例。
负载均衡器可以过滤流量,并可以根据 URL 中请求的路径将流量路由到适当的目的地。
这样,没有人可以访问 EC2 实例(例如通过 RDP 或 SSH)。
管理员应该能够通过 VPN 或 Direct Connect 连接访问 VPC,而不是通过 Internet。
EC2 实例不应具有公有 IPv4 地址
这可能是指私有子网中的 EC2 实例。对于公共子网中的 EC2 实例,您将需要一个 IP 来接收 Web 流量。
根据VPC 常见问题解答:
为安全起见,请确保与公共 EC2 实例关联的安全组仅允许所需端口上的流量。例如,网络服务器应该只需要为端口 80 设置入站规则(入口)。您不需要定义出站规则(出口),因为仍然允许对入站规则(入口)的响应。
安全组是有状态的 - 如果您从实例发送请求,则无论入站安全组规则如何,都允许该请求的响应流量流入。无论出站规则如何,都允许对允许的入站流量的响应流出。
根据我之前对其他答案之一的评论 - 您可以通过使用 SSM(不包括我注意到的边缘情况)在不允许 SSH 端口的入站流量的情况下逃脱
如果您使用负载均衡器,答案不会改变。我尝试在公共子网中配置 ASG(自动扩展组),并在 Cloudformation 中指定实施不应将公共 IP 地址与 EC2 实例相关联。ASG 从未收到来自 EC2 实例的成功信号,并且 Cloudformation 部署已回滚。