若要保護(hù) Azure 應(yīng)用程序工作負(fù)載,可以在應(yīng)用程序本身使用保護(hù)措施,例如身份驗(yàn)證和加密。 還可以將安全層添加到托管應(yīng)用程序的 (VM) 虛擬機(jī)。 層保護(hù)來(lái)自用戶的入站流。 它們還保護(hù)應(yīng)用程序可能需要的到 Internet 的出站流。 本文介紹 Azure 虛擬網(wǎng)絡(luò) 安全服務(wù)(例如 Azure 防火墻 和 Azure 應(yīng)用程序網(wǎng)關(guān)、何時(shí)使用每個(gè)服務(wù))以及組合兩者的網(wǎng)絡(luò)設(shè)計(jì)選項(xiàng)。
Azure 防火墻托管的下一代防火墻,它通過(guò) NAT (網(wǎng)絡(luò)地址) 。 Azure 防火墻基于 Internet 協(xié)議 (IP) 地址以及傳輸控制協(xié)議和用戶數(shù)據(jù)報(bào)協(xié)議 (TCP/UDP) 端口,或基于應(yīng)用程序的 HTTP (S) 或 SQL 屬性進(jìn)行數(shù)據(jù)包篩選。 Azure 防火墻 Microsoft 威脅情報(bào)來(lái)識(shí)別惡意 IP 地址。 有關(guān)詳細(xì)信息,請(qǐng)參閱 Azure 防火墻 文檔。
Azure 防火墻 高級(jí)版包括標(biāo)準(zhǔn)Azure 防火墻的所有功能以及其他功能,例如 TLS 檢查和入侵檢測(cè)和保護(hù)系統(tǒng) (IDPS) 。
Azure 應(yīng)用程序網(wǎng)關(guān) 托管 Web 流量負(fù)載均衡器以及 HTTP (S) 完全反向代理,可以執(zhí)行安全套接字層 (SSL) 加密和解密。 應(yīng)用程序網(wǎng)關(guān)還使用 Web 應(yīng)用程序防火墻來(lái)檢查 Web 流量并檢測(cè) HTTP 層上的攻擊。 有關(guān)詳細(xì)信息,請(qǐng)參閱應(yīng)用程序 網(wǎng)關(guān)文檔。
Azure Web 應(yīng)用程序防火墻 (WAF) 是一項(xiàng)可選添加Azure 應(yīng)用程序網(wǎng)關(guān)。 它提供對(duì) HTTP 請(qǐng)求的檢查,并防止 Web 層上的惡意攻擊,例如SQL注入或跨站點(diǎn)腳本。 有關(guān)詳細(xì)信息,請(qǐng)參閱 Web 應(yīng)用程序防火墻文檔。
這些 Azure 服務(wù)是互補(bǔ)的。 其中一種可能最適合工作負(fù)荷,也可以將它們一起用于網(wǎng)絡(luò)層和應(yīng)用程序?qū)拥淖罴驯Wo(hù)。 使用以下決策樹(shù)和本文中的示例來(lái)確定應(yīng)用程序虛擬網(wǎng)絡(luò)的最佳安全選項(xiàng)。
Azure 防火墻Azure 應(yīng)用程序網(wǎng)關(guān)使用不同的技術(shù),并且它們支持不同流的安全化:
應(yīng)用程序Flow | 可以按Azure 防火墻 | 可以通過(guò)應(yīng)用程序網(wǎng)關(guān)上的 WAF 進(jìn)行篩選 |
---|---|---|
HTTP (S) 從本地/Internet 到 Azure 的流量 (入站) | 是 | 是 |
HTTP (S) 從 Azure 到本地/Internet 的流量 (出站) | 是 | 否 |
非 HTTP (S) 流量、入站/出站 | 是 | 否 |
根據(jù)應(yīng)用程序所需的網(wǎng)絡(luò)流,設(shè)計(jì)可能因應(yīng)用程序不同而不同。 下圖提供了一個(gè)簡(jiǎn)化的決策樹(shù),可幫助選擇應(yīng)用程序的建議方法。 決策取決于應(yīng)用程序是通過(guò) HTTP (S) 還是某些其他協(xié)議發(fā)布:
本文將介紹流程圖中廣泛推薦的設(shè)計(jì),以及適用于不太常見(jiàn)方案其他設(shè)計(jì):
Azure 防火墻虛擬網(wǎng)絡(luò)中不存在 Web 應(yīng)用程序時(shí),單獨(dú)使用 。 它將控制到應(yīng)用程序的入站流量和出站流量。
僅應(yīng)用程序網(wǎng)關(guān),當(dāng)只有 Web 應(yīng)用程序在虛擬網(wǎng)絡(luò)中,并且網(wǎng)絡(luò)安全組 (NSG ) 提供足夠的輸出篩選。 通常不建議使用此方案,因?yàn)?NSG 上具有Azure 防火墻功能。 該功能可以防止許多攻擊 (例如數(shù)據(jù)外泄) ,因此,上述流程圖中未記錄此方案。
Azure 防火墻應(yīng)用程序網(wǎng)關(guān)并行運(yùn)行,這是最常見(jiàn)的設(shè)計(jì)之一。 當(dāng)你希望保護(hù) HTTP Azure 應(yīng)用程序網(wǎng)關(guān) S (應(yīng)用程序) Web 攻擊,Azure 防火墻保護(hù)所有其他工作負(fù)荷并篩選出站流量時(shí),請(qǐng)使用此組合。
應(yīng)用程序網(wǎng)關(guān)位于Azure 防火墻,當(dāng)你想要Azure 防火墻檢查所有流量時(shí),WAF 用于保護(hù) Web 流量,應(yīng)用程序知道客戶端的源 IP 地址。 通過(guò)Azure 防火墻 高級(jí)版和 TLS 檢查,此設(shè)計(jì)還支持端到端 SSL 方案。
Azure 防火墻網(wǎng)關(guān)的前面,Azure 防火墻在流量到達(dá)應(yīng)用程序網(wǎng)關(guān)之前檢查和篩選流量。 由于Azure 防火墻不會(huì)解密 HTTPS 流量,因此它添加到應(yīng)用程序網(wǎng)關(guān)的功能會(huì)受到限制。 此方案未記錄在以上流程圖中。
本文的最后一部分介紹了以前基本設(shè)計(jì)的變體。 這些變體包括:
本地應(yīng)用程序客戶端。
中心和分支網(wǎng)絡(luò)。
Azure Kubernetes 服務(wù) (AKS) 實(shí)現(xiàn)。
可以添加其他反向代理服務(wù),例如 API Management網(wǎng)關(guān)或 Azure Front Door。 或者,可以將 Azure 資源替換為第三 方網(wǎng)絡(luò)虛擬設(shè)備。
如果虛擬網(wǎng)絡(luò)中沒(méi)有任何可受益于 WAF 的基于 Web 的工作負(fù)荷,則只能Azure 防火墻。 在這種情況下,設(shè)計(jì)很簡(jiǎn)單,但查看數(shù)據(jù)包流將有助于了解更復(fù)雜的設(shè)計(jì)。
下表總結(jié)了此方案的流量流:
流向 | 通過(guò)應(yīng)用程序網(wǎng)關(guān)/WAF | 完成Azure 防火墻 |
---|---|---|
HTTP (S) Internet/onprem 到 Azure 的流量 | 空值 | 是 (請(qǐng)參閱下面的) |
HTTP (S) Azure 到 Internet/onprem 的流量 | 空值 | 是 |
非 HTTP (S) Internet/onprem 到 Azure 的流量 | 空值 | 是 |
非 HTTP (S) Azure 到 Internet/onprem 的流量 | 空值 | 是 |
Azure 防火墻不會(huì)檢查入站 HTTP (S) 流量。 但它將能夠應(yīng)用 L3/L4 規(guī)則和基于 FQDN 的應(yīng)用程序規(guī)則。 Azure 防火墻檢查出站 HTTP (S) 流量,具體取決于Azure 防火墻層以及是否配置 TLS 檢查:
Azure 防火墻標(biāo)準(zhǔn)僅檢查網(wǎng)絡(luò)規(guī)則中數(shù)據(jù)包的 3-4 層屬性,以及應(yīng)用程序規(guī)則中的主機(jī) HTTP 標(biāo)頭。
Azure 防火墻 高級(jí)版添加一些功能,例如檢查其他 HTTP 標(biāo)頭 (如用戶代理) 啟用 TLS 檢查,以便進(jìn)行更深入的數(shù)據(jù)包分析。 Azure 防火墻不等同于 Web 應(yīng)用程序防火墻。 如果虛擬網(wǎng)絡(luò)中具有 Web 工作負(fù)載,強(qiáng)烈建議使用 WAF。
下面的數(shù)據(jù)包演練示例演示客戶端如何從公共 Internet 訪問(wèn) VM 托管的應(yīng)用程序。 為簡(jiǎn)單起見(jiàn),該圖僅包含一個(gè) VM。 為了提高可用性和可伸縮性,負(fù)載均衡器后面會(huì)有多個(gè)應(yīng)用程序?qū)嵗?/p>
客戶端啟動(dòng)與客戶端的公共 IP 地址Azure 防火墻:
源 IP 地址:ClientPIP
目標(biāo) IP 地址:AzFwPIP
AZURE 防火墻目標(biāo) NAT (DNAT) 規(guī)則 將目標(biāo) IP 地址轉(zhuǎn)換為虛擬網(wǎng)絡(luò)中的應(yīng)用程序 IP 地址。 如果Azure 防火墻 為 DNAT, (SNAT) SNAT 的源 NAT。 有關(guān)詳細(xì)信息,請(qǐng)參閱Azure 防火墻 已知問(wèn)題。 VM 在傳入數(shù)據(jù)包中看到以下 IP 地址:
源 IP 地址:192.168.100.7
目標(biāo) IP 地址:192.168.1.4
VM 會(huì)響應(yīng)應(yīng)用程序請(qǐng)求,并反轉(zhuǎn)源和目標(biāo) IP 地址。 入站流不需要用戶定義的路由 (UDR) ,因?yàn)樵?IP Azure 防火墻 IP 地址。 圖中 0.0.0.0/0 的 UDR 用于出站連接,以確保發(fā)往公共 Internet 的數(shù)據(jù)包通過(guò)Azure 防火墻。
源 IP 地址:192.168.1.4
目標(biāo) IP 地址:192.168.100.7
最后,Azure 防火墻會(huì)撤消 SNAT 和 DNAT 操作,并將響應(yīng)傳遞給客戶端:
源 IP 地址: AzFwPIP
目標(biāo) IP 地址: ClientPIP
在此設(shè)計(jì)中,Azure 防火墻使用 UDR 檢查來(lái)自公共 internet 的傳入連接和來(lái)自應(yīng)用程序子網(wǎng) VM 的出站連接。
IP 地址 192.168.100.7
是 Azure 防火墻服務(wù)在其中部署的一個(gè)實(shí)例,其中包含前端 IP 地址 192.168.100.4
。 Azure 管理員通常不會(huì)看到這些單獨(dú)的實(shí)例。 但請(qǐng)注意,在某些情況下,這種區(qū)別很有用,例如,在對(duì)網(wǎng)絡(luò)問(wèn)題進(jìn)行故障排除時(shí)。
如果流量來(lái)自本地虛擬專(zhuān)用網(wǎng)絡(luò) (VPN) 或 Azure ExpressRoute 網(wǎng)關(guān)而不是 internet,則客戶端將啟動(dòng)到 VM 的 IP 地址的連接。 它不會(huì)啟動(dòng)與防火墻的 IP 地址的連接,并且每個(gè)默認(rèn)情況下,防火墻將不執(zhí)行源 NAT。
此設(shè)計(jì)涵蓋了虛擬網(wǎng)絡(luò)中僅存在 web 應(yīng)用程序的情況,并且通過(guò) Nsg 檢查出站流量足以保護(hù)出站流到 internet。
備注
這不是一種建議的設(shè)計(jì),因?yàn)槭褂?Azure 防火墻來(lái)控制出站流 (而不是僅 Nsg) 將阻止某些攻擊方案,例如 data 滲透,這會(huì)確保工作負(fù)荷僅將數(shù)據(jù)發(fā)送到已批準(zhǔn)的 Url 列表。
與以前的設(shè)計(jì)相比,只有 Azure 防火墻的主要區(qū)別是,應(yīng)用程序網(wǎng)關(guān)不能充當(dāng)帶有 NAT 的路由設(shè)備。 它表現(xiàn)為完整的反向應(yīng)用程序代理。 也就是說(shuō),應(yīng)用程序網(wǎng)關(guān)會(huì)從客戶端停止 web 會(huì)話,并使用其后端服務(wù)器之一建立單獨(dú)的會(huì)話。
下表匯總了流量流:
流向 | 通過(guò)應(yīng)用程序網(wǎng)關(guān)/WAF | 通過(guò) Azure 防火墻 |
---|---|---|
HTTP (S) 從 internet/onprem 到 Azure 的流量 | 是 | 空值 |
HTTP (S) 從 Azure 到 internet/onprem 的流量 | 否 | 空值 |
非 HTTP (S) 從 internet/onprem 到 Azure 的流量 | 否 | 空值 |
非 HTTP (S) 從 Azure 到 internet/onprem 的流量 | 否 | 空值 |
以下數(shù)據(jù)包審核示例演示客戶端如何從公共 internet 訪問(wèn) VM 托管的應(yīng)用程序。
客戶端開(kāi)始連接到 Azure 應(yīng)用程序網(wǎng)關(guān)的公共 IP 地址:
源 IP 地址: ClientPIP
目標(biāo) IP 地址: AppGwPIP
接收請(qǐng)求的應(yīng)用程序網(wǎng)關(guān)實(shí)例將停止來(lái)自客戶端的連接,并與一個(gè)后端建立新連接。 后端會(huì)將應(yīng)用程序網(wǎng)關(guān)實(shí)例視為源 IP 地址。 應(yīng)用程序網(wǎng)關(guān)插入帶有原始客戶端 IP 地址 的 X 轉(zhuǎn)發(fā)的 HTTP 標(biāo)頭。
源 IP 地址: 192.168.200.7 (應(yīng)用程序網(wǎng)關(guān)實(shí)例的專(zhuān)用 IP 地址)
目標(biāo) IP 地址:192.168.1。4
X 轉(zhuǎn)發(fā)的標(biāo)頭: ClientPIP
VM 會(huì)應(yīng)答應(yīng)用程序請(qǐng)求,并反向源和目標(biāo) IP 地址。 VM 已知道如何訪問(wèn)應(yīng)用程序網(wǎng)關(guān),因此不需要 UDR。
源 IP 地址:192.168.1。4
目標(biāo) IP 地址:192.168.200。7
最后,應(yīng)用程序網(wǎng)關(guān)實(shí)例會(huì)應(yīng)答客戶端:
源 IP 地址: AppGwPIP
目標(biāo) IP 地址: ClientPIP
Azure 應(yīng)用程序網(wǎng)關(guān)會(huì)將元數(shù)據(jù)添加到數(shù)據(jù)包 HTTP 標(biāo)頭,如包含原始客戶端 IP 地址的 X 轉(zhuǎn)發(fā)的 標(biāo)頭。 某些應(yīng)用程序服務(wù)器需要源客戶端 IP 地址來(lái)提供地理位置特定的內(nèi)容,或用于日志記錄。 有關(guān)詳細(xì)信息,請(qǐng)參閱應(yīng)用程序網(wǎng)關(guān)的工作原理。
IP 地址 192.168.200.7
是 Azure 應(yīng)用程序網(wǎng)關(guān)服務(wù)在其中部署的一個(gè)實(shí)例,其中包含前端 IP 地址 192.168.200.4
。 Azure 管理員通常不會(huì)看到這些單獨(dú)的實(shí)例。 但請(qǐng)注意,在某些情況下,這種區(qū)別很有用,例如,在對(duì)網(wǎng)絡(luò)問(wèn)題進(jìn)行故障排除時(shí)。
如果客戶端來(lái)自于 VPN 或 ExpressRoute 網(wǎng)關(guān)的本地網(wǎng)絡(luò),則流類(lèi)似。 不同之處在于,客戶端訪問(wèn)應(yīng)用程序網(wǎng)關(guān)的專(zhuān)用 IP 地址,而不是公共地址。
由于其簡(jiǎn)易性和靈活性,并行運(yùn)行應(yīng)用程序網(wǎng)關(guān)和 Azure 防火墻通常是最佳方案。
如果在虛擬網(wǎng)絡(luò)中混合使用 web 工作負(fù)載和非 web 工作負(fù)載,則可實(shí)現(xiàn)此設(shè)計(jì)。 Azure WAF 保護(hù)發(fā)往 web 工作負(fù)荷的入站流量,Azure 防火墻將檢查其他應(yīng)用程序的入站流量。 Azure 防火墻將涵蓋這兩種工作負(fù)荷類(lèi)型的出站流。
下表總結(jié)了這種情況下的流量:
流向 | 通過(guò)應(yīng)用程序網(wǎng)關(guān)/WAF | 通過(guò) Azure 防火墻 |
---|---|---|
HTTP (S) 從 internet/onprem 到 Azure 的流量 | 是 | 否 |
HTTP (S) 從 Azure 到 internet/onprem 的流量 | 否 | 是 |
非 HTTP (S) 從 internet/onprem 到 Azure 的流量 | 否 | 是 |
非 HTTP (S) 從 Azure 到 internet/onprem 的流量 | 否 | 是 |
此設(shè)計(jì)比 Nsg 提供更精細(xì)的出口篩選。 如果應(yīng)用程序需要連接到特定的 Azure 存儲(chǔ)帳戶,則可以使用 完全限定的域名 (基于 FQDN) 的篩選器。 對(duì)于基于 FQDN 的篩選器,應(yīng)用程序不會(huì)將數(shù)據(jù)發(fā)送到惡意存儲(chǔ)帳戶。 只能使用 Nsg 阻止該方案。 此設(shè)計(jì)通常用于出站流量需要基于 FQDN 的篩選的位置。 一個(gè)例子就是 限制來(lái)自 Azure Kubernetes 服務(wù)群集的出口流量。
下圖說(shuō)明了來(lái)自外部客戶端的入站連接的流量流:
下圖說(shuō)明了從網(wǎng)絡(luò) Vm 到 internet 的出站連接的流量流。 例如,連接到后端系統(tǒng)或獲取操作系統(tǒng)更新:
每個(gè)服務(wù)的數(shù)據(jù)包流步驟與以前的獨(dú)立設(shè)計(jì)選項(xiàng)相同。
在此選項(xiàng)中,入站 web 流量通過(guò) Azure 防火墻和 WAF。 WAF 提供 web 應(yīng)用程序?qū)颖Wo(hù)。 Azure 防火墻充當(dāng)中心日志記錄和控制點(diǎn),并檢查應(yīng)用程序網(wǎng)關(guān)和后端服務(wù)器之間的流量。 應(yīng)用程序網(wǎng)關(guān)和 Azure 防火墻并不并行,而是另一個(gè)。
利用azure 防火墻高級(jí)版,這種設(shè)計(jì)可以支持端到端方案,在此方案中,Azure 防火墻應(yīng)用 TLS 檢查來(lái)對(duì)應(yīng)用程序網(wǎng)關(guān)和 web 后端之間的加密流量進(jìn)行 idp。
此設(shè)計(jì)適用于需要了解傳入客戶端源 IP 地址的應(yīng)用程序,例如,用于提供地理位置特定的內(nèi)容或用于日志記錄。 Azure 防火墻 SNATs 傳入流量,從而更改原始源 IP 地址。 Azure 防火墻前面的應(yīng)用程序網(wǎng)關(guān)在 X 轉(zhuǎn)發(fā) 的標(biāo)頭中捕獲傳入數(shù)據(jù)包的源 IP 地址,以便 web 服務(wù)器可以在此標(biāo)頭中看到原始 IP 地址。 有關(guān)詳細(xì)信息,請(qǐng)參閱應(yīng)用程序網(wǎng)關(guān)的工作原理。
下表總結(jié)了此方案的流量流:
流向 | 通過(guò)應(yīng)用程序網(wǎng)關(guān)/WAF | 完成Azure 防火墻 |
---|---|---|
HTTP (S) Internet/onprem 到 Azure 的流量 | 是 | 是 |
HTTP (S) Azure 到 Internet/onprem 的流量 | 否 | 是 |
非 HTTP (S) Internet/onprem 到 Azure 的流量 | 否 | 是 |
非 HTTP (S) Azure 到 Internet/onprem 的流量 | 否 | 是 |
對(duì)于從本地或 Internet 到 Azure 的 Web 流量,Azure 防火墻將檢查 WAF 已允許的流。 根據(jù)應(yīng)用程序網(wǎng)關(guān)是否加密后端流量 (從應(yīng)用程序網(wǎng)關(guān)到應(yīng)用程序服務(wù)器) 流量,你將有兩種不同的可能方案:
應(yīng)用程序網(wǎng)關(guān)按照零信任原則加密流量 (端到端 TLS 加密) ,Azure 防火墻接收加密的流量。 不過(guò),Azure 防火墻標(biāo)準(zhǔn)版將能夠應(yīng)用檢查規(guī)則,例如網(wǎng)絡(luò)規(guī)則中的 L3/L4 篩選,或者使用 TLS 服務(wù)器名稱(chēng)指示 (SNI) 標(biāo)頭在應(yīng)用程序規(guī)則中篩選 FQDN。 Azure 防火墻 高級(jí)版IDPS 提供更深入的可見(jiàn)性,例如基于 URL 的篩選。
如果應(yīng)用程序網(wǎng)關(guān)將未加密的流量發(fā)送到應(yīng)用程序服務(wù)器,Azure 防火墻將看到以純文本格式的入站流量。 在中不需要 TLS Azure 防火墻。
如果 IDPS 在 Azure 防火墻中啟用,它將驗(yàn)證 HTTP 主機(jī)標(biāo)頭是否與目標(biāo) IP 匹配。 為此,它將需要主機(jī)標(biāo)頭中指定的 FQDN 的名稱(chēng)解析。 此名稱(chēng)解析可以通過(guò)使用 Azure DNS 專(zhuān)用區(qū)域 和默認(rèn) Azure 防火墻 DNS 設(shè)置Azure DNS。 此外,還可通過(guò)自定義 DNS 服務(wù)器實(shí)現(xiàn)此目的,這些服務(wù)器需要在設(shè)置Azure 防火墻配置。 (有關(guān)詳細(xì)信息,請(qǐng)參閱 Azure 防火墻 DNS設(shè)置.) 如果沒(méi)有對(duì)部署 Azure 防火墻 的虛擬網(wǎng)絡(luò)的管理訪問(wèn)權(quán)限,則只能使用后一種方法。 例如,在虛擬 WAN 安全中心部署 Azure 防火墻。
對(duì)于流的其余部分 (入站非 HTTP (S) 流量和任何出站流量) ,Azure 防火墻 將在適當(dāng)?shù)臅r(shí)候提供 IDPS 檢查和 TLS 檢查。 它還在基于 DNS 的網(wǎng)絡(luò)規(guī)則中提供基于 FQDN 的篩選。
來(lái)自公共 Internet 的網(wǎng)絡(luò)流量遵循以下流程:
客戶端啟動(dòng)與客戶端的公共 IP 地址Azure 應(yīng)用程序網(wǎng)關(guān):
源 IP 地址:ClientPIP
目標(biāo) IP 地址:AppGwPIP
應(yīng)用程序網(wǎng)關(guān)實(shí)例停止來(lái)自客戶端的連接,并建立與其中一個(gè)后端的新連接。 應(yīng)用程序網(wǎng)關(guān)子網(wǎng)中的 UDR 將數(shù)據(jù)包轉(zhuǎn)發(fā)到 192.168.1.0/24
Azure 防火墻,同時(shí)將目標(biāo) IP 保留到 Web 應(yīng)用程序:
源 IP 地址:192.168.200.7 (應(yīng)用程序網(wǎng)關(guān)實(shí)例實(shí)例的專(zhuān)用 IP)
目標(biāo) IP 地址:192.168.1.4
X-Forwarded-For 標(biāo)頭:ClientPIP
Azure 防火墻不會(huì)對(duì)流量進(jìn)行 SNAT,因?yàn)榱髁繉⑦M(jìn)入專(zhuān)用 IP 地址。 如果規(guī)則允許,它會(huì)將流量轉(zhuǎn)發(fā)到應(yīng)用程序 VM。 有關(guān)詳細(xì)信息,請(qǐng)參閱 Azure 防火墻SNAT。
源 IP 地址:192.168.200.7 (應(yīng)用程序網(wǎng)關(guān)實(shí)例實(shí)例的專(zhuān)用 IP)
目標(biāo) IP 地址:192.168.1.4
X-Forwarded-For 標(biāo)頭:ClientPIP
VM 會(huì)響應(yīng)請(qǐng)求,并反轉(zhuǎn)源和目標(biāo) IP 地址。 用于捕獲發(fā)回應(yīng)用程序網(wǎng)關(guān)的數(shù)據(jù)包的 UDR,將其重定向到Azure 防火墻,同時(shí)將目標(biāo) IP 保留 192.168.200.0/24
到應(yīng)用程序網(wǎng)關(guān)。
源 IP 地址:192.168.1.4
目標(biāo) IP 地址:192.168.200.7
此處Azure 防火墻不會(huì)對(duì)流量進(jìn)行 SNAT,因?yàn)樗鼘⑦M(jìn)入專(zhuān)用 IP 地址,并且將流量轉(zhuǎn)發(fā)到應(yīng)用程序網(wǎng)關(guān)。
源 IP 地址:192.168.1.4
目標(biāo) IP 地址:192.168.200.7
最后,應(yīng)用程序網(wǎng)關(guān)實(shí)例回答客戶端:
源 IP 地址:AppGwPIP
目標(biāo) IP 地址:ClientPIP
從 VM 到公共 Internet 的出站流Azure 防火墻 UDR 定義的到 0.0.0.0/0
。
此設(shè)計(jì)Azure 防火墻在惡意流量到達(dá)應(yīng)用程序網(wǎng)關(guān)之前進(jìn)行篩選和丟棄。 例如,它可以應(yīng)用基于威脅情報(bào)的篩選等功能。 另一個(gè)好處是,應(yīng)用程序?yàn)槿胝竞统稣玖髁揩@取相同的公共 IP 地址。
此方案的好處有限,因?yàn)锳zure 防火墻只會(huì)看到發(fā)到應(yīng)用程序網(wǎng)關(guān)的加密流量。 在某些情況下,此設(shè)計(jì)是首選。 例如,如果網(wǎng)絡(luò)服務(wù)器中較早有另一個(gè) WAF (,則Azure Front Door) 。 或者,如果需要多個(gè)公共 IP 地址,則設(shè)計(jì)是首選。
下表總結(jié)了此方案的流量流:
流向 | 通過(guò)應(yīng)用程序網(wǎng)關(guān)/WAF | 完成Azure 防火墻 |
---|---|---|
HTTP (S) Internet/onprem 到 Azure 的流量 | 是 | 是 (請(qǐng)參閱下面的) |
HTTP (S) Azure 到 Internet/onprem 的流量 | 否 | 是 |
非 HTTP (S) Internet/onprem 到 Azure 的流量 | 否 | 是 |
非 HTTP (S) Azure 到 Internet/onprem 的流量 | 否 | 是 |
對(duì)于入站 HTTP (S) 流量,Azure 防火墻通常不會(huì)解密流量。 而是應(yīng)用不需要 TLS 檢查的 IDPS 策略,例如基于 IP 的篩選或 HTTP 標(biāo)頭。
應(yīng)用程序看不到 Web 流量的原始源 IP 地址;Azure 防火墻數(shù)據(jù)包進(jìn)入虛擬網(wǎng)絡(luò)時(shí)進(jìn)行 SNAT。 若要避免此問(wèn)題,請(qǐng)使用 Azure Front Door 前面的防火墻。 Azure Front Door在客戶端進(jìn)入 Azure 虛擬網(wǎng)絡(luò)之前,將客戶端的 IP 地址作為 HTTP 標(biāo)頭注入。
來(lái)自公共 Internet 的網(wǎng)絡(luò)流量遵循以下流程:
客戶端啟動(dòng)與客戶端的公共 IP 地址Azure 防火墻:
源 IP 地址:ClientPIP
目標(biāo) IP 地址:AzFWPIP
該Azure 防火墻 WEB 端口(通常為 TCP 443)連接到應(yīng)用程序網(wǎng)關(guān)實(shí)例的專(zhuān)用 IP 地址。 Azure 防火墻 DNAT 時(shí)也使用 SNAT。 有關(guān)詳細(xì)信息,請(qǐng)參閱Azure 防火墻 已知問(wèn)題:
源 IP 地址:192.168.100.7 (實(shí)例的專(zhuān)用 IP Azure 防火墻地址)
目標(biāo) IP 地址:192.168.200.4
應(yīng)用程序網(wǎng)關(guān)在處理連接的實(shí)例與后端服務(wù)器之一之間建立一個(gè)新會(huì)話。 客戶端的原始 IP 地址不在數(shù)據(jù)包中:
源 IP 地址:192.168.200.7 (應(yīng)用程序網(wǎng)關(guān)實(shí)例實(shí)例的專(zhuān)用 IP)
目標(biāo) IP 地址:192.168.1.4
X-Forwarded-For 標(biāo)頭:192.168.100.7
VM 會(huì)回答應(yīng)用程序網(wǎng)關(guān),并反轉(zhuǎn)源和目標(biāo) IP 地址:
源 IP 地址:192.168.1.4
目標(biāo) IP 地址:192.168.200.7
應(yīng)用程序網(wǎng)關(guān)回復(fù)實(shí)例的 SNAT Azure 防火墻 IP 地址。 即使連接來(lái)自特定的應(yīng)用程序網(wǎng)關(guān)實(shí)例(如 )Azure 防火墻應(yīng)用程序網(wǎng)關(guān)的內(nèi)部 IP 地址 .7
.4
作為源 IP:
源 IP 地址:192.168.200.4
目標(biāo) IP 地址:192.168.100.7
最后,Azure 防火墻 SNAT 和 DNAT 并回答客戶端:
源 IP 地址:AzFwPIP
目標(biāo) IP 地址:ClientPIP
即使應(yīng)用程序網(wǎng)關(guān)沒(méi)有為應(yīng)用程序配置偵聽(tīng)器,它仍然需要公共 IP 地址,以便 Microsoft 可以管理它。
備注
不支持應(yīng)用程序網(wǎng)關(guān)子網(wǎng)中指向 Azure 防火墻 的默認(rèn)路由,因?yàn)樗鼤?huì)中斷正確操作應(yīng)用程序所需的控制平面 0.0.0.0/0
Azure 應(yīng)用程序網(wǎng)關(guān)。
上述設(shè)計(jì)都顯示來(lái)自公共 Internet 的應(yīng)用程序客戶端。 本地網(wǎng)絡(luò)也會(huì)訪問(wèn)應(yīng)用程序。 上述大部分信息和流量流與 Internet 客戶端相同,但存在一些明顯的差異:
VPN 網(wǎng)關(guān)或 ExpressRoute 網(wǎng)關(guān)位于 Azure 防火墻 或應(yīng)用程序網(wǎng)關(guān)的前面。
WAF 使用應(yīng)用程序網(wǎng)關(guān)的專(zhuān)用 IP 地址。
Azure 防火墻專(zhuān)用 IP 地址不支持 DNAT。 因此,必須使用 UDR 將入站流量發(fā)送到Azure 防火墻 VPN 或 ExpressRoute 網(wǎng)關(guān)的流量。
請(qǐng)確保驗(yàn)證有關(guān)事件 和 的強(qiáng)制 隧道 Azure 應(yīng)用程序網(wǎng)關(guān)注意事項(xiàng) Azure 防火墻。 即使工作負(fù)荷不需要到公共 Internet 的出站連接,也無(wú)法為應(yīng)用程序網(wǎng)關(guān)注入指向本地網(wǎng)絡(luò)的默認(rèn)路由,否則會(huì)中斷控制流量。 0.0.0.0/0
對(duì)于Azure 應(yīng)用程序網(wǎng)關(guān),默認(rèn)路由需要指向公共 Internet。
下圖顯示了并行Azure 應(yīng)用程序網(wǎng)關(guān)Azure 防火墻設(shè)計(jì)。 應(yīng)用程序客戶端來(lái)自通過(guò) VPN 或 ExpressRoute 連接到 Azure 的本地網(wǎng)絡(luò):
即使所有客戶端都位于本地或 Azure 中,Azure 應(yīng)用程序網(wǎng)關(guān)Azure 防火墻都需要具有公共 IP 地址。 公共 IP 地址允許 Microsoft 管理服務(wù)。
本文中的設(shè)計(jì)仍 適用于中心分支 拓?fù)洹?中心虛擬網(wǎng)絡(luò)中的共享資源通過(guò)虛擬網(wǎng)絡(luò)對(duì)等互連連接到單獨(dú)分支虛擬網(wǎng)絡(luò)中的應(yīng)用程序。
此拓?fù)涞囊恍┳⒁馐马?xiàng)包括:
該Azure 防火墻部署在中心虛擬網(wǎng)絡(luò)中。 不過(guò),應(yīng)用程序團(tuán)隊(duì)通常管理Azure 應(yīng)用程序網(wǎng)關(guān)或 Azure API Management網(wǎng)關(guān)等組件。 這些組件部署在分支虛擬網(wǎng)絡(luò)中。
特別注意分支網(wǎng)絡(luò)中 UDR:當(dāng)分支中的應(yīng)用程序服務(wù)器接收來(lái)自特定 Azure 防火墻 實(shí)例的流量(如前面的示例中的地址)時(shí),它應(yīng)發(fā)送回同一實(shí)例的返回 192.168.100.7
流量。 如果分支中的 UDR 將發(fā)送到中心的流量的下一躍點(diǎn)設(shè)置到) 上圖中的 Azure 防火墻 IP 地址 (,則返回?cái)?shù)據(jù)包最終可能會(huì)在不同的 Azure 防火墻 實(shí)例上, 192.168.100.4
從而導(dǎo)致非對(duì)稱(chēng)路由。 確保分支 VNet 中具有 UDR,以通過(guò) Azure 防火墻 將流量發(fā)送到中心中的共享服務(wù),則這些 UDR 不包含 Azure 防火墻 子網(wǎng)的前綴。
前面的建議同樣適用于應(yīng)用程序網(wǎng)關(guān)子網(wǎng)以及可能部署在中心 VNet 中的其他任何網(wǎng)絡(luò)虛擬設(shè)備或反向代理。
無(wú)法為應(yīng)用程序網(wǎng)關(guān)設(shè)置下一躍點(diǎn),或Azure 防火墻下一躍點(diǎn)類(lèi)型為 的靜態(tài)路由設(shè)置子網(wǎng) Virtual Network
。 此下一躍點(diǎn)類(lèi)型僅在本地 VNet 中有效,在 VNet 對(duì)等互連中無(wú)效。 有關(guān)用戶定義的路由和下一躍點(diǎn)類(lèi)型的信息,請(qǐng)參閱 虛擬網(wǎng)絡(luò)流量路由。
下圖顯示了分支如何將 SNA 點(diǎn)流量發(fā)回到該分支的 ALB Azure 防火墻。 此設(shè)置會(huì)導(dǎo)致非對(duì)稱(chēng)路由:
若要解決此問(wèn)題,請(qǐng)定義分支中的 UDR,Azure 防火墻子網(wǎng),但僅定義共享服務(wù)所在的子網(wǎng)。 在示例中,分支中的正確 UDR 應(yīng)僅包含 192.168.1.0/24。 它不應(yīng)包含整個(gè) 192.168.0.0/16,用紅色標(biāo)記。
可以將 Azure 防火墻 Azure 應(yīng)用程序網(wǎng)關(guān)與其他 Azure 產(chǎn)品和服務(wù)集成。
將反向代理服務(wù) (API Management 網(wǎng)關(guān))集成到以前的設(shè)計(jì)中,以提供 API 限制或身份驗(yàn)證代理等功能。 集成API Management網(wǎng)關(guān)不會(huì)極大地改變?cè)O(shè)計(jì)。 主要區(qū)別在于,有兩個(gè)相互鏈接的反向代理,而不是單個(gè)應(yīng)用程序網(wǎng)關(guān)反向代理。
有關(guān)詳細(xì)信息,請(qǐng)參閱在虛擬網(wǎng)絡(luò)中集成API Management應(yīng)用程序網(wǎng)關(guān)的設(shè)計(jì) 指南和 微服務(wù)的應(yīng)用程序模式 API 網(wǎng)關(guān)。
對(duì)于在 AKS 群集上運(yùn)行的工作負(fù)荷,Azure 應(yīng)用程序網(wǎng)關(guān)群集獨(dú)立部署。 或者,可以使用入口控制器 將其與 AKS Azure 應(yīng)用程序網(wǎng)關(guān)集成。 在 Kubernetes 級(jí)別配置某些對(duì)象 (例如服務(wù)和入口) ,應(yīng)用程序網(wǎng)關(guān)會(huì)自動(dòng)調(diào)整,而無(wú)需額外的手動(dòng)步驟。
Azure 防火墻在 AKS 群集安全性中扮演著重要角色。 它提供所需的功能,以基于 FQDN(而不只是 IP 地址)篩選來(lái)自 AKS 群集的出口流量。 有關(guān)詳細(xì)信息,請(qǐng)參閱控制 AKS 群集節(jié)點(diǎn) 的出口流量。
將應(yīng)用程序網(wǎng)關(guān)和Azure 防火墻來(lái)保護(hù) AKS 群集時(shí),最好使用并行設(shè)計(jì)選項(xiàng)。 具有 WAF 的應(yīng)用程序網(wǎng)關(guān)處理對(duì)群集中 Web 應(yīng)用程序的入站連接請(qǐng)求。 Azure 防火墻只允許顯式允許的出站連接。
Azure Front Door 功能部分與Azure 應(yīng)用程序網(wǎng)關(guān)。 例如,這兩個(gè)服務(wù)都提供 Web 應(yīng)用程序防火墻、SSL 卸載和基于 URL 的路由。 一個(gè)主要區(qū)別是,Azure 應(yīng)用程序網(wǎng)關(guān)虛擬網(wǎng)絡(luò)內(nèi)部,Azure Front Door是一種分散式全局服務(wù)。
有時(shí),可以通過(guò)將應(yīng)用程序網(wǎng)關(guān)替換為分散式網(wǎng)關(guān)來(lái)簡(jiǎn)化Azure Front Door。 此處所述的大多數(shù)設(shè)計(jì)都保持有效,但將Azure 防火墻放在前一個(gè)Azure Front Door。
一個(gè)有趣的用例是Azure 防火墻虛擬網(wǎng)絡(luò)中應(yīng)用程序網(wǎng)關(guān)前面的應(yīng)用程序網(wǎng)關(guān)。 如前文所述,應(yīng)用程序網(wǎng)關(guān)注入的標(biāo)頭將包含防火墻實(shí)例的 IP 地址,而不是 X-Forwarded-For
客戶端的 IP 地址。 解決方法是,在Azure Front Door之前,使用防火墻前面的地址將客戶端的 IP 地址注入為標(biāo)頭,然后流量進(jìn)入虛擬網(wǎng)絡(luò)并命中 X-Forwarded-For
Azure 防火墻。
有關(guān)這兩個(gè)服務(wù)之間的差異或何時(shí)使用每個(gè)服務(wù),請(qǐng)參閱兩者之間的常見(jiàn)問(wèn)題Azure Front Door。
Microsoft 產(chǎn)品并不是在 Azure 中實(shí)現(xiàn) Web 應(yīng)用程序防火墻或下一代防火墻功能的唯一選擇。 各種 Microsoft 合作伙伴為 NVA (網(wǎng)絡(luò)) 。 概念和設(shè)計(jì)實(shí)質(zhì)上與本文中的概念和設(shè)計(jì)相同,但有一些重要注意事項(xiàng):
用于下一代防火墻的合作伙伴 NVA 可能會(huì)為應(yīng)用程序不支持的 NAT 配置提供更高的控制Azure 防火墻。 示例包括來(lái)自本地的 DNAT 或來(lái)自 Internet 的 DNAT(不含 SNAT)。
與 NVA 相比, (網(wǎng)關(guān)和 Azure 防火墻) 等 Azure 托管的 NVA 可以降低復(fù)雜性,因?yàn)橛脩粜枰幚矶鄠€(gè)設(shè)備中的可伸縮性和復(fù)原能力。
在 Azure 中使用 NVA 時(shí),請(qǐng)使用 主動(dòng)-主動(dòng) 和自動(dòng)縮放設(shè)置,因此這些設(shè)備不是虛擬網(wǎng)絡(luò)中運(yùn)行的應(yīng)用程序的瓶頸。