

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

# 架構詳細資訊
<a name="architecture-details"></a>

本節說明構成此解決方案的元件和 AWS 服務，以及這些元件如何一起運作的架構詳細資訊。

## 此解決方案中的 AWS 服務
<a name="aws-services-in-this-solution"></a>


| AWS 服務 | 說明 | 
| --- | --- | 
|   [AWS WAF](https://aws.amazon.com/waf/)   |   **核心**。部署 AWS WAF Web ACL、AWS 受管規則規則群組、自訂規則和 IP 集。進行 AWS WAF API 呼叫，以封鎖常見的攻擊和安全的 Web 應用程式。  | 
|   [Amazon Data Firehose](https://aws.amazon.com/kinesis/data-firehose/)   |   **核心**。將 AWS WAF 日誌交付至 Amazon S3 儲存貯體。  | 
|   [Amazon S3](https://aws.amazon.com/s3/)   |   **核心**。存放 AWS WAF、CloudFront 和 ALB 日誌。  | 
|   [AWS Lambda](https://aws.amazon.com/lambda/)   |   **核心**。部署多個 Lambda 函數以支援自訂規則。  | 
|   [Amazon EventBridge](https://aws.amazon.com/eventbridge/)   |   **核心**。建立事件規則以叫用 Lambda。  | 
|   [Amazon Athena](https://aws.amazon.com/athena/)   |   **支援**。建立 Athena 查詢和工作群組以支援 Athena 日誌剖析器。  | 
|   [AWS Glue](https://aws.amazon.com/glue/)   |   **支援**。建立資料庫和資料表以支援 Athena 日誌剖析器。  | 
|   [Amazon SNS](https://aws.amazon.com/sns/)   |   **支援**。傳送 Amazon Simple Notification Service (Amazon SNS) 電子郵件通知，以支援允許和拒絕清單上的 IP 保留。  | 
|   [AWS Systems Manager](https://aws.amazon.com/systems-manager/)   |   **支援**。提供資源操作和成本資料的應用程式層級資源監控和視覺化。  | 

# 日誌剖析器選項
<a name="log-parser-options"></a>

如[架構概觀](architecture-overview.md)中所述，有三個選項可處理 HTTP 洪水、掃描器和探查保護。以下各節會更詳細地說明這些選項。

## AWS WAF 速率型規則
<a name="aws-waf-rate-based-rule"></a>

速率型規則可用於 HTTP 洪水防護。根據預設，速率型規則會根據請求 IP 地址彙總和速率限制請求。此解決方案可讓您指定用戶端 IP 在五分鐘內允許持續更新的 Web 請求數量。如果 IP 地址違反設定的配額，AWS WAF 會封鎖新的請求，直到請求率低於設定的配額為止。

如果請求配額超過每五分鐘 2，000 個請求，而且您不需要實作自訂，建議您選取速率型規則選項。例如，計數請求時，您不考慮靜態資源存取。

您可以進一步設定規則，以使用各種其他彙總金鑰和金鑰組合。如需詳細資訊，請參閱[彙總選項和金鑰](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-rate-based-aggregation-options.html)。

## Amazon Athena 日誌剖析器
<a name="amazon-athena-log-parser"></a>

**HTTP 洪水防護**和**掃描器和探查****防護**範本參數都提供 Athena 日誌剖析器選項。啟用時，CloudFormation 會佈建 Athena 查詢和排程 Lambda 函數，負責協調 Athena 執行、處理結果輸出和更新 AWS WAF。設定為每五分鐘執行一次的 CloudWatch 事件會叫用此 Lambda 函數。您可以使用 **Athena Query Run Time Schedule** 參數來設定。

當您無法使用 AWS WAF 速率型規則且熟悉 SQL 來實作自訂時，建議您選取此選項。如需如何變更預設查詢的詳細資訊，請參閱[檢視 Amazon Athena 查詢](view-amazon-athena-queries.md)。

HTTP 洪水防護是以 AWS WAF 存取日誌處理為基礎，並使用 WAF 日誌檔案。WAF 存取日誌類型具有較低的延遲時間，相較於 CloudFront 或 ALB 日誌交付時間，您可以使用它更快地識別 HTTP 洪水來源。不過，您必須在**啟動掃描器和探查保護**範本參數中選取 CloudFront 或 ALB 日誌類型，才能接收回應狀態碼。

**注意**  
如果惡意機器人繞過 Honeypot 並直接與 ALB 或 CloudFront 互動，則系統會透過日誌分析偵測惡意行為，除非 HTTP 洪水防護和掃描器和探查保護都未使用 Lambda 日誌剖析器。

## AWS Lambda 日誌剖析器
<a name="aws-lambda-log-parser"></a>

**HTTP 洪水防護**和**掃描器與探查防護**範本參數提供 **AWS Lambda Log Parser** 選項。只有在無法使用 **AWS WAF 速率型規則**和 **Amazon Athena 日誌剖析器選項時，才能使用 Lambda 日誌剖析器**。此選項的已知限制是在正在處理的檔案內容中處理資訊。例如，IP 可能會產生比定義配額更多的請求或錯誤，但由於此資訊會分割成不同的檔案，因此每個檔案不會存放足夠的資料來超過配額。

**注意**  
此外，如果惡意機器人繞過 Honeypot 並直接與 ALB 或 CloudFront 互動，偵測會依賴所選的日誌剖析器選項來有效識別和封鎖惡意活動。

# 元件詳細資訊
<a name="component-details"></a>

如[架構圖](architecture-overview.md#architecture-diagram)中所述，此解決方案的四個元件會使用自動化來檢查 IP 地址，並將其新增至 AWS WAF 區塊清單。以下各節會更詳細地說明這些元件。

## 日誌剖析器 - 應用程式
<a name="log-parser--application"></a>

應用程式日誌剖析器有助於防止掃描器和探查。

 **應用程式日誌剖析器流程。**

![\[應用程式日誌剖析器流程\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/security-automations-for-aws-waf/images/app-log-parser-flow.png)


1. 當 CloudFront 或 ALB 代表您的 Web 應用程式接收請求時，它會將存取日誌傳送至 Amazon S3 儲存貯體。

   1. （選用） 如果您`Yes - Amazon Athena log parser`為範本參數選取 **啟用 HTTP 洪水保護**和**啟用掃描器和探查保護**，Lambda 函數會在存取日誌到達 Amazon S3 時，從原始資料夾 *<customer-bucket>* `/AWSLogs` 移至新分割的資料夾 *<customer-bucket>* `/AWSLogs-partitioned/` *<optional-prefix>* `/year=` *<YYYY>* `/month=` *<MM>* `/day=` *<DD>* `/hour=` *<HH>*/。

   1. （選用） 如果您`yes`選取在**原始 S3 位置範本參數中保留資料**，日誌會保留在其原始位置，並複製到其分割資料夾，複製您的日誌儲存體。
**注意**  
對於 Athena 日誌剖析器，此解決方案只會在您部署此解決方案之後，分割抵達 Amazon S3 儲存貯體的新日誌。如果您有要分割的現有日誌，您必須在部署此解決方案之後，手動將這些日誌上傳至 Amazon S3。

1. 根據您對範本參數的選擇**，啟用 HTTP 洪水防護**和**啟用掃描器和探查保護**，此解決方案會使用下列其中一項處理日誌：

   1.  **Lambda** - 每次將新的存取日誌存放在 Amazon S3 儲存貯體時，就會啟動 `Log Parser` Lambda 函數。

   1.  **Athena** - 根據預設，**掃描器和探查保護** Athena 查詢每五分鐘執行一次，輸出會推送到 AWS WAF。此程序是由 CloudWatch 事件啟動，這會啟動負責執行 Athena 查詢的 Lambda 函數，並將結果推送至 AWS WAF。

1. 解決方案會分析日誌資料，以識別產生比定義配額更多錯誤的 IP 地址。解決方案接著會更新 AWS WAF IP 集合條件，在客戶定義的期間內封鎖這些 IP 地址。

## 日誌剖析器 - AWS WAF
<a name="log-parser--aws-waf"></a>

如果您`yes - Amazon Athena log parser`為**啟用 HTTP 洪水防護**選取 `yes - AWS Lambda log parser`或 ，此解決方案會佈建下列元件，以剖析 AWS WAF 日誌來識別和封鎖以大於您定義配額的請求率洪水端點的原始伺服器。

 **AWS WAF 日誌剖析器流程。**

![\[waf 日誌剖析器流程\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/security-automations-for-aws-waf/images/waf-log-parser-flow.png)


1. 當 AWS WAF 收到存取日誌時，會將日誌傳送至 Firehose 端點。接著 Firehose 會將日誌交付至 Amazon S3 中名為 *<customer-bucket>* `/AWSLogs/` *<optional-prefix>* `/year=` *<YYYY>* `/month=` *<MM>* `/day=` *<DD>* `/hour=` *<HH>* 的分割儲存貯體 `/` 

1. 根據您為範本參數選擇**啟用 HTTP 洪水防護**和**啟用掃描器和探查保護**，此解決方案會使用下列其中一項處理日誌：

   1.  **Lambda**：每次在 Amazon S3 儲存貯體中存放新的存取日誌時，都會啟動 `Log Parser` Lambda 函數。

   1.  **Athena：**根據預設，每五分鐘會執行掃描器和探查 Athena 查詢，並將輸出推送至 AWS WAF。此程序是由 Amazon CloudWatch 事件啟動，然後啟動負責執行 Amazon Athena 查詢的 Lambda 函數，並將結果推送至 AWS WAF。

1. 解決方案會分析日誌資料，以識別傳送的請求超過定義配額的 IP 地址。解決方案接著會更新 AWS WAF IP 集合條件，在客戶定義的期間內封鎖這些 IP 地址。

## 日誌剖析器 - 錯誤的機器人
<a name="log-parser--badbot"></a>

錯誤的機器人日誌剖析器會檢查對 Honeypot 端點的請求，以擷取其來源 IP 地址。

 **錯誤的機器人日誌剖析器流程。**

![\[badbot 日誌剖析器流程\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/security-automations-for-aws-waf/images/badbot-log-parser-flow.png)


1. 如果 `Bad Bot Protection` 已啟用，且同時停用 HTTP 洪水防護和掃描器與探查防護功能：系統會使用 Log Lambda 剖析器，該剖析器只會根據 [WAF 標籤篩選條件](https://docs.aws.amazon.com/waf/latest/developerguide/waf-labels.html)記錄錯誤的機器人請求。

1. Lambda 函數會攔截和檢查請求標頭，以擷取存取陷阱端點之來源的 IP 地址。

1. 解決方案會分析日誌資料，以識別傳送的請求超過定義配額的 IP 地址。解決方案接著會更新 AWS WAF IP 集合條件，在客戶定義的期間內封鎖這些 IP 地址。

## IP 清單剖析器
<a name="ip-lists-parser"></a>

`IP Lists Parser` Lambda 函數有助於防範第三方 IP 評價清單中識別的已知攻擊者。

 **IP 運算會列出剖析器流程。**

![\[ip 評價清單流程\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/security-automations-for-aws-waf/images/ip-reputation-lists-flow.png)


1. 每小時 Amazon CloudWatch 事件會叫用 `IP Lists Parser` Lambda 函數。

1. Lambda 函數會從三個來源收集和剖析資料：
   + Spamhaus DROP 和 EDROP 清單
   + Proofpoint 新興威脅 IP 清單
   + Tor 結束節點清單

1. Lambda 函數會使用目前的 IP 地址更新 AWS WAF 封鎖清單。