我有一个网站,人们通过使用分配给他们的特定网址(如user1.my-site.com
和user2.my-site.com
(来访问该网站。用户共享相同的基本服务器,我想限制不需要的流量。我的目标是,如果任何网址不匹配*.my-site.com/
它不应该访问我的服务器。
我已经查看了使用负载均衡器转发特定流量,但看起来它仍然会击中我的服务器。
我查看了 WAF 字符串匹配,我可能错过了一些东西,但我没有看到如何过滤与*.my-site.com/
模式不匹配的流量
我希望有一种方法可以过滤通过 AWS 中的应用程序负载均衡器的流量,这样我只能允许来自起始 url 为*.my-site.com/
的主机的流量。但是我看到在 url 的第一/
之后只有字符串匹配。
要使用 WAF 拒绝除*.example.com
之外的所有请求,请执行以下操作:
针对标头(Host
标头(创建字符串匹配条件,匹配类型为"结尾为">,值为.example.com
- 开头没有*
。 将 WAF 配置为阻止与条件不匹配的请求("主机标头以字节.example.com
结尾"(。
https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-string-conditions.html
在不使用 WAF的情况下拒绝应用程序负载均衡器中除*.example com
之外的所有请求更加容易......您只需要要求平衡器阻止所有内容,在此之前有一个例外 处理*.example.com
.
首先,创建一个与 Host 标头*.example.com
匹配的新侦听器规则(与 WAF 不同,此规则在开始时确实需要一个*
(,然后对于操作,选择正常的现有目标组。 这告诉平衡器使用该目标组进行*.example.com
- 它已经在这样做了,但这一步不是多余的......这是必需的,因为下一步:
将侦听器的默认侦听器规则操作更改为返回固定响应。 将状态代码设置为 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 在遇到阻止规则后处理它。