部署和配置 Azure 防火墙高级版
Azure 防火墙高级版是新一代防火墙,具备了高度敏感环境和受管制环境所需的功能。 它包括以下功能:
- TLS 检查 - 解密出站流量、处理数据,然后加密数据并将数据发送到目的地。
- IDPS - 网络入侵检测和防护系统 (IDPS) 使你可以监视网络活动是否出现恶意活动,记录有关此活动的信息,予以报告,选择性地尝试阻止。
- URL 筛选 - 扩展 Azure 防火墙的 FQDN 筛选功能,以涵盖整个 URL。 例如,
www.contoso.com/a/c
,而非www.contoso.com
。 - Web 类别 - 管理员可以允许或拒绝用户访问某些类别的网站,例如赌博网站、社交媒体网站等。
有关详细信息,请参阅 Azure 防火墙高级版功能。
你可使用模板来部署具有一个中心 VNet (10.0.0.0/16) 和三个子网的测试环境:
- 辅助角色子网 (10.0.10.0/24)
- Azure Bastion 子网 (10.0.20.0/24)
- 防火墙子网 (10.0.100.0/24)
重要
小时定价从部署 Bastion 的时刻开始计算,而无论出站数据使用情况如何。 有关详细信息,请参阅定价和 SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。
为简单起见,此测试环境使用了一个中心 VNet。 对于生产环境,具有对等互连 Vnet 的中心辐射型拓扑更为常见。
辅助角色虚拟机是通过防火墙发送 HTTP/S 请求的客户端。
先决条件
如果没有 Azure 订阅,请在开始前创建一个试用版订阅。
部署基础结构
模板将为 Azure 防护墙高级版部署一个完整的测试环境,并对其启用 IDPS、TLS 检查、URL 筛选和 Web 类别:
- 包含预定义设置的新 Azure 防火墙高级版和防火墙策略,以便轻松验证其核心功能(IDPS、TLS 检查、URL 筛选和 Web 类别)
- 部署所有依赖项,包括 Key Vault 和托管标识。 在生产环境中,这些资源可能已创建,在同一模板中不需要。
- 生成自签名根 CA 并将其部署到生成的 Key Vault 上
- 生成派生的中间 CA 并将其部署到 Windows 测试虚拟机 (WorkerVM) 上
- 还会部署一个堡垒主机 (BastionHost),可用于连接到 Windows 测试计算机 (WorkerVM)
测试防火墙
现在,可以测试 IDPS、TLS 检查、Web 筛选和 Web 类别。
添加防火墙诊断设置
要收集防火墙日志,需要添加诊断设置以收集防火墙日志。
- 选择“DemoFirewall”,并在“监视”下选择“诊断设置”。
- 选择“添加诊断设置”。
- 对于“诊断设置名称”,请键入“fw-diag”。
- 在“日志”下,选择“AzureFirewallApplicationRule”和“AzureFirewallNetworkRule”。
- 在“目标详细信息”下选择“发送到 Log Analytics 工作区”。
- 选择“保存”。
IDPS 测试
要测试 IDPS,你应该为自己的内部测试 Web 服务器部署适当的服务器证书。 此测试包括向 Web 服务器发送恶意流量,因此不建议对公共 Web 服务器执行此操作。 有关 Azure 防火墙高级版证书要求的详细信息,请参阅 Azure 防火墙高级版证书。
可以使用 curl
来控制各种 HTTP 头并模拟恶意流量。
测试用于 HTTP 流量的 IDPS:
在 WorkerVM 虚拟机上,打开管理员命令提示符窗口。
在命令提示符处键入以下命令:
curl -A "HaxerMen" <your web server address>
你将看到自己的 Web 服务器响应。
转到 Azure 门户上的防火墙网络规则日志,查找类似以下消息的警报:
{ "msg" : "TCP request from 10.0.100.5:16036 to 10.0.20.10:80. Action: Alert. Rule: 2032081. IDS: USER_AGENTS Suspicious User Agent (HaxerMen). Priority: 1. Classification: A Network Tojan was detected"}
注意
可能需要一段时间日志中才会开始显示数据。 至少等待几分钟,以便日志开始显示数据。
为签名 2032081 添加签名规则:
- 选择“DemoFirewallPolicy”,然后在“设置”下选择“IDPS”。
- 选择“签名规则”选项卡。
- 在“签名 ID”下,在打开的文本框中键入“2032081”。
- 在“模式”下,选择“拒绝”。
- 选择“保存”。
- 等待部署完成,然后再继续。
在 WorkerVM 上,再次运行
curl
命令:curl -A "HaxerMen" <your web server address>
由于 HTTP 请求现已被防火墙阻止,因此在连接超时过期后,你将看到以下输出:
read tcp 10.0.100.5:55734->10.0.20.10:80: read: connection reset by peer
转到 Azure 门户中的监视日志,查找被阻止的请求的消息。
测试用于 HTTPS 流量的 IDPS
使用 HTTPS(而不是 HTTP)重复这些 curl 测试。 例如:
curl --ssl-no-revoke -A "HaxerMen" <your web server address>
你应会看到与 HTTP 测试相同的结果。
TLS 检查和 URL 筛选
请按照以下步骤测试 TLS 检查和 URL 筛选。
编辑防火墙策略的应用规则,并向
AllowWeb
规则集合中添加一项名为AllowURL
的新规则。 配置目标 URLwww.nytimes.com/section/world
、源 IP 地址 *、目标类型“URL”,选择“TLS 检查”和协议“http、https”。部署完成后,在 WorkerVM 上打开浏览器,转到
https://www.nytimes.com/section/world
,然后在浏览器中验证 HTML 响应是否按预期方式显示。在 Azure 门户中,可以在应用规则监视日志中查看完整 URL:
有些 HTML 页可能看起来不完整,因为它们引用的是其他已被拒绝的 URL。 要解决此问题,可以采取以下方法:
如果 HTML 页面包含指向其他域的链接,则可以将这些域添加到一个对这些 FQDN 具有允许访问权限的新应用规则。
如果 HTML 页面包含指向子 URL 的链接,则可以修改规则并向 URL 中添加一个星号。 例如:
targetURLs=www.nytimes.com/section/world*
或者,可以向规则中添加一个新 URL。 例如:
www.nytimes.com/section/world, www.nytimes.com/section/world/*
Web 类别测试
让我们创建一个应用规则,以允许访问体育网站。
在门户中打开资源组,并选择“DemoFirewallPolicy”。
选择“应用规则”,然后选择“添加规则集合”。
对于“名称”键入“GeneralWeb”,“优先级”设为 103,对于“规则集合组”选择“DefaultApplicationRuleCollectionGroup”。
在“规则”下,对于“名称”键入 AllowSports,对于“源”选择 *,对于“协议”选择“http、https”,选择“TLS 检查”,对于“目标类型”选择“Web 类别”,对于“目标”选择“体育”。
选择 添加 。
部署完成后,转到“WorkerVM”,打开 Web 浏览器并浏览到
https://www.nfl.com
。你应会看到 NFL 网页,应用规则日志将显示一个匹配的“Web 类别:体育”规则,并且允许该请求。