AWS 网络防火墙 + Windows EC2 实例 - google.com 在浏览器中未被阻止,但在命令行中被阻止

AWS 网络防火墙 + Windows EC2 实例 - google.com 在浏览器中未被阻止,但在命令行中被阻止

我正在使用 AWS 网络防火墙和 Windows EC2 实例进行测试。目标是仅允许访问允许的 URL,这些 URL 包括:

example.com
.amazon.com
.amazonaws.com

这通常有效。yahoo、reddit、netflix 等网站会被阻止并显示在警报日志中。但是,google.com 不会被浏览器阻止。只有在使用 curl 时才会从命令行阻止。

事件顺序:

1. Open browser
2. Go to google.com -> The site loads without an issue
3. There isn't any entry in the alerts log
4. Open the network tab in the browser and copy the cURL related to google.com
5. Open command prompt
6. Run the cURL command. This is blocked.
7. Check the alerts log. An entry alerting for google.com is present.

我的防火墙策略有以下规则:

  1. 无国籍规则组

    a. allow-rdp:允许从任何源到任何目标的 RDP 连接。操作为“通过”。我使用这个,否则在使用 AWS Fleet Manager 登录时会出现问题。

  2. 有状态规则组

    a. 允许列表:允许通过 HTTPS 访问特定 URL。列表包括 example.com、.amazon.com 和 .amazonaws.com

我的网络架构与最后一张图类似这里防火墙子网和客户子网都是公共子网(路由表如链接所示)。

答案1

更有可能的是使用加密客户端 Hello (ECH,以前称为 ESNI) 和服务器名称指示 (SNI) 规避。

在决定阻止或允许流量时,AWS 网络防火墙仅查看客户端可设置的 TLS SNI(与 HTTP Host 标头类似)。解决此问题的一个简单的示例是在 curl 命令行中明确设置它:

curl -kv --connect-to "example.com:443:8.8.8.8:443" -H "Host: 8.8.8.8" https://example.com/

example.com即使被允许,该命令也会穿透 AWS 防火墙并连接到 Google 拥有的 IP 地址。

另一种方法,也就是这种绕过方法,将在AWS 网络防火墙出口过滤可轻松绕过博客文章。

ECH 规避是一种混淆机制,专门用于绕过基于 SNI 的防火墙。本文可能不便深入探讨,但本质上,它以字段并省略原始SNI 字段可供创造性使用。

博客文章在 Google Chrome 中禁用加密的 ClientHello 及其原因进一步详细说明以及如何在 Chrome 中禁用它。

答案2

这可能是因为谷歌使用 QUIC 而不是总是使用 TLS。AWS 网络防火墙在检查 TLS 时存在限制。

不支持对基于 UDP 的传输协议(例如快速 UDP 互联网连接 (QUIC))进行 TLS 检查。您可以配置应用程序,使其不从 TCP 切换到基于 UDP 的传输协议。如果您想阻止 TLS 流量使用 QUIC 协议,请修改应用程序以拒绝使用 QUIC 的流量或创建防火墙状态规则来阻止 QUIC 流量。

https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection-considerations.html

您需要一个不同的规则来解决这个问题:

drop udp $HOME_NET any -> any 443 (msg:"Block QUIC traffic"; sid:1000001;)

相关内容