步驟 1. 啟動 堆疊 - AWS WAF 的安全自動化

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

步驟 1. 啟動 堆疊

此自動化 AWS CloudFormation 範本會在 AWS 雲端部署解決方案。

  1. 登入 AWS 管理主控台,然後選取啟動解決方案以啟動 waf-automation-on-aws.template CloudFormation 範本。

    Launch solution

  2. 根據預設,範本會在美國東部 (維吉尼亞北部) 區域啟動。若要在不同的 AWS 區域中啟動此解決方案,請使用主控台導覽列中的區域選擇器。如果您選擇 CloudFront做為端點,則必須在美國東部 (維吉尼亞北部) (us-east-1) 區域部署解決方案。

    注意

    根據您定義的輸入參數值,此解決方案需要不同的資源。這些資源目前僅適用於特定 AWS 區域。因此,您必須在提供這些服務的 AWS 區域中啟動此解決方案。如需詳細資訊,請參閱支援的 AWS 區域

  3. 指定範本頁面上,確認您已選取正確的範本,然後選擇下一步

  4. 指定堆疊詳細資訊頁面上,在堆疊名稱欄位中為 AWS WAF 組態指派名稱。這也是範本建立的 Web ACL 名稱。

  5. 參數下,檢閱範本的參數並視需要修改。若要選擇退出特定功能,請no視情況選擇 none或 。此解決方案使用下列預設值。

    參數 預設 描述

    Stack name (堆疊名稱)

    [.red]#<需要 input>`

    堆疊名稱不能包含空格。此名稱在您的 AWS 帳戶中必須是唯一的,並且是範本建立的 Web ACL 名稱。

    資源類型

    端點

    CloudFront

    選擇正在使用的資源類型。注意:如果您選擇 CloudFront做為端點,則必須啟動解決方案,在美國東部 (維吉尼亞北部) 區域 () 建立 WAF 資源us-east-1

    AWS 受管 IP 評價規則群組

    啟用 Amazon IP 評價清單受管規則群組保護

    no

    選擇yes開啟旨在將 Amazon IP 評價清單受管規則群組新增至 Web ACL 的元件。

    此規則群組是以 Amazon 內部威脅情報為基礎。如果您想要封鎖通常與機器人或其他威脅相關聯的 IP 地址,這會很有用。封鎖這些 IP 地址有助於減輕 Bot,並降低惡意行為者發現易受攻擊應用程式的風險。

    所需的 WCU 為 25。您的帳戶應有足夠的 WCU 容量,以避免 Web ACL 堆疊部署因超過容量限制而失敗。

    如需詳細資訊,請參閱 AWS 受管規則規則群組清單

    啟用匿名 IP 清單受管規則群組保護

    no

    選擇yes開啟旨在將匿名 IP 清單受管規則群組新增至 Web ACL 的元件。

    此規則群組會封鎖來自允許混淆檢視器身分之服務的請求。這些包括來自 VPN,代理、Tor 節點和託管供應商的請求。如果您要篩除可能會嘗試從您應用程式隱藏自身身分的檢視器,則此規則群組相當有用。封鎖這些服務的 IP 地址能協助降低機器人,以及迴避地理區域限制的問題。

    所需的 WCU 為 50。您的帳戶應有足夠的 WCU 容量,以避免 Web ACL 堆疊部署因超過容量限制而失敗。

    如需詳細資訊,請參閱 AWS 受管規則規則群組清單

    AWS 受管基準規則群組

    啟用核心規則集受管規則群組保護

    no

    選擇 yes 以開啟旨在將核心規則集受管規則群組新增至 Web ACL 的元件。

    此規則群組提供保護,防止各種漏洞遭到利用,包括一些高風險和經常發生的漏洞。考慮將此規則群組用於任何 AWS WAF 使用案例。

    所需的 WCU 為 700。您的帳戶應有足夠的 WCU 容量,以避免 Web ACL 堆疊部署因超過容量限制而失敗。

    如需詳細資訊,請參閱 AWS 受管規則規則群組清單

    啟用管理員保護 受管規則群組保護

    no

    選擇 yes 以開啟旨在將 Admin Protection Managed Rule Group 新增至 Web ACL 的元件。

    此規則群組會封鎖對公開管理頁面的外部存取。如果您執行第三方軟體,或想要降低惡意行為者取得應用程式系統管理存取權的風險,這可能會很有用。

    所需的 WCU 為 100。您的帳戶應有足夠的 WCU 容量,以避免 Web ACL 堆疊部署因超過容量限制而失敗。

    如需詳細資訊,請參閱 AWS 受管規則規則群組清單

    啟用已知錯誤輸入受管規則群組保護

    no

    選擇 yes 以開啟旨在將已知錯誤輸入受管規則群組新增至 Web ACL 的元件。

    此規則群組會封鎖對公開管理頁面的外部存取。如果您執行第三方軟體,或想要降低惡意行為者取得應用程式系統管理存取權的風險,這可能會很有用。

    所需的 WCU 為 100。您的帳戶應有足夠的 WCU 容量,以避免 Web ACL 堆疊部署因超過容量限制而失敗。

    如需詳細資訊,請參閱 AWS 受管規則規則群組清單

    AWS 受管使用案例特定規則群組

    啟用 SQL 資料庫受管規則群組保護

    no

    選擇 yes 以開啟旨在將 SQL 資料庫受管規則群組新增至 Web ACL 的元件。

    此規則群組會封鎖與利用 SQL 資料庫相關聯的請求模式,例如 SQL Injection 攻擊。這有助於防止未經授權查詢的遠端注入。如果您的應用程式會與 SQL 資料庫互動,請評估此規則群組以供使用。如果您已啟用 AWS 受管 SQL 規則群組,則可選用 SQL Injection 自訂規則。

    所需的 WCU 為 200。您的帳戶應有足夠的 WCU 容量,以避免 Web ACL 堆疊部署因超過容量限制而失敗。

    如需詳細資訊,請參閱 AWS 受管規則規則群組清單

    啟用 Linux 作業系統受管規則群組保護

    no

    選擇 yes以開啟旨在將 Linux 作業系統受管規則群組新增至 Web ACL 的元件。

    此規則群組會封鎖與利用 Linux 特定漏洞相關聯的請求模式,包括 Linux 特定的本機檔案包含 (LFI) 攻擊。這有助於防止公開檔案內容的攻擊,或執行攻擊者不應存取的程式碼。如果您的應用程式有任何部分在 Linux 上執行,請評估此規則群組。您應該將此規則群組與 POSIX 作業系統規則群組搭配使用。

    所需的 WCU 為 200。您的帳戶應有足夠的 WCU 容量,以避免 Web ACL 堆疊部署因超過容量限制而失敗。

    如需詳細資訊,請參閱 AWS 受管規則規則群組清單

    啟用 POSIX 作業系統受管規則群組保護

    no

    選擇yes開啟旨在將核心規則集受管規則群組保護新增至 Web ACL 的元件。

    此規則群組會封鎖與利用 POSIX 和類似 POSIX 作業系統特定漏洞相關的請求模式,包括 LFI 攻擊。這有助於防止公開檔案內容的攻擊,或執行攻擊者不應存取的程式碼。如果應用程式的任何部分在 POSIX 或類似 POSIX 的作業系統上執行,請評估此規則群組。

    所需的 WCU 為 100。您的帳戶應有足夠的 WCU 容量,以避免 Web ACL 堆疊部署因超過容量限制而失敗。

    如需詳細資訊,請參閱 AWS 受管規則規則群組清單

    啟用 Windows 作業系統受管規則群組保護

    no

    選擇 yes 以開啟旨在將 Windows 作業系統受管規則群組新增至 Web ACL 的元件。

    此規則群組會封鎖與利用 Windows 特定漏洞相關聯的請求模式,例如遠端執行 PowerShell 命令。這有助於防止利用允許攻擊者執行未經授權的命令或執行惡意程式碼的漏洞。如果應用程式的任何部分在 Windows 作業系統上執行,請評估此規則群組。

    所需的 WCU 為 200。您的帳戶應有足夠的 WCU 容量,以避免 Web ACL 堆疊部署因超過容量限制而失敗。

    如需詳細資訊,請參閱 AWS 受管規則規則群組清單

    啟用 PHP 應用程式受管規則群組保護

    no

    選擇 yes 以開啟旨在將 PHP 應用程式受管規則群組新增至 Web ACL 的元件。

    此規則群組會封鎖與利用 PHP 程式設計語言特定漏洞相關的請求模式,包括注入不安全的 PHP 函數。這有助於防止利用允許攻擊者從遠端執行程式碼或命令未授權的漏洞。如果您的應用程式與其互動的任何伺服器上安裝 PHP,請評估此規則群組。

    所需的 WCU 為 100。您的帳戶應有足夠的 WCU 容量,以避免 Web ACL 堆疊部署因超過容量限制而失敗。

    如需詳細資訊,請參閱 AWS 受管規則規則群組清單

    啟用 WordPress 應用程式受管規則群組保護

    no

    選擇 yes 以開啟旨在將 WordPress 應用程式受管規則群組新增至 Web ACL 的元件。

    此規則群組會封鎖與利用 WordPress 網站特定漏洞相關聯的請求模式。如果您正在執行 WordPress,請評估此規則群組。此規則群組應與 SQL 資料庫和 PHP 應用程式規則群組搭配使用。

    所需的 WCU 為 100。您的帳戶應有足夠的 WCU 容量,以避免 Web ACL 堆疊部署因超過容量限制而失敗。

    如需詳細資訊,請參閱 AWS 受管規則規則群組清單

    自訂規則 - 掃描器和探查

    啟用掃描器和探查保護

    yes - AWS Lambda log parser

    選擇用於封鎖掃描器和探查的元件。如需與緩解選項相關的權衡詳細資訊,請參閱日誌剖析器選項。

    應用程式存取日誌儲存貯體名稱

    [.red]<requires input>

    如果您選擇yes啟用掃描器和探查保護參數,請輸入您要存放 CloudFront 分佈 (多個) 或 ALB (多個) 存取日誌的 Amazon S3 儲存貯體名稱 (新儲存貯體或現有儲存貯體)。如果您使用的是現有的 Amazon S3 儲存貯體,它必須位於您要部署 CloudFormation 範本的相同 AWS 區域。您應該為每個解決方案部署使用不同的儲存貯體。

    若要停用此保護,請忽略此參數。注意:開啟 CloudFront Web 分佈或 ALB (s) 的 Web 存取記錄,將日誌檔案傳送到此 Amazon S3 儲存貯體。將日誌儲存在堆疊中定義的相同字首 (預設字首 AWSLogs/)。如需詳細資訊,請參閱應用程式存取日誌儲存貯體字首參數。

    應用程式存取日誌儲存貯體字首

    AWSLogs/

    如果您選擇yes啟用掃描器和探查保護參數,您可以為上述應用程式存取日誌儲存貯體輸入選用的使用者定義字首。

    如果您選擇 CloudFront端點參數,您可以輸入任何字首,例如 yourprefix/

    如果您選擇 ALB端點參數,則必須將 附加AWSLogs/至字首,例如 yourprefix/AWSLogs/

    如果沒有使用者定義的字首,請使用 AWSLogs/(預設)。

    若要停用此保護,請忽略此參數。

    儲存貯體存取記錄是否已開啟?

    no

    yes 如果為應用程式存取日誌儲存貯體名稱參數輸入現有的 Amazon S3 儲存貯體名稱,且儲存貯體的伺服器存取記錄已開啟,請選擇此選項。

    如果您選擇 no,解決方案會開啟儲存貯體的伺服器存取記錄。

    如果您選擇no啟用掃描器和探查保護參數,請忽略此參數。

    錯誤閾值

    50

    如果您選擇yes啟用掃描器和探查保護參數,請輸入每個 IP 地址每分鐘可接受的錯誤請求上限。

    如果您選擇no啟用掃描器和探查保護參數,請忽略此參數。

    將資料保留在原始 S3 位置

    no

    如果您選擇yes - Amazon Athena log parser啟用掃描器和探查保護參數,解決方案會將分割套用至應用程式存取日誌檔案和 Athena 查詢。根據預設,解決方案會將日誌檔案從原始位置移至 Amazon S3 中的分割資料夾結構。

    yes 如果也想要將日誌的副本保留在其原始位置,請選擇 。這將複製您的日誌儲存體。

    如果您未yes - Amazon Athena log parser選擇啟用掃描器和探查保護參數,請忽略此參數。

    自訂規則 - HTTP 洪水

    啟用 HTTP 洪水防護

    yes - AWS WAF rate-based rule

    選取用於封鎖 HTTP 洪水攻擊的元件。如需與緩解選項相關的權衡詳細資訊,請參閱日誌剖析器選項。

    預設請求閾值

    100

    如果您選擇yes啟用 HTTP 洪水防護參數,請輸入每個 IP 地址每五分鐘可接受的請求上限。

    如果您選擇yes - AWS WAF rate-based rule啟用 HTTP 洪水防護參數,則可接受的最小值為 100

    如果您yes - Amazon Athena log parser啟用 HTTP 洪水防護參數選擇 yes - AWS Lambda log parser或 ,它可以是任何值。

    若要停用此保護,請忽略此參數。

    依國家/地區請求閾值

    <選用輸入>

    如果您選擇yes - Amazon Athena log parser啟用 HTTP 洪水防護參數,您可以依照此 JSON 格式,依國家/地區輸入閾值{"TR":50,"ER":150}。解決方案會將這些閾值用於來自指定國家/地區的請求。解決方案會針對剩餘的請求使用預設請求閾值參數。注意:如果您定義此參數,國家/地區會自動包含在 Athena 查詢群組中,以及您可以使用 HTTP 洪水 Athena 查詢參數中的依請求分組的 IP 和其他選用分組欄位。 +

    如果您選擇停用此保護,請忽略此參數。

    HTTP 洪水 Athena 查詢中的依請求分組

    None

    如果您選擇yes - Amazon Athena log parser啟用 HTTP 洪水防護參數,您可以選擇分組依據欄位來計算每個 IP 和所選分組依據欄位的請求。例如,如果您選擇 URI,解決方案會計算每個 IP 和 URI 的請求。

    如果您選擇停用此保護,請忽略此參數。

    WAF 區塊期間

    240

    如果您選擇啟用掃描器和探查保護啟用 HTTP 洪水保護參數yes - Amazon Athena log parseryes - AWS Lambda log parser或 ,請輸入封鎖適用 IP 地址的期間 (以分鐘為單位)。

    若要停用日誌剖析,請忽略此參數。

    Athena 查詢執行時間排程 (分鐘)

    5

    如果您選擇yes - Amazon Athena log parser啟用掃描器和探查保護啟用 HTTP 洪水保護參數,則可以輸入執行 Athena 查詢的時間間隔 (以分鐘為單位)。根據預設,Athena 查詢每 5 分鐘執行一次。

    如果您選擇停用這些保護,請忽略此參數。

    自訂規則 - 錯誤的機器人

    啟用無效的機器人保護

    yes

    選擇 yes以開啟設計用來封鎖惡意機器人和內容抓取器的元件。

    有權寫入您帳戶中 CloudWatch 日誌的 IAM 角色 ARN

    <選用輸入>

    提供 IAM 角色的選用 ARN,該角色可寫入您帳戶中的 CloudWatch 日誌。例如:ARN: arn:aws:iam::account_id:role/myrolename。如需如何建立角色的說明,請參閱在 API Gateway 中設定 REST API 的 CloudWatch 記錄

    如果您將此參數保留空白 (預設),解決方案會為您建立新的角色。

    預設請求閾值

    100

    如果您選擇yes啟用 HTTP 洪水防護參數,請輸入每個 IP 地址每五分鐘可接受的請求上限。

    如果您選擇yes - AWS WAF rate-based rule啟用 HTTP 洪水防護參數,則可接受的最小值為 100。

    如果您yes - Amazon Athena log parser啟用 HTTP 洪水防護參數選擇 yes - AWS Lambda log parser或 ,它可以是任何值。

    若要停用此保護,請忽略此參數。

    自訂規則 - 第三方 IP 評價清單

    啟用評價清單保護

    yes

    選擇yes封鎖來自第三方評價清單 (支援的清單包括 Spamhaus、Emerging Threats 和 Tor exit 節點) 上 IP 地址的請求。

    舊版自訂規則

    啟用 SQL Injection Protection

    yes

    選擇 yes以開啟設計用來封鎖常見 SQL Injection 攻擊的元件。如果您未使用 AWS 受管核心規則集或 AWS 受管 SQL 資料庫規則群組,請考慮將其啟用。

    您可以選擇其中一個選項 (yes (繼續)yes - MATCH、 或 yes - NO_MATCH),讓 AWS WAF 處理超過 8 KB (8192 位元組) 的超大請求。根據預設, 會根據規則yes檢查條件,檢查大小限制內的請求元件內容。如需詳細資訊,請參閱處理過大 Web 請求元件

    選擇 no以停用此功能。注意:CloudFormation 堆疊會將選取的過大處理選項新增至預設 SQL Injection 保護規則,並將其部署到您的 AWS 帳戶。如果您在 CloudFormation 外部自訂規則,您的變更會在堆疊更新後遭到覆寫。

    SQL Injection Protection 的敏感度等級

    LOW

    選擇您希望 AWS WAF 用來檢查 SQL Injection 攻擊的敏感度等級。

    HIGH 偵測到更多攻擊,但可能會產生更多誤報。

    對於已有其他 SQL 隱碼攻擊防護能力的資源,或誤判容錯能力較低的資源來說,LOW 通常是更好的選擇。

    如需詳細資訊,請參閱《AWS CloudFormation 使用者指南》中的 AWS WAF 新增 SQL 注入規則陳述式的敏感度等級SensitivityLevel 屬性AWS CloudFormation

    如果您選擇停用 SQL Injection 保護,請忽略此參數。注意:CloudFormation 堆疊會將選取的敏感度等級新增至預設 SQL Injection 保護規則,並將其部署到您的 AWS 帳戶。如果您在 CloudFormation 外部自訂規則,您的變更會在堆疊更新後遭到覆寫。

    啟用跨網站指令碼保護

    yes

    選擇 yes以開啟設計用來封鎖常見 XSS 攻擊的元件。如果您未使用 AWS 受管核心規則集,請考慮將其啟用。您也可以選取其中一個選項 (yes (繼續)yes - MATCH、 或 yes - NO_MATCH),讓 AWS WAF 處理超過 8 KB (8192 位元組) 的超大請求。根據預設, yes會使用 Continue選項,根據規則檢查條件檢查大小限制內的請求元件內容。如需詳細資訊,請參閱請求元件的超大處理

    選擇 no以停用此功能。注意:CloudFormation 堆疊會將選取的超大處理選項新增至預設的跨網站指令碼規則,並將其部署到您的 AWS 帳戶。如果您在 CloudFormation 外部自訂規則,您的變更會在堆疊更新後遭到覆寫。

    允許和拒絕的 IP 保留設定

    允許 IP 集的保留期間 (分鐘)

    -1

    如果您想要啟用允許 IP 集的 IP 保留,請輸入數字 (15 或更高) 做為保留期間 (分鐘)。到達保留期的 IP 地址會過期,而解決方案會從 IP 集中移除它們。解決方案支援最短 15 分鐘的保留期。如果您輸入介於 0和 之間的數字15,解決方案會將其視為 15

    將其保留為 -1(預設) 以關閉 IP 保留。

    遭拒 IP 集的保留期間 (分鐘)

    -1

    如果您想要啟用已拒絕 IP 集的 IP 保留,請輸入數字 (15 或更高) 做為保留期間 (分鐘)。到達保留期的 IP 地址會過期,而解決方案會從 IP 集中移除它們。解決方案支援最短 15 分鐘的保留期。如果您輸入介於 0和 之間的數字15,解決方案會將其視為 15

    將其保留為 -1(預設) 以關閉 IP 保留。

    允許或拒絕 IP 集過期時接收通知的電子郵件

    <選用輸入>

    如果您啟用 IP 保留期參數 (請參閱先前兩個參數),並想要在 IP 地址過期時收到電子郵件通知,請輸入有效的電子郵件地址。

    如果您未啟用 IP 保留或想要關閉電子郵件通知,請保留空白 (預設)。

    進階設定

    日誌群組的保留期間 (天數)

    365

    如果您想要啟用 CloudWatch Log Groups 的保留,請輸入數字 (1 或更高) 做為保留期間 (天)。您可以選擇一天 (1) 到十年 () 之間的保留期間3650。根據預設,日誌會在一年後過期。

    將其設定為 -1 以無限期保留日誌。

  6. 選擇下一步

  7. 設定堆疊選項頁面上,您可以為堆疊中的資源指定標籤 (鍵/值對),並設定其他選項。選擇下一步

  8. 檢閱和建立頁面上,檢閱並確認設定。選取確認範本將建立 IAM 資源和任何其他必要功能的方塊。

  9. 選擇提交以部署堆疊。

    在狀態欄的 AWS CloudFormation 主控台中檢視堆疊的狀態。您應該會在大約 15 分鐘內收到 CREATE_COMPLETE 狀態。

    注意

    除了 Log ParserIP Lists ParserAccess Handler AWS Lambda 函數之外,此解決方案還包含 helpercustom-resource Lambda 函數,這些函數只會在初始組態期間或資源更新或刪除時執行。

    使用此解決方案時,您會在 AWS Lambda 主控台中看到所有函數,但只有三個主要解決方案函數會定期作用中。請勿刪除其他兩個函數;它們是管理相關聯資源的必要項目。

若要查看堆疊資源的詳細資訊,請選擇輸出索引標籤。這包括 BadBotHoneypotEndpoint 值,這是 API Gateway Honeypot 端點。請記住此值,因為您將在 Web 應用程式的內嵌 Honeypot 連結中使用它。