

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

# 機器人控制的技巧
<a name="techniques"></a>

機器人緩解的主要目標是限制自動化機器人活動對組織網站、服務和應用程式的負面影響。使用的技術和技術取決於您要防禦的流量或活動類型。了解應用程式及其流量是達成此目標的關鍵。如需從何處開始的詳細資訊，請參閱本指南中的[監控機器人控制策略的準則](monitoring.md)一節。

一般而言，機器人緩解解決方案提供的控制項可以分為下列高階類別：靜態、用戶端識別和進階分析。下圖顯示可用的不同技術，以及根據機器人活動複雜性如何使用這些技術。這強調了如何透過使用靜態控制項取得基礎或最廣泛的緩解措施，例如允許列出和內部檢查。機器人的最小部分始終是最進階的部分，而針對這些機器人的緩解需要更進階的技術和控制組合。



![\[隨著機器人複雜性的增加，緩解技術的複雜性和複雜性也必須隨之增加。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/bot-control/images/bot-mitigation-techniques.png)


接下來，本指南會探索每個類別及其技術。它還描述了 中可用於[AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html)實作這些控制項的選項：
+ [管理機器人的靜態控制](static-controls.md)
+ [用於管理機器人的用戶端識別控制項](client-identification-controls.md)
+ [用於管理機器人的進階分析控制項](advanced-analysis-controls.md)

# 管理機器人的靜態控制
<a name="static-controls"></a>

若要採取動作，*靜態控制項*會評估來自 HTTP(S) 請求的靜態資訊，例如其 IP 地址或其標頭。這些控制對於低複雜度的不良機器人活動或需要驗證和管理的預期有益機器人流量非常有用。靜態控制技術包括：允許列出、以 IP 為基礎的控制和內部檢查。

## 允許列出
<a name="allow-listing"></a>

允許列出是允許透過現有機器人緩解控制識別的易記流量的控制項。有各種方式可以達成此目標。最簡單的是使用[符合一組 IP 地址](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-forwarded-ip-address.html)或類似相符條件的規則。當請求符合設定為 `Allow`動作的規則時，後續規則不會評估該請求。在某些情況下，您只需要防止某些規則受到處理；換句話說，您需要允許一個規則的清單，但並非所有規則。這是處理規則誤報的常見案例。允許清單視為廣範圍規則。為了降低誤報的可能性，建議您將其與另一個更精細的選項配對，例如路徑或標頭比對。

## IP 型控制
<a name="ip-based-controls"></a>

### 單一 IP 地址區塊
<a name="ip-address-blocks"></a>

緩解機器人影響的常用工具是限制來自單一請求者的請求。最簡單的範例是，如果流量的請求是惡意或大量，則封鎖流量的來源 IP 地址。這會使用 AWS WAF [IP 集比對規則](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-ipset-match.html)來實作 IP 型區塊。這些規則符合 IP 地址，並套用 `Block`、 `Challenge`或 的動作`CAPTCHA`。您可以透過查看內容交付網路 (CDN)、Web 應用程式防火牆或應用程式和服務日誌，來判斷來自 IP 地址的請求是否太多。不過，在大多數情況下，如果沒有自動化，此控制是不切實際的。

在 中自動化 IP 地址區塊清單 AWS WAF 通常使用以速率為基礎的規則來完成。如需詳細資訊，請參閱本指南中的 [速率為基礎的規則](#rate-based-rules)。您也可以實作 [解決方案的安全自動化 AWS WAF](https://docs.aws.amazon.com/solutions/latest/security-automations-for-aws-waf/welcome.html)。此解決方案會自動更新要封鎖的 IP 地址清單，且 AWS WAF 規則會拒絕符合這些 IP 地址的請求。

識別機器人攻擊的一種方法是，如果來自相同 IP 地址的大量請求專注於少量網頁。這表示機器人正在淘汰價格，或重複嘗試以高百分比失敗的登入。您可以建立可立即辨識此模式的自動化。自動化會封鎖 IP 地址，透過快速識別和緩解來降低攻擊的有效性。當攻擊者擁有大量 IP 地址來啟動攻擊，或攻擊行為難以辨識並與正常流量分開時，封鎖特定 IP 地址會較不有效。 

### IP 地址評價
<a name="ip-address-reputation"></a>

*IP 評價服務*提供的智慧有助於評估 IP 地址的可信度。此智慧通常衍生自從該 IP 地址彙總過去活動的 IP 相關資訊。先前的活動有助於指出 IP 地址產生惡意請求的可能性。資料會新增至追蹤 IP 地址行為的受管清單。

匿名 IP 地址是 IP 地址評價的特殊案例。來源 IP 地址來自易取得 IP 地址的已知來源，例如雲端虛擬機器，或來自代理，例如已知 VPN 提供者或 Tor 節點。 AWS WAF [Amazon IP 評價清單](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html#aws-managed-rule-groups-ip-rep-amazon)和[匿名 IP 清單受管](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html#aws-managed-rule-groups-ip-rep-anonymous)規則群組會使用 Amazon 內部威脅情報來協助識別這些 IP 地址。

這些受管清單提供的智慧可協助您對從這些來源識別的活動採取行動。根據此智慧，您可以建立直接封鎖流量的規則，或限制請求數量的規則 （例如以速率為基礎的規則）。您也可以使用此智慧，在 `COUNT` 模式中使用規則來評估流量的來源。這會檢查比對條件，並套用可用來建立自訂規則的標籤。

### 速率為基礎的規則
<a name="rate-based-rules"></a>

對於某些案例而言，以速率為基礎的規則可能是寶貴的工具。例如，與敏感統一資源識別符 (URIs) 中的使用者相比，當機器人流量達到高磁碟區，或流量開始影響正常操作時，速率型規則是有效的。速率限制可將請求保持在可管理層級，並限制和控制存取。 AWS WAF 可以使用以速率為基礎的規則陳述式，在 [Web 存取控制清單 (Web ACL)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html) 中實作速率限制規則。 [https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-rate-based.html](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-rate-based.html)使用速率型規則的建議方法是包含涵蓋整個網站、URI 特定規則和 IP 評價型規則的括住規則。IP 評價率型規則結合了 IP 地址評價的智慧與速率限制功能。

對於整個網站，以空白 IP 評價率為基礎的規則會建立上限，以防止不複雜的機器人從少量 IPs 淹沒網站。特別建議將速率限制用於保護具有高成本或影響URIs，例如登入或帳戶建立頁面。

速率限制規則可提供具成本效益的第一層防禦。您可以使用更進階的規則來保護敏感URIs。URI 特定速率型規則可以限制對關鍵頁面或影響後端APIs 的影響，例如資料庫存取。保護本指南稍後討論的特定 URIs的進階緩解措施通常會產生額外費用，而這些 URI 特定速率型規則可協助您控制成本。如需常用建議速率型規則的詳細資訊，請參閱 [安全部落格中的三個最重要的 AWS WAF 速率型規則](https://aws.amazon.com/blogs/security/three-most-important-aws-waf-rate-based-rules/)。 AWS 在某些情況下，限制以速率為基礎的規則評估的請求類型會很有用。您可以使用[縮小範圍陳述式](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-scope-down-statements.html)，例如，依來源 IP 地址的地理區域限制以速率為基礎的規則。

AWS WAF 透過使用[彙總金鑰](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-rate-based-aggregation-instances.html)為以速率為基礎的規則提供進階功能。透過此功能，您可以設定速率型規則，以使用來源 IP 地址以外的各種其他彙總金鑰和金鑰組合。例如，作為單一組合，您可以根據轉送的 IP 地址、HTTP 方法和查詢引數彙總請求。這可協助您為複雜的容積流量緩解設定更精細的規則。

## 內部檢查
<a name="intrinsic-checks"></a>

*內部檢查*是系統或程序內各種類型的內部或固有驗證或驗證。對於機器人控制， AWS WAF 驗證請求中傳送的資訊是否符合系統訊號，以執行內部檢查。例如，它會執行反向 DNS 查詢和其他系統驗證。有些自動化請求是必要的，例如 SEO 相關請求。允許列出是允許良好、預期的機器人通過的方法。但有時候，惡意機器人會模擬良好的機器人，而將它們分開可能很困難。 AWS WAF 提供透過受管[AWS WAF 機器人控制規則群組](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-bot.html)達成此目標的方法。此群組中的規則可驗證自我識別的機器人是他們所說的身分。 會根據該機器人的已知模式 AWS WAF 檢查請求的詳細資訊，也會執行反向 DNS 查詢和其他目標驗證。

# 用於管理機器人的用戶端識別控制項
<a name="client-identification-controls"></a>

如果無法透過靜態屬性輕鬆識別與攻擊相關的流量，則偵測需要能夠準確識別提出請求的用戶端。例如，當限制速率的屬性是應用程式特定的，例如 Cookie 或權杖時，速率型規則通常會更有效率且更難逸出。使用與工作階段繫結的 Cookie 可防止殭屍網路運算子跨多個機器人複製類似的請求流程。

字符獲取通常用於用戶端識別。針對權杖取得，JavaScript 程式碼會收集資訊，以產生在伺服器端評估的權杖。評估的範圍可以從驗證用戶端上執行 JavaScript 到收集裝置資訊以進行指紋。權杖取得需要將 JavaScript 開發套件整合到網站或應用程式中，或者需要服務提供者動態執行注入。

需要 JavaScript 支援為嘗試模擬瀏覽器的機器人新增額外的障礙。涉及 SDK 時，例如在行動應用程式中，權杖擷取會驗證 SDK 實作，並防止機器人模擬應用程式的請求。

權杖取得需要使用在連線用戶端實作的 SDKs。下列 AWS WAF 功能提供適用於瀏覽器的 JavaScript 型 SDK 和適用於行動裝置的應用程式型 SDK：[機器人控制](https://docs.aws.amazon.com/waf/latest/developerguide/waf-bot-control.html)、[詐騙控制帳戶接管預防 (ATP)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-atp.html) 和[詐騙控制帳戶建立詐騙預防 (ACFP)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-acfp.html)。

用戶端識別的技術包括 CAPTCHA、瀏覽器分析、裝置指紋和 TLS 指紋。

## CAPTCHA
<a name="captcha"></a>

完全自動化的公有 Turing 測試，用於區分電腦和人類 ([CAPTCHA](https://docs.aws.amazon.com/waf/latest/developerguide/waf-captcha.html))，以區分機器人和人類訪客，並防止 Web 抓取、憑證填充和垃圾郵件。有各種實作，但它們通常涉及人類可以解決的拼圖。CAPTCHAs為常見機器人提供額外的防禦層，並可減少機器人偵測中的誤判。

AWS WAF 允許規則針對符合規則檢查條件的 Web 請求執行 CAPTCHA 動作。此動作是評估 service. AWS WAF rules 收集的用戶端識別資訊的結果。rules 可能需要解決 CAPTCHA 挑戰，以解決經常由機器人鎖定的特定資源，例如登入、搜尋和表單提交。 AWS WAF 可以透過間質方式或使用 SDK 在用戶端處理 CAPTCHA。如需詳細資訊，請參閱 [CAPTCHA 和 Challenge in AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-captcha-and-challenge.html)。

## 瀏覽器分析
<a name="browser-profiling"></a>

*瀏覽器分析*是一種收集和評估瀏覽器特性的方法，作為字符獲取的一部分，用於使用互動式瀏覽器區分真實人類和分散式機器人活動。您可以透過瀏覽器運作方式固有之請求的標頭、標頭順序和其他特性，被動地執行瀏覽器分析。

您也可以使用字符擷取在程式碼中執行瀏覽器分析。透過使用 JavaScript 進行瀏覽器分析，您可以快速判斷用戶端是否支援 JavaScript。這可協助您偵測不支援它的簡單機器人。瀏覽器分析檢查不只是 HTTP 標頭和 JavaScript 支援；瀏覽器分析讓機器人難以完全模擬 Web 瀏覽器。兩個瀏覽器分析選項都有相同的目標：尋找瀏覽器設定檔中的模式，指出與實際瀏覽器的行為不一致。

AWS WAF 目標機器人的機器人控制提供指示，指出瀏覽器是否顯示自動化的證據或不一致的訊號。 AWS WAF 會標記請求，以採取規則中指定的動作。如需詳細資訊，請參閱 AWS 安全部落格中的[偵測和封鎖進階機器人流量](https://aws.amazon.com/blogs/security/detect-and-block-advanced-bot-traffic/)。

## 裝置指紋
<a name="device-fingerprinting"></a>

裝置指紋類似於瀏覽器分析，但並不限於瀏覽器。在裝置上執行的程式碼 （可以是行動裝置或 Web 瀏覽器） 會收集裝置的詳細資訊，並向後端伺服器回報。詳細資訊可以包含系統屬性，例如記憶體、CPU 類型、作業系統 (OS) 核心類型、作業系統版本和虛擬化。

您可以使用裝置指紋辨識機器人是否模擬環境，或是否有使用自動化的直接跡象。除此之外，裝置指紋也可以用來辨識來自相同裝置的重複請求。

識別來自相同裝置的重複請求，即使裝置嘗試變更請求的某些特性， 也允許後端系統強制執行速率限制規則。以裝置指紋為基礎的速率限制規則通常比以 IP 地址為基礎的速率限制規則更有效。這可協助您減少在 VPNs 或代理之間輪換，但來自少量裝置的機器人流量。

與應用程式整合 SDKs 搭配使用時，目標 AWS WAF 機器人的機器人控制可以 彙總用戶端工作階段請求行為。這可協助您偵測並區隔合法用戶端工作階段與惡意用戶端工作階段，即使兩者都來自相同的 IP 地址。如需目標 AWS WAF 機器人的機器人控制詳細資訊，請參閱 AWS 安全部落格中的[偵測和封鎖進階機器人流量](https://aws.amazon.com/blogs/security/detect-and-block-advanced-bot-traffic/)。

## TLS 指紋
<a name="tls-fingerprinting"></a>

當機器人來自許多 IP 地址，但具有類似的特性時，通常會使用 TLS 指紋，也稱為*以簽章為基礎的規則*。使用 HTTPS 時，用戶端和伺服器端會交換訊息，以互相確認和驗證。它們會建立密碼編譯演算法和工作階段金鑰。這稱為 *TLS 交握*。如何實作 TLS 交握是一種簽章，通常對於識別分散在許多 IP 地址的大型攻擊很有價值。

TLS 指紋可讓 Web 伺服器以高準確度判斷 Web 用戶端的身分。在進行任何應用程式資料交換之前，它只需要第一個封包連線中的參數。在此情況下，*Web 用戶端*是指起始請求的應用程式，可能是瀏覽器、CLI 工具、指令碼 （機器人）、原生應用程式或其他用戶端。

SSL 和 TLS 指紋方法之一是 [JA3 指紋](https://github.com/salesforce/ja3)。JA3 會根據 SSL 或 TLS 交握的 Client Hello 訊息中的欄位對用戶端連線進行指紋。它可協助您跨不同的來源 IP 地址、連接埠和 X.509 憑證來描述特定的 SSL 和 TLS 用戶端。

Amazon CloudFront 支援[將 JA3 標頭](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/adding-cloudfront-headers.html)新增至請求。`CloudFront-Viewer-JA3-Fingerprint` 標頭包含傳入檢視器請求之 TLS Client Hello 封包的 32 個字元雜湊指紋。指紋會封裝用戶端通訊方式的相關資訊。此資訊可用於描述共用相同模式的用戶端。您可以將 `CloudFront-Viewer-JA3-Fingerprint`標頭新增至原始伺服器請求政策，並將政策連接至 CloudFront 分佈。然後，您可以在原始伺服器應用程式或 Lambda@Edge 和 CloudFront Functions 中檢查標頭值。您可以比較標頭值與已知惡意軟體指紋清單，以封鎖惡意用戶端。您也可以將標頭值與預期的指紋清單進行比較，以僅允許來自已知用戶端的請求。

# 用於管理機器人的進階分析控制項
<a name="advanced-analysis-controls"></a>

有些機器人使用進階欺騙工具來主動逃避偵測。這些機器人模擬人類行為，以執行特定活動，例如剪影。這些機器人具有用途，通常與大貨幣獎勵相關聯。

這些進階、持久性機器人使用混合技術來逃避偵測，或與一般流量混合。反之，這還需要混合不同的偵測技術，才能準確識別和緩解惡意流量。

## 針對性使用案例
<a name="targeted-use-cases"></a>

使用案例資料可提供機器人偵測機會。*詐騙偵測*是需要特殊緩解的特殊使用案例。例如，為了協助防止帳戶接管，您可以將遭入侵的帳戶使用者名稱和密碼清單與登入或帳戶建立請求進行比較。這有助於網站擁有者偵測使用遭入侵登入資料的登入嘗試。使用洩露的登入資料可能表示機器人嘗試接管帳戶，或者可能是不知道其登入資料洩露的使用者。在此使用案例中，網站擁有者可以採取其他步驟來驗證使用者，然後協助他們變更密碼。 為此使用案例 AWS WAF 提供[詐騙控制帳戶接管預防 (ATP)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-atp.html) 受管規則。

## 應用程式層級或彙總機器人偵測
<a name="aggregated-bot-detection"></a>

有些使用案例需要結合來自內容交付網路 (CDN) 請求的資料 AWS WAF，以及應用程式或服務的後端。有時，您甚至需要整合第三方智慧，才能對機器人做出高可信度的決策。

[Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) 和 中的功能 AWS WAF 可以將訊號傳送至後端基礎設施，或者它們隨後可以透過標頭和[標籤](https://docs.aws.amazon.com/waf/latest/developerguide/waf-labels.html)彙總規則。CloudFront 公開 JA3 指紋標頭，如前所述。這是 CloudFront 透過標頭提供此類資料的範例。當符合規則時， AWS WAF 可以傳送標籤。後續規則可以使用這些標籤，對機器人做出更好的決策。合併多個規則時，您可以實作高度精細的控制項。常見的使用案例是透過標籤比對受管規則的部分， 然後將其與其他請求資料合併。如需詳細資訊，請參閱 AWS WAF 文件中的[標籤比對範例](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-label-match-examples.html)。

## 機器學習分析
<a name="machine-learning-analysis"></a>

機器傾斜 (ML) 是處理機器人的強大技術。ML 可以適應不斷變化的詳細資訊，而且當 與其他工具結合時， 提供最強大且完整的方法，以最少的誤判來緩解機器人。兩種最常見的 ML 技術是*行為分析*和*異常偵測*。透過行為分析，系統 （在用戶端、伺服器或兩者中） 會監控使用者與應用程式或網站的互動方式。它會監控滑鼠移動模式或點選和觸控互動的頻率。接著會使用 ML 模型分析行為，以辨識機器人。異常偵測類似。它著重於偵測與應用程式或網站所定義基準明顯不同的行為或模式。

AWS WAF 機器人的目標控制項提供預測性 ML 技術。此技術有助於防禦由旨在逃避偵測的機器人進行的分散式代理型攻擊。受管 [AWS WAF Bot Control 規則群組](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-bot.html)使用網站流量統計資料的自動化 ML 分析，來偵測指示分散式協調機器人活動的異常行為。