Azure:面向虛擬網(wǎng)絡(luò)的防火墻和應(yīng)用程序網(wǎng)關(guān)

來源: Microsoft
作者:Microsoft
時間:2021-08-13
17659
若要保護(hù) Azure 應(yīng)用程序工作負(fù)載,可以在應(yīng)用程序本身使用保護(hù)措施,例如身份驗證和加密。 還可以將安全層添加到托管應(yīng)用程序的 (VM) 虛擬機(jī)。 層保護(hù)來自用戶的入站流。 它們還保護(hù)應(yīng)用程序可能需要的到 Internet 的出站流。

若要保護(hù) Azure 應(yīng)用程序工作負(fù)載,可以在應(yīng)用程序本身使用保護(hù)措施,例如身份驗證和加密。 還可以將安全層添加到托管應(yīng)用程序的 (VM) 虛擬機(jī)。 層保護(hù)來自用戶的入站流。 它們還保護(hù)應(yīng)用程序可能需要的到 Internet 的出站流。 本文介紹 Azure 虛擬網(wǎng)絡(luò) 安全服務(wù)(例如 Azure 防火墻 和 Azure 應(yīng)用程序網(wǎng)關(guān)、何時使用每個服務(wù))以及組合兩者的網(wǎng)絡(luò)設(shè)計選項。

  • Azure 防火墻托管的下一代防火墻,它通過 NAT (網(wǎng)絡(luò)地址) 。 Azure 防火墻基于 Internet 協(xié)議 (IP) 地址以及傳輸控制協(xié)議和用戶數(shù)據(jù)報協(xié)議 (TCP/UDP) 端口,或基于應(yīng)用程序的 HTTP (S) 或 SQL 屬性進(jìn)行數(shù)據(jù)包篩選。 Azure 防火墻 Microsoft 威脅情報來識別惡意 IP 地址。 有關(guān)詳細(xì)信息,請參閱 Azure 防火墻 文檔。

  • Azure 防火墻 高級版包括標(biāo)準(zhǔn)Azure 防火墻的所有功能以及其他功能,例如 TLS 檢查和入侵檢測和保護(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)用程序防火墻來檢查 Web 流量并檢測 HTTP 層上的攻擊。 有關(guān)詳細(xì)信息,請參閱應(yīng)用程序 網(wǎng)關(guān)文檔。

  • Azure Web 應(yīng)用程序防火墻 (WAF) 是一項可選添加Azure 應(yīng)用程序網(wǎng)關(guān)。 它提供對 HTTP 請求的檢查,并防止 Web 層上的惡意攻擊,例如SQL注入或跨站點腳本。 有關(guān)詳細(xì)信息,請參閱 Web 應(yīng)用程序防火墻文檔。

這些 Azure 服務(wù)是互補的。 其中一種可能最適合工作負(fù)荷,也可以將它們一起用于網(wǎng)絡(luò)層和應(yīng)用程序?qū)拥淖罴驯Wo(hù)。 使用以下決策樹和本文中的示例來確定應(yīng)用程序虛擬網(wǎng)絡(luò)的最佳安全選項。

Azure 防火墻Azure 應(yīng)用程序網(wǎng)關(guān)使用不同的技術(shù),并且它們支持不同流的安全化:

表 1
應(yīng)用程序Flow可以按Azure 防火墻可以通過應(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è)計可能因應(yīng)用程序不同而不同。 下圖提供了一個簡化的決策樹,可幫助選擇應(yīng)用程序的建議方法。 決策取決于應(yīng)用程序是通過 HTTP (S) 還是某些其他協(xié)議發(fā)布:

虛擬網(wǎng)絡(luò)安全決策樹

本文將介紹流程圖中廣泛推薦的設(shè)計,以及適用于不太常見方案其他設(shè)計:

  • Azure 防火墻虛擬網(wǎng)絡(luò)中不存在 Web 應(yīng)用程序時,單獨使用 。 它將控制到應(yīng)用程序的入站流量和出站流量。

  • 僅應(yīng)用程序網(wǎng)關(guān),當(dāng)只有 Web 應(yīng)用程序在虛擬網(wǎng)絡(luò)中,并且網(wǎng)絡(luò)安全組 (NSG ) 提供足夠的輸出篩選。 通常不建議使用此方案,因為 NSG 上具有Azure 防火墻功能。 該功能可以防止許多攻擊 (例如數(shù)據(jù)外泄) ,因此,上述流程圖中未記錄此方案。

  • Azure 防火墻應(yīng)用程序網(wǎng)關(guān)并行運行,這是最常見的設(shè)計之一。 當(dāng)你希望保護(hù) HTTP Azure 應(yīng)用程序網(wǎng)關(guān) S (應(yīng)用程序) Web 攻擊,Azure 防火墻保護(hù)所有其他工作負(fù)荷并篩選出站流量時,請使用此組合。

  • 應(yīng)用程序網(wǎng)關(guān)位于Azure 防火墻,當(dāng)你想要Azure 防火墻檢查所有流量時,WAF 用于保護(hù) Web 流量,應(yīng)用程序知道客戶端的源 IP 地址。 通過Azure 防火墻 高級版和 TLS 檢查,此設(shè)計還支持端到端 SSL 方案。

  • Azure 防火墻網(wǎng)關(guān)的前面,Azure 防火墻在流量到達(dá)應(yīng)用程序網(wǎng)關(guān)之前檢查和篩選流量。 由于Azure 防火墻不會解密 HTTPS 流量,因此它添加到應(yīng)用程序網(wǎng)關(guān)的功能會受到限制。 此方案未記錄在以上流程圖中。

本文的最后一部分介紹了以前基本設(shè)計的變體。 這些變體包括:

  • 本地應(yīng)用程序客戶端。

  • 中心和分支網(wǎng)絡(luò)。

  • Azure Kubernetes 服務(wù) (AKS) 實現(xiàn)。

可以添加其他反向代理服務(wù),例如 API Management網(wǎng)關(guān)或 Azure Front Door。 或者,可以將 Azure 資源替換為第三 方網(wǎng)絡(luò)虛擬設(shè)備。

Azure 防火墻僅

如果虛擬網(wǎng)絡(luò)中沒有任何可受益于 WAF 的基于 Web 的工作負(fù)荷,則只能Azure 防火墻。 在這種情況下,設(shè)計很簡單,但查看數(shù)據(jù)包流將有助于了解更復(fù)雜的設(shè)計。

下表總結(jié)了此方案的流量流:

AZURE 防火墻僅
流向通過應(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 的流量空值

Azure 防火墻不會檢查入站 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 防火墻 高級版添加一些功能,例如檢查其他 HTTP 標(biāo)頭 (如用戶代理) 啟用 TLS 檢查,以便進(jìn)行更深入的數(shù)據(jù)包分析。 Azure 防火墻不等同于 Web 應(yīng)用程序防火墻。 如果虛擬網(wǎng)絡(luò)中具有 Web 工作負(fù)載,強烈建議使用 WAF。

下面的數(shù)據(jù)包演練示例演示客戶端如何從公共 Internet 訪問 VM 托管的應(yīng)用程序。 為簡單起見,該圖僅包含一個 VM。 為了提高可用性和可伸縮性,負(fù)載均衡器后面會有多個應(yīng)用程序?qū)嵗?/p>

僅防火墻

  1. 客戶端啟動與客戶端的公共 IP 地址Azure 防火墻:

    • 源 IP 地址:ClientPIP

    • 目標(biāo) IP 地址:AzFwPIP

  2. 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ì)信息,請參閱Azure 防火墻 已知問題。 VM 在傳入數(shù)據(jù)包中看到以下 IP 地址:

    • 源 IP 地址:192.168.100.7

    • 目標(biāo) IP 地址:192.168.1.4

  3. VM 會響應(yīng)應(yīng)用程序請求,并反轉(zhuǎn)源和目標(biāo) IP 地址。 入站流不需要用戶定義的路由 (UDR) ,因為源 IP Azure 防火墻 IP 地址。 圖中 0.0.0.0/0 的 UDR 用于出站連接,以確保發(fā)往公共 Internet 的數(shù)據(jù)包通過Azure 防火墻。

    • 源 IP 地址:192.168.1.4

    • 目標(biāo) IP 地址:192.168.100.7

  4. 最后,Azure 防火墻會撤消 SNAT 和 DNAT 操作,并將響應(yīng)傳遞給客戶端:

    • 源 IP 地址: AzFwPIP

    • 目標(biāo) IP 地址: ClientPIP

在此設(shè)計中,Azure 防火墻使用 UDR 檢查來自公共 internet 的傳入連接和來自應(yīng)用程序子網(wǎng) VM 的出站連接。

  • IP 地址 192.168.100.7 是 Azure 防火墻服務(wù)在其中部署的一個實例,其中包含前端 IP 地址 192.168.100.4 。 Azure 管理員通常不會看到這些單獨的實例。 但請注意,在某些情況下,這種區(qū)別很有用,例如,在對網(wǎng)絡(luò)問題進(jìn)行故障排除時。

  • 如果流量來自本地虛擬專用網(wǎng)絡(luò) (VPN) 或 Azure ExpressRoute 網(wǎng)關(guān)而不是 internet,則客戶端將啟動到 VM 的 IP 地址的連接。 它不會啟動與防火墻的 IP 地址的連接,并且每個默認(rèn)情況下,防火墻將不執(zhí)行源 NAT。

僅應(yīng)用程序網(wǎng)關(guān)

此設(shè)計涵蓋了虛擬網(wǎng)絡(luò)中僅存在 web 應(yīng)用程序的情況,并且通過 Nsg 檢查出站流量足以保護(hù)出站流到 internet。

 備注

這不是一種建議的設(shè)計,因為使用 Azure 防火墻來控制出站流 (而不是僅 Nsg) 將阻止某些攻擊方案,例如 data 滲透,這會確保工作負(fù)荷僅將數(shù)據(jù)發(fā)送到已批準(zhǔn)的 Url 列表。

與以前的設(shè)計相比,只有 Azure 防火墻的主要區(qū)別是,應(yīng)用程序網(wǎng)關(guān)不能充當(dāng)帶有 NAT 的路由設(shè)備。 它表現(xiàn)為完整的反向應(yīng)用程序代理。 也就是說,應(yīng)用程序網(wǎng)關(guān)會從客戶端停止 web 會話,并使用其后端服務(wù)器之一建立單獨的會話。

下表匯總了流量流:

僅應(yīng)用程序網(wǎng)關(guān)
流向通過應(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 的流量空值

以下數(shù)據(jù)包審核示例演示客戶端如何從公共 internet 訪問 VM 托管的應(yīng)用程序。

僅應(yīng)用程序網(wǎng)關(guān)

  1. 客戶端開始連接到 Azure 應(yīng)用程序網(wǎng)關(guān)的公共 IP 地址:

    • 源 IP 地址: ClientPIP

    • 目標(biāo) IP 地址: AppGwPIP

  2. 接收請求的應(yīng)用程序網(wǎng)關(guān)實例將停止來自客戶端的連接,并與一個后端建立新連接。 后端會將應(yīng)用程序網(wǎng)關(guān)實例視為源 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)實例的專用 IP 地址)

    • 目標(biāo) IP 地址:192.168.1。4

    • X 轉(zhuǎn)發(fā)的標(biāo)頭: ClientPIP

  3. VM 會應(yīng)答應(yīng)用程序請求,并反向源和目標(biāo) IP 地址。 VM 已知道如何訪問應(yīng)用程序網(wǎng)關(guān),因此不需要 UDR。

    • 源 IP 地址:192.168.1。4

    • 目標(biāo) IP 地址:192.168.200。7

  4. 最后,應(yīng)用程序網(wǎng)關(guān)實例會應(yīng)答客戶端:

    • 源 IP 地址: AppGwPIP

    • 目標(biāo) IP 地址: ClientPIP

Azure 應(yīng)用程序網(wǎng)關(guān)會將元數(shù)據(jù)添加到數(shù)據(jù)包 HTTP 標(biāo)頭,如包含原始客戶端 IP 地址的 X 轉(zhuǎn)發(fā)的 標(biāo)頭。 某些應(yīng)用程序服務(wù)器需要源客戶端 IP 地址來提供地理位置特定的內(nèi)容,或用于日志記錄。 有關(guān)詳細(xì)信息,請參閱應(yīng)用程序網(wǎng)關(guān)的工作原理。

  • IP 地址 192.168.200.7 是 Azure 應(yīng)用程序網(wǎng)關(guān)服務(wù)在其中部署的一個實例,其中包含前端 IP 地址 192.168.200.4 。 Azure 管理員通常不會看到這些單獨的實例。 但請注意,在某些情況下,這種區(qū)別很有用,例如,在對網(wǎng)絡(luò)問題進(jìn)行故障排除時。

  • 如果客戶端來自于 VPN 或 ExpressRoute 網(wǎng)關(guān)的本地網(wǎng)絡(luò),則流類似。 不同之處在于,客戶端訪問應(yīng)用程序網(wǎng)關(guān)的專用 IP 地址,而不是公共地址。

防火墻和應(yīng)用程序網(wǎng)關(guān)并行

由于其簡易性和靈活性,并行運行應(yīng)用程序網(wǎng)關(guān)和 Azure 防火墻通常是最佳方案。

如果在虛擬網(wǎng)絡(luò)中混合使用 web 工作負(fù)載和非 web 工作負(fù)載,則可實現(xiàn)此設(shè)計。 Azure WAF 保護(hù)發(fā)往 web 工作負(fù)荷的入站流量,Azure 防火墻將檢查其他應(yīng)用程序的入站流量。 Azure 防火墻將涵蓋這兩種工作負(fù)荷類型的出站流。

下表總結(jié)了這種情況下的流量:

防火墻和應(yīng)用程序網(wǎng)關(guān)并行
流向通過應(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 的流量

此設(shè)計比 Nsg 提供更精細(xì)的出口篩選。 如果應(yīng)用程序需要連接到特定的 Azure 存儲帳戶,則可以使用 完全限定的域名 (基于 FQDN) 的篩選器。 對于基于 FQDN 的篩選器,應(yīng)用程序不會將數(shù)據(jù)發(fā)送到惡意存儲帳戶。 只能使用 Nsg 阻止該方案。 此設(shè)計通常用于出站流量需要基于 FQDN 的篩選的位置。 一個例子就是 限制來自 Azure Kubernetes 服務(wù)群集的出口流量。

下圖說明了來自外部客戶端的入站連接的流量流:

應(yīng)用程序網(wǎng)關(guān)和 Azure 防火墻并行,入口流

下圖說明了從網(wǎng)絡(luò) Vm 到 internet 的出站連接的流量流。 例如,連接到后端系統(tǒng)或獲取操作系統(tǒng)更新:

應(yīng)用程序網(wǎng)關(guān)和 Azure 防火墻并行,出口流

每個服務(wù)的數(shù)據(jù)包流步驟與以前的獨立設(shè)計選項相同。

防火墻之前的應(yīng)用程序網(wǎng)關(guān)

在此選項中,入站 web 流量通過 Azure 防火墻和 WAF。 WAF 提供 web 應(yīng)用程序?qū)颖Wo(hù)。 Azure 防火墻充當(dāng)中心日志記錄和控制點,并檢查應(yīng)用程序網(wǎng)關(guān)和后端服務(wù)器之間的流量。 應(yīng)用程序網(wǎng)關(guān)和 Azure 防火墻并不并行,而是另一個。

利用azure 防火墻高級版,這種設(shè)計可以支持端到端方案,在此方案中,Azure 防火墻應(yīng)用 TLS 檢查來對應(yīng)用程序網(wǎng)關(guān)和 web 后端之間的加密流量進(jìn)行 idp。

此設(shè)計適用于需要了解傳入客戶端源 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ì)信息,請參閱應(yīng)用程序網(wǎng)關(guān)的工作原理。

下表總結(jié)了此方案的流量流:

