大家好,我对 AWS Web 服务还比较陌生,我正在努力保护 ALB。我的网页工作方式很简单,有一个 API 网关,其中定义了方法,然后我有一个在 N 个服务器之间平衡的 ALB。我想要实现的是将通信限制在仅从 ALB 到 EC2 服务器的范围内,这样就没有人可以直接访问它们。有人能帮助我知道这是否可以实现以及如何实现吗?
此致
答案1
这比您想象的要稍微复杂一些,因为您的 ALB 实际上可以改变其 IP 地址。
最好的方法是创建一个 VPC 并在其中托管您的 api 实例。VPC 和子网应该是公共的,但不要为您的 api 实例提供公共 IP 地址。这是您创建实例时的一个选项。确保 VPC 中的任何人都可以连接到实例 https 端口,以便 ALB 的运行状况检查正常工作。
答案2
创建两个安全组:
- 第一个安全组,例如“ALBSecurityGroup”,允许从 0.0.0.0/0 进入 http(s)。将 ALB 放入其中。ALB 应位于具有公共 IP 的公共子网中。
- 第二个安全组名为“ServerSecurityGroup”,允许来自“ALBSecurityGroup”的 http(s) 进入。将服务器放入其中。理想情况下,服务器应位于未分配公共 IP 的私有子网中。
如果您尝试指定出口安全组,您可能会陷入循环依赖。有办法解决这个问题,但对于刚接触 AWS 的人来说,最简单的方法是让出口保持开放,除非您需要限制出口。
在 AWS 之外,您可以使用 IPTables 来实现这一点,但也可以充分利用 AWS 的功能。我做了类似的事情,阻止直接访问我的 Web 服务器,我只将我的静态主 IP 和 CloudFlare CDN IP 范围列入白名单。