如何阻止所有外部 IP 到 AWS ELB 后面的端点?

How can I block all external IPs to endpoints behind AWS ELB?

好的 - 所以我有一个开发人员不希望我们的 REST 端点可以从外部访问,唯一允许的访问是本地主机和内部网络方案。我们的内网方案是10.10.x.x.

我们这样做的方法是使用 .conf 文件中的 < LocationMatch > 开关,如下所示:

<LocationMatch "/foo/bar/*">
  Order deny,allow
  Deny from all
  Allow from 10.10
  Allow from 127
</LocationMatch>

现在,我们面临的挑战是 AWS 负载均衡器上有一个 X-Forward-Host 规则,所以所有原始源 IP 和如果我允许从 10 开始 - 显然,将允许从外部访问所有端点因为这个。

如前所述,我们的内部 IP 是 10.10,所以我可以允许从 10.10 开始,这将解决它,但如果我创建更多区域,则网络方案可能是 10.20.x。 10.30.x.x 10.40.x.x 然后它变成了一个管理噩梦。

所以,有人提到要在 http.conf 级别上做某事是有道理的:

<Directory />
    #Example..
    SetEnvIF X-Forwarded-For "(,| |^)192\.168\.1\.1(,| |$)" DenyIP
    SetEnvIF X-Forwarded-For "(,| |^)10\.1\.1\.1(,| |$)" DenyIP
    Order allow,deny
    Deny from env=DenyIP
    Allow from all
</Directory>

found from this blog

所以,我不确定如何遵循这种格式并确保它拒绝这些目录的所有外部 IP。

http.conf 文件会不会有这样的东西:

<VirtualHost>
    #Example..
    SetEnvIF X-Forwarded-For "(,| |^)*\.*\.*\.*(,| |$)" DenyIP
</VirtualHost>

我的其他带有 < LocationMatch > 规则的 conf 文件有:

<LocationMatch "/foo/bar/*">
  Order deny,allow
  Deny from env=DenyIP
  Allow from 10.
  Allow from 127
</LocationMatch>

感谢您的帮助!

而不是修改 apache,使用安全组!

  1. 为您的弹性负载均衡器创建一个安全组。允许来自 0.0.0.0/0 的入站访问端口 80 和 443。
  2. 为您的 apache 服务器创建一个安全组。允许来自 ELB 安全组的入站访问(一个安全组可以引用另一个安全组)。还要添加访问权限,以便您可以通过 SSH 连接到服务器。

就是这样!安全组将阻止在不通过负载均衡器的情况下尝试访问您的 Apache 服务器的流量。

参见: