1

我有一个网站,人们可以使用分配给他们的特定网址(例如user1.my-site.comuser2.my-site.com. 用户共享相同的基础服务器,我想限制不需要的流量。我的目标是,如果任何 url 不匹配*.my-site.com/,它不应该访问我的服务器。

我已经研究过使用负载均衡器转发特定流量,但看起来它仍然会影响我的服务器。

*.my-site.com/我查看了 WAF 字符串匹配,我可能遗漏了一些东西,但我没有看到如何过滤与模式不匹配的流量

我希望有一种方法可以过滤通过 AWS 中的应用程序负载均衡器的流量,因此我只能允许来自具有起始 url 的主机的流量*.my-site.com/。但我看到在第一个/url 之后只有字符串匹配。

4

1 回答 1

1

要拒绝除 之外的所有请求*.example.com,请使用 WAF:

创建一个针对Header的字符串匹配条件-标题 - 匹配类型Ends with和值-- no在开头。配置 WAF 以阻止不符合条件的请求(“主机头以字节结尾”)。Host.example.com*.example.com

https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-string-conditions.html


要在*.example com使用 WAF 的情况下拒绝除Application Load Balancer之外的所有请求甚至更容易……您只需要求平衡器阻止所有请求,在此之前处理.*.example.com

首先,创建一个与 Host 标头匹配的新侦听器规则(与 WAF 不同,此规则的开头*.example.com确实需要 a ),对于操作,请选择您正常的现有目标组。*这告诉平衡器使用该目标组*.example.com——它已经在做,但这一步不是多余的……因为下一步是必需的:

将侦听器的默认侦听器规则操作更改为Return fixed response。将状态代码设置为 403,将内容类型设置为text/plain,将消息正文设置为类似的通用内容ohai, blocked u.(或者Access Denied如果您愿意,可以尝试,或者使用其他代码,例如带有“服务不可用”消息的 503 ......它没有技术上的问题)。

您可以使用固定响应操作来丢弃客户端请求并返回自定义 HTTP 响应。您可以使用此操作返回 2XX、4XX 或 5XX 响应代码和可选消息。

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#fixed-response-actions

任何与您的域不匹配的请求都将通过默认侦听器规则,并收到您的静态错误响应。


这些配置都不会向您的服务器发送任何流量以请求无效域。

在任一配置中,ALB 日志仍将包括被阻止的请求。WAF 不会阻止流量到达 ALB,它只是阻止 ALB 在遇到阻止规则后对其进行处理。

于 2019-09-06T22:29:07.220 回答