防火墻之前的應(yīng)用程序網(wǎng)關(guān)
流向通過應(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 的流量

對于從本地或 Internet 到 Azure 的 Web 流量,Azure 防火墻將檢查 WAF 已允許的流。 根據(jù)應(yīng)用程序網(wǎng)關(guān)是否加密后端流量 (從應(yīng)用程序網(wǎng)關(guān)到應(yīng)用程序服務(wù)器) 流量,你將有兩種不同的可能方案:

  1. 應(yīng)用程序網(wǎng)關(guān)按照零信任原則加密流量 (端到端 TLS 加密) ,Azure 防火墻接收加密的流量。 不過,Azure 防火墻標(biāo)準(zhǔn)版將能夠應(yīng)用檢查規(guī)則,例如網(wǎng)絡(luò)規(guī)則中的 L3/L4 篩選,或者使用 TLS 服務(wù)器名稱指示 (SNI) 標(biāo)頭在應(yīng)用程序規(guī)則中篩選 FQDN。 Azure 防火墻 高級版IDPS 提供更深入的可見性,例如基于 URL 的篩選。

  2. 如果應(yīng)用程序網(wǎng)關(guān)將未加密的流量發(fā)送到應(yīng)用程序服務(wù)器,Azure 防火墻將看到以純文本格式的入站流量。 在中不需要 TLS Azure 防火墻。

  3. 如果 IDPS 在 Azure 防火墻中啟用,它將驗證 HTTP 主機(jī)標(biāo)頭是否與目標(biāo) IP 匹配。 為此,它將需要主機(jī)標(biāo)頭中指定的 FQDN 的名稱解析。 此名稱解析可以通過使用 Azure DNS 專用區(qū)域 和默認(rèn) Azure 防火墻 DNS 設(shè)置Azure DNS。 此外,還可通過自定義 DNS 服務(wù)器實現(xiàn)此目的,這些服務(wù)器需要在設(shè)置Azure 防火墻配置。 (有關(guān)詳細(xì)信息,請參閱 Azure 防火墻 DNS設(shè)置.) 如果沒有對部署 Azure 防火墻 的虛擬網(wǎng)絡(luò)的管理訪問權(quán)限,則只能使用后一種方法。 例如,在虛擬 WAN 安全中心部署 Azure 防火墻。

對于流的其余部分 (入站非 HTTP (S) 流量和任何出站流量) ,Azure 防火墻 將在適當(dāng)?shù)臅r候提供 IDPS 檢查和 TLS 檢查。 它還在基于 DNS 的網(wǎng)絡(luò)規(guī)則中提供基于 FQDN 的篩選。

應(yīng)用程序網(wǎng)關(guān)Azure 防火墻

