AWS - 防火墙管理器 - WAF 规则如何阻止来自 IP 地址的请求(无主机名)?

Posted

技术标签:

【中文标题】AWS - 防火墙管理器 - WAF 规则如何阻止来自 IP 地址的请求(无主机名)?【英文标题】:AWS - Firewall Manager - WAF Rules How to block requests from IP address (No Host name)? 【发布时间】:2021-11-08 14:51:10 【问题描述】:

我正在为我的网站使用 AWS 防火墙管理器,并使用 Web-ACL 来拒绝 DOS 攻击和黑客请求。

但是,我仍然收到来自防火墙配置的以下请求(缺少我的 waf 规则)在下面的示例中,假设 3.6.8.8 是我的网络服务器 IP 地址。

3.6.8.8/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application
3.6.8.8/actuator/health
3.6.8.8/remote/fgt_lang?lang=/../../../..//////////dev/cmdb/ssl***_websession

在真正合法的情况下,我所有可接受的请求都不应该通过像 3.6.8.8 这样的直接 IP 调用,例如,我所有的网站请求都如下所示

https://*.example.com/*

我想知道如何使用 WAF 规则阻止上述假装来自我的 IP 地址 3.6.8.8 的请求?

【问题讨论】:

老实说,我没有得到您的问题,但如果它是关于阻止 WAF 中的特定 IP,那么您可以在 WAF 中使用 IP 3.6.8.8 创建一个 IP 集。然后在您的网络 acl 中创建一个 IP 规则。选择创建的 IP 集并将操作设置为阻止,以便阻止来自该 IP 的任何请求。如果您正在寻找其他东西,请告诉我。 @node_saini 这不像将 ip 添加到阻止列表那样简单,它关于阻止基于 IP 的请求被切断,所有请求都应该来自正确的主机名而不是 IP 地址。 主机名对我们来说只是一个用户友好的名称。它是完成所有工作的 IP。您不能按名称阻止域。你想阻止某些路径吗?此外,没有人可以假装来自您的 IP,因为 IP 是独一无二的。可能是我无法理解您的问题。你能更清楚地说明你的要求吗?可以尝试编辑您的问题以使其更简单。 如果您希望请求来自正确的主机名而不是 IP 地址,那么您需要为此购买一个域。您可以在 AWS 中使用 Route53,或者任何第三方也可以使用。 【参考方案1】:

您可以在 WAF Web ACL 中配置规则语句以Inspect Header 并将您的 Header 字段名称 设置为 Host 最后指定一个 Match Type 到正则表达式模式。

使用此配置,您可以创建一个检查主机是否为 IP 地址的正则表达式。如果是,则阻止请求。

希望这有帮助!

【讨论】:

这不起作用,因为某些请求没有设置主机标头,我正在寻找是否检测其 IP 地址 http 请求需要有主机头。没有一个,您如何发送请求?主机定义了 URI 的端点。例如:如果主机:3.6.8.8 则 URI:3.6.8.8,如果主机:example.com 则 URI:example.com。 请求没有主机名,直接生成 HTTP/2 请求的客户端应该使用 ":authority" 伪头字段而不是 Host 头字段。如果请求中不存在主机头字段,则将 HTTP/2 请求转换为 HTTP/1.1 的中介必须通过复制“:authority”伪头字段的值来创建主机头字段 您是否尝试过使用伪标头 ":authority" 来验证主机名?

以上是关于AWS - 防火墙管理器 - WAF 规则如何阻止来自 IP 地址的请求(无主机名)?的主要内容,如果未能解决你的问题,请参考以下文章

AWS WAF 日志利用率 + Web 应用程序的渗透测试

AWS WAF 的工作原理

新一代云WAF:防御能力智能化,用户享有规则“自主权”

新一代云WAF:防御能力智能化,用户享有规则“自主权”

在 Azure 前门服务上配置 WAF

如何使用SQLMap绕过WAF