如何 AWS WAF 使用 Amazon CloudFront 功能 - AWS WAF、 AWS Firewall Manager、和 AWS Shield Advanced

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

如何 AWS WAF 使用 Amazon CloudFront 功能

建立 Web ACL 時,您可以指定一個或多個 AWS WAF 要檢查的 CloudFront 分佈。 AWS WAF 根據您在 Web ACL 中識別的條件,開始檢查和管理這些分發的 Web 請求。 CloudFront 提供了一些增強 AWS WAF 功能的功能。本章介紹了一些您可以配置CloudFront 以使一起更好地 AWS WAF 工作 CloudFront 和工作的方法。

使 AWS WAF 用 CloudFront 自定義錯誤頁面

根據預設,當根據您指定的準則 AWS WAF 封鎖 Web 要求時,會將 HTTP 狀態碼傳回403 (Forbidden)給檢視器 CloudFront,並將該狀態碼 CloudFront 傳回給檢視器。檢視器接著會顯示類似下列內容的簡短且格式稀疏的預設訊息:

Forbidden: You don't have permission to access /myfilename.html on this server.

您可以定義自訂回應,在 AWS WAF Web ACL 規則中覆寫此行為。如需有關使用 AWS WAF 規則自訂回應行為的詳細資訊,請參閱Block動作的自訂回應

注意

您使用 AWS WAF 規則自訂的回應優先順序高於您在 CloudFront 自訂錯誤頁面中定義的任何回應規格。

如果您希望透過 CloudFront顯示自訂錯誤訊息 (可能使用與網站其他部分相同的格式),您可 CloudFront 以設定將包含您自訂錯誤訊息的物件 (例如 HTML 檔案) 傳回給檢視者。

注意

CloudFront 無法區分來源傳回的 HTTP 狀態碼 403,以及封鎖要求 AWS WAF 時傳回的 HTTP 狀態碼 403。這表示您無法根據不同原因導致 HTTP 狀態碼 403 而傳回不同的自訂錯誤頁面。

如需有關 CloudFront 自訂錯誤頁面的詳細資訊,請參閱 Amazon CloudFront 開發人員指南中的產生自訂錯誤回應

AWS WAF 搭配 CloudFront使用在您自己的 HTTP 伺服器上執行的應用程式

AWS WAF 搭配使用時 CloudFront,您可以保護在任何 HTTP 網路伺服器上執行的應用程式,無論是在 Amazon 彈性運算雲端 (Amazon EC2) 中執行的網路伺服器,還是您私下管理的網路伺服器。您還可以配置 CloudFront 為在 CloudFront和您自己的網絡服務器之間以及查看者和 CloudFront.

在 CloudFront 和您自己的網絡服務器之間需要 HTTPS

要在 CloudFront 和您自己的網絡服務器之間要求 HTTPS,您可以使用自定 CloudFront 義來源功能並為特定來源配置原始協議策略和原始域名設置。在您的 CloudFront 配置中,您可以指定服務器的 DNS 名稱以及端口和從源獲取對象時 CloudFront 要使用的協議。您也應確保您自訂原始伺服器上的 SSL/TLS 憑證符合您已設定的原始伺服器的網域名稱。當您在以外的地方使用自己的 HTTP Web 伺服器時 AWS,您必須使用由受信任的第三方憑證授權單位 (CA) 簽署的憑證,例如 Comodo 或賽門鐵克。 DigiCert如需需要 HTTPS 才能 CloudFront與您自己的網路伺服器之間進行通訊的詳細資訊,請參閱 Amazon CloudFront 開發人員指南的〈需要 HTTPS 進行通訊〉主題。 CloudFront

在檢視器和檢視器之間需要 HTTPS CloudFront

若要在檢視器和之間要求 HTTPS CloudFront,您可以針對 CloudFront發行版中的一或多個快取行為變更檢視器通訊協定原則。如需有關 CloudFront在檢視者之間使用 HTTPS 的詳細資訊 CloudFront,請參閱 < 在檢視者之間需要 HTTPS 進行通訊 > 主題和 Amazon CloudFront 開發人員指南。您還可以攜帶自己的 SSL 證書,以便觀眾可以使用您自己的域名 CloudFront 通過 HTTPS 連接到您的分發,例如 https://www.mysite.com。如需詳細資訊,請參閱 Amazon CloudFront 開發人員指南中的設定替代網域名稱和 HTTPS 主題。

選擇可 CloudFront回應的 HTTP 方法

當您建立 Amazon CloudFront 網路分發時,您可 CloudFront 以選擇要處理的 HTTP 方法並轉寄到原始伺服器。您可以從下列選項來選擇:

  • GETHEAD— 您 CloudFront 只能使用來從來源取得物件或取得物件標頭。

  • GETHEADOPTIONS — 您 CloudFront 只能使用來從原始伺服器取得物件、取得物件標頭,或擷取原始伺服器支援的選項清單。

  • GETHEAD、、OPTIONSPUTPOSTPATCHDELETE — 您可以使用 CloudFront 來取得、新增、更新和刪除物件,以及取得物件標頭。此外,您還可以執行其他POST操作,例如從 Web 表單提交數據。

您也可以使用 AWS WAF 位元組比對規則陳述式,根據 HTTP 方法允許或封鎖要求,如中所述字串比對規則陳述式。如果您想要使用 CloudFront 支援的方法組合 (例如GET和)HEAD,則不需 AWS WAF 要設定為封鎖使用其他方法的要求。如果您想要允許 CloudFront 不支援的方法組合,例如、和 GET HEADPOST,您可以設定為 CloudFront 回應所有方法,然後使用封鎖使用其他方法的 AWS WAF 要求。

如需有關選擇可 CloudFront 回應之方法的詳細資訊,請參閱 Amazon CloudFront 開發人員指南中建立或更新 Web 分發時指定的值主題中的允許的 HTTP 方法