來自公共 Internet 的網(wǎng)絡(luò)流量遵循以下流程:

  1. 客戶端啟動與客戶端的公共 IP 地址Azure 應(yīng)用程序網(wǎng)關(guān):

    • 源 IP 地址:ClientPIP

    • 目標(biāo) IP 地址:AppGwPIP

  2. 應(yīng)用程序網(wǎng)關(guān)實例停止來自客戶端的連接,并建立與其中一個后端的新連接。 應(yīng)用程序網(wǎng)關(guān)子網(wǎng)中的 UDR 將數(shù)據(jù)包轉(zhuǎn)發(fā)到 192.168.1.0/24 Azure 防火墻,同時將目標(biāo) IP 保留到 Web 應(yīng)用程序:

    • 源 IP 地址:192.168.200.7 (應(yīng)用程序網(wǎng)關(guān)實例實例的專用 IP)

    • 目標(biāo) IP 地址:192.168.1.4

    • X-Forwarded-For 標(biāo)頭:ClientPIP

  3. Azure 防火墻不會對流量進(jìn)行 SNAT,因為流量將進(jìn)入專用 IP 地址。 如果規(guī)則允許,它會將流量轉(zhuǎn)發(fā)到應(yīng)用程序 VM。 有關(guān)詳細(xì)信息,請參閱 Azure 防火墻SNAT。

    • 源 IP 地址:192.168.200.7 (應(yīng)用程序網(wǎng)關(guān)實例實例的專用 IP)

    • 目標(biāo) IP 地址:192.168.1.4

    • X-Forwarded-For 標(biāo)頭:ClientPIP

  4. VM 會響應(yīng)請求,并反轉(zhuǎn)源和目標(biāo) IP 地址。 用于捕獲發(fā)回應(yīng)用程序網(wǎng)關(guān)的數(shù)據(jù)包的 UDR,將其重定向到Azure 防火墻,同時將目標(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

  5. 此處Azure 防火墻不會對流量進(jìn)行 SNAT,因為它將進(jìn)入專用 IP 地址,并且將流量轉(zhuǎn)發(fā)到應(yīng)用程序網(wǎng)關(guān)。

    • 源 IP 地址:192.168.1.4

    • 目標(biāo) IP 地址:192.168.200.7

  6. 最后,應(yīng)用程序網(wǎng)關(guān)實例回答客戶端:

    • 源 IP 地址:AppGwPIP

    • 目標(biāo) IP 地址:ClientPIP

從 VM 到公共 Internet 的出站流Azure 防火墻 UDR 定義的到 0.0.0.0/0 。

防火墻后的應(yīng)用程序網(wǎng)關(guān)

此設(shè)計Azure 防火墻在惡意流量到達(dá)應(yīng)用程序網(wǎng)關(guān)之前進(jìn)行篩選和丟棄。 例如,它可以應(yīng)用基于威脅情報的篩選等功能。 另一個好處是,應(yīng)用程序為入站和出站流量獲取相同的公共 IP 地址。

此方案的好處有限,因為Azure 防火墻只會看到發(fā)到應(yīng)用程序網(wǎng)關(guān)的加密流量。 在某些情況下,此設(shè)計是首選。 例如,如果網(wǎng)絡(luò)服務(wù)器中較早有另一個 WAF (,則Azure Front Door) 。 或者,如果需要多個公共 IP 地址,則設(shè)計是首選。

下表總結(jié)了此方案的流量流:

防火墻后的應(yīng)用程序網(wǎng)關(guān)
流向通過應(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 的流量

對于入站 HTTP (S) 流量,Azure 防火墻通常不會解密流量。 而是應(yīng)用不需要 TLS 檢查的 IDPS 策略,例如基于 IP 的篩選或 HTTP 標(biāo)頭。

應(yīng)用程序看不到 Web 流量的原始源 IP 地址;Azure 防火墻數(shù)據(jù)包進(jìn)入虛擬網(wǎng)絡(luò)時進(jìn)行 SNAT。 若要避免此問題,請使用 Azure Front Door 前面的防火墻。 Azure Front Door在客戶端進(jìn)入 Azure 虛擬網(wǎng)絡(luò)之前,將客戶端的 IP 地址作為 HTTP 標(biāo)頭注入。

應(yīng)用程序網(wǎng)關(guān)Azure 防火墻

來自公共 Internet 的網(wǎng)絡(luò)流量遵循以下流程:

  1. 客戶端啟動與客戶端的公共 IP 地址Azure 防火墻:

    • 源 IP 地址:ClientPIP

    • 目標(biāo) IP 地址:AzFWPIP

  2. 該Azure 防火墻 WEB 端口(通常為 TCP 443)連接到應(yīng)用程序網(wǎng)關(guān)實例的專用 IP 地址。 Azure 防火墻 DNAT 時也使用 SNAT。 有關(guān)詳細(xì)信息,請參閱Azure 防火墻 已知問題:

    • 源 IP 地址:192.168.100.7 (實例的專用 IP Azure 防火墻地址)

    • 目標(biāo) IP 地址:192.168.200.4

  3. 應(yīng)用程序網(wǎng)關(guān)在處理連接的實例與后端服務(wù)器之一之間建立一個新會話。 客戶端的原始 IP 地址不在數(shù)據(jù)包中:

    • 源 IP 地址:192.168.200.7 (應(yīng)用程序網(wǎng)關(guān)實例實例的專用 IP)

    • 目標(biāo) IP 地址:192.168.1.4

    • X-Forwarded-For 標(biāo)頭:192.168.100.7

  4. VM 會回答應(yīng)用程序網(wǎng)關(guān),并反轉(zhuǎn)源和目標(biāo) IP 地址:

    • 源 IP 地址:192.168.1.4

    • 目標(biāo) IP 地址:192.168.200.7

  5. 應(yīng)用程序網(wǎng)關(guān)回復(fù)實例的 SNAT Azure 防火墻 IP 地址。 即使連接來自特定的應(yīng)用程序網(wǎng)關(guān)實例(如 )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

  6. 最后,Azure 防火墻 SNAT 和 DNAT 并回答客戶端:

    • 源 IP 地址:AzFwPIP

    • 目標(biāo) IP 地址:ClientPIP

即使應(yīng)用程序網(wǎng)關(guān)沒有為應(yīng)用程序配置偵聽器,它仍然需要公共 IP 地址,以便 Microsoft 可以管理它。

 備注

不支持應(yīng)用程序網(wǎng)關(guān)子網(wǎng)中指向 Azure 防火墻 的默認(rèn)路由,因為它會中斷正確操作應(yīng)用程序所需的控制平面 0.0.0.0/0 Azure 應(yīng)用程序網(wǎng)關(guān)。

本地客戶端

上述設(shè)計都顯示來自公共 Internet 的應(yīng)用程序客戶端。 本地網(wǎng)絡(luò)也會訪問應(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)的專用 IP 地址。

  • Azure 防火墻專用 IP 地址不支持 DNAT。 因此,必須使用 UDR 將入站流量發(fā)送到Azure 防火墻 VPN 或 ExpressRoute 網(wǎng)關(guān)的流量。

  • 請確保驗證有關(guān)事件 和 的強制 隧道 Azure 應(yīng)用程序網(wǎng)關(guān)注意事項 Azure 防火墻。 即使工作負(fù)荷不需要到公共 Internet 的出站連接,也無法為應(yīng)用程序網(wǎng)關(guān)注入指向本地網(wǎng)絡(luò)的默認(rèn)路由,否則會中斷控制流量。 0.0.0.0/0 對于Azure 應(yīng)用程序網(wǎng)關(guān),默認(rèn)路由需要指向公共 Internet。

下圖顯示了并行Azure 應(yīng)用程序網(wǎng)關(guān)Azure 防火墻設(shè)計。 應(yīng)用程序客戶端來自通過 VPN 或 ExpressRoute 連接到 Azure 的本地網(wǎng)絡(luò):

使用 VPN 或 ExpressRoute 網(wǎng)關(guān)的混合設(shè)計

即使所有客戶端都位于本地或 Azure 中,Azure 應(yīng)用程序網(wǎng)關(guān)Azure 防火墻都需要具有公共 IP 地址。 公共 IP 地址允許 Microsoft 管理服務(wù)。

中心和輻射拓?fù)?/h2>

本文中的設(shè)計仍 適用于中心分支 拓?fù)洹?中心虛擬網(wǎng)絡(luò)中的共享資源通過虛擬網(wǎng)絡(luò)對等互連連接到單獨分支虛擬網(wǎng)絡(luò)中的應(yīng)用程序。

使用 VPN/ER 網(wǎng)關(guān)以及中心和分支的混合設(shè)計

此拓?fù)涞囊恍┳⒁馐马棸ǎ?/p>

  • 該Azure 防火墻部署在中心虛擬網(wǎng)絡(luò)中。 不過,應(yīng)用程序團(tuán)隊通常管理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ù)器接收來自特定 Azure 防火墻 實例的流量(如前面的示例中的地址)時,它應(yīng)發(fā)送回同一實例的返回 192.168.100.7 流量。 如果分支中的 UDR 將發(fā)送到中心的流量的下一躍點設(shè)置到) 上圖中的 Azure 防火墻 IP 地址 (,則返回數(shù)據(jù)包最終可能會在不同的 Azure 防火墻 實例上, 192.168.100.4 從而導(dǎo)致非對稱路由。 確保分支 VNet 中具有 UDR,以通過 Azure 防火墻 將流量發(fā)送到中心中的共享服務(wù),則這些 UDR 不包含 Azure 防火墻 子網(wǎng)的前綴。

  • 前面的建議同樣適用于應(yīng)用程序網(wǎng)關(guān)子網(wǎng)以及可能部署在中心 VNet 中的其他任何網(wǎng)絡(luò)虛擬設(shè)備或反向代理。

  • 無法為應(yīng)用程序網(wǎng)關(guān)設(shè)置下一躍點,或Azure 防火墻下一躍點類型為 的靜態(tài)路由設(shè)置子網(wǎng) Virtual Network 。 此下一躍點類型僅在本地 VNet 中有效,在 VNet 對等互連中無效。 有關(guān)用戶定義的路由和下一躍點類型的信息,請參閱 虛擬網(wǎng)絡(luò)流量路由。

下圖顯示了分支如何將 SNA 點流量發(fā)回到該分支的 ALB Azure 防火墻。 此設(shè)置會導(dǎo)致非對稱路由:

中心和分支中的非對稱路由

若要解決此問題,請定義分支中的 UDR,Azure 防火墻子網(wǎng),但僅定義共享服務(wù)所在的子網(wǎng)。 在示例中,分支中的正確 UDR 應(yīng)僅包含 192.168.1.0/24。 它不應(yīng)包含整個 192.168.0.0/16,用紅色標(biāo)記。

與其他 Azure 產(chǎn)品集成

可以將 Azure 防火墻 Azure 應(yīng)用程序網(wǎng)關(guān)與其他 Azure 產(chǎn)品和服務(wù)集成。

API Management網(wǎng)關(guān)

將反向代理服務(wù) (API Management 網(wǎng)關(guān))集成到以前的設(shè)計中,以提供 API 限制或身份驗證代理等功能。 集成API Management網(wǎng)關(guān)不會極大地改變設(shè)計。 主要區(qū)別在于,有兩個相互鏈接的反向代理,而不是單個應(yīng)用程序網(wǎng)關(guān)反向代理。

有關(guān)詳細(xì)信息,請參閱在虛擬網(wǎng)絡(luò)中集成API Management應(yīng)用程序網(wǎng)關(guān)的設(shè)計 指南和 微服務(wù)的應(yīng)用程序模式 API 網(wǎng)關(guān)。

Azure Kubernetes 服務(wù)

對于在 AKS 群集上運行的工作負(fù)荷,Azure 應(yīng)用程序網(wǎng)關(guān)群集獨立部署。 或者,可以使用入口控制器 將其與 AKS Azure 應(yīng)用程序網(wǎng)關(guān)集成。 在 Kubernetes 級別配置某些對象 (例如服務(wù)和入口) ,應(yīng)用程序網(wǎng)關(guān)會自動調(diào)整,而無需額外的手動步驟。

Azure 防火墻在 AKS 群集安全性中扮演著重要角色。 它提供所需的功能,以基于 FQDN(而不只是 IP 地址)篩選來自 AKS 群集的出口流量。 有關(guān)詳細(xì)信息,請參閱控制 AKS 群集節(jié)點 的出口流量。

將應(yīng)用程序網(wǎng)關(guān)和Azure 防火墻來保護(hù) AKS 群集時,最好使用并行設(shè)計選項。 具有 WAF 的應(yīng)用程序網(wǎng)關(guān)處理對群集中 Web 應(yīng)用程序的入站連接請求。 Azure 防火墻只允許顯式允許的出站連接。

Azure Front Door

Azure Front Door 功能部分與Azure 應(yīng)用程序網(wǎng)關(guān)。 例如,這兩個服務(wù)都提供 Web 應(yīng)用程序防火墻、SSL 卸載和基于 URL 的路由。 一個主要區(qū)別是,Azure 應(yīng)用程序網(wǎng)關(guān)虛擬網(wǎng)絡(luò)內(nèi)部,Azure Front Door是一種分散式全局服務(wù)。

有時,可以通過將應(yīng)用程序網(wǎng)關(guān)替換為分散式網(wǎng)關(guān)來簡化Azure Front Door。 此處所述的大多數(shù)設(shè)計都保持有效,但將Azure 防火墻放在前一個Azure Front Door。

一個有趣的用例是Azure 防火墻虛擬網(wǎng)絡(luò)中應(yīng)用程序網(wǎng)關(guān)前面的應(yīng)用程序網(wǎng)關(guān)。 如前文所述,應(yīng)用程序網(wǎng)關(guān)注入的標(biāo)頭將包含防火墻實例的 IP 地址,而不是 X-Forwarded-For 客戶端的 IP 地址。 解決方法是,在Azure Front Door之前,使用防火墻前面的地址將客戶端的 IP 地址注入為標(biāo)頭,然后流量進(jìn)入虛擬網(wǎng)絡(luò)并命中 X-Forwarded-For Azure 防火墻。

有關(guān)這兩個服務(wù)之間的差異或何時使用每個服務(wù),請參閱兩者之間的常見問題Azure Front Door。

其他網(wǎng)絡(luò)虛擬設(shè)備

Microsoft 產(chǎn)品并不是在 Azure 中實現(xiàn) Web 應(yīng)用程序防火墻或下一代防火墻功能的唯一選擇。 各種 Microsoft 合作伙伴為 NVA (網(wǎng)絡(luò)) 。 概念和設(shè)計實質(zhì)上與本文中的概念和設(shè)計相同,但有一些重要注意事項:

  • 用于下一代防火墻的合作伙伴 NVA 可能會為應(yīng)用程序不支持的 NAT 配置提供更高的控制Azure 防火墻。 示例包括來自本地的 DNAT 或來自 Internet 的 DNAT(不含 SNAT)。

  • 與 NVA 相比, (網(wǎng)關(guān)和 Azure 防火墻) 等 Azure 托管的 NVA 可以降低復(fù)雜性,因為用戶需要處理多個設(shè)備中的可伸縮性和復(fù)原能力。

  • 在 Azure 中使用 NVA 時,請使用 主動-主動 和自動縮放設(shè)置,因此這些設(shè)備不是虛擬網(wǎng)絡(luò)中運行的應(yīng)用程序的瓶頸。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Microsoft,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多