我的设置
我有 Elastic Beanstalk 应用程序,在 EC2 上具有公共 LoadBalancer 和公共 IP。该应用程序位于 CloudFront 后面,它受 AWS WAF 保护,可抵御我现在遇到的各种攻击。Route 53 将 DNS 查询转发到 CloudFront。
我的问题
WAF 仅在 CloudFront 上。还有 Elastic Beanstalk 公共 DNS 名称、弹性负载均衡器公共 DNS 名称和 EC2 实例公共 IP。攻击者正在攻击它们,并绕过 WAF。
我的请求
除了 CloudFront,我不需要任何其他东西暴露在互联网上。如何从所有或至少部分资源中删除所有公共 DNS 和 IP,同时仍使其正常运行。理想情况下,CloudFront 会通过内部 Amazon 域转发请求。
我尝试过
我尝试在 BeanStalk 网络配置选项卡中将 ELB 设置为私有,但失败了。将公共 IP 地址设置为 false 时,它就会停止工作并出现错误 502
答案1
您需要更改安全组,以便只有 CloudFront IP 可以联系服务器。您还可以将自己的 IP 地址列入白名单。关键是只允许选定的地址进入。
这AWS 示例代码将在 CloudFront IP 地址发生变化时更新您的安全组。我怀疑一旦您部署该功能并创建所需的安全组,它就会为您进行初始设置。由于 CloudFront 拥有的 IP 范围数量,它使用四个安全组,这很好,您可以将它们全部与负载均衡器和/或 EC2 实例关联。
您可以下载此处的 AWS IP 地址如果您想手动执行此操作,请在 CLOUDFRONT 上过滤这些 IP。请注意 IP 地址范围会发生变化,如果您手动执行此操作,这会导致某些 CloudFront 节点无法联系您的服务器。
请注意,您不能使用 NACL,因为它们的限制太低。不过有趣的是,NACL 在实例硬件上运行(现在可能是 Nitro 卡),但如果您处于 DDOS 之下,NACL 会被推送到 CloudFront 以拒绝边缘流量。我相信安全组也在实例硬件或 nitro 卡上运行,但当然由 AWS 管理。