流量篩選規則包括 WAF 規則

上次更新: 2024-02-23

流量篩選規則可用於封鎖或允許 CDN 層的要求,這在以下情境中可能很有用:

  • 在新網站上線之前,限制特定網域存取公司內部流量
  • 建立速率限制,以減少受到容量 DoS 攻擊的影響
  • 防止已知的惡意 IP 位址目標定位您的頁面

大多數流量篩選器規則可供所有 AEM as a Cloud Service 網站和表單客戶使用。它們主要是根據要求屬性和請求標頭進行操作,包括 IP、主機名稱、路徑和使用者代理程式。

流量篩選規則的子類別需要增強的安全性授權或 WAF-DDoS 保護授權。這些強大的規則也稱為 WAF (Web 應用程式防火牆) 流量篩選規則 (或簡稱 WAF 規則),且可以存取本文稍後將進行說明 WAF 標幟

流量篩選規則可以透過 Cloud Manager 設定管道部署到生產 (非沙箱) 程式中的開發、中繼和生產環境類型。未來將推出對 RDE 的支援。

按照教學課程進行操作,快速建立有關此功能的具體專業知識。

本文的結構方式

本文章分為以下幾個章節:

  • 流量保護概觀:​了解如何保護您以避免受惡意流量的傷害。
  • 設定規則的建議流程:​閱讀關於保護網站的高級方法。
  • 設定:​了解如何設定、配置和部署流量篩選規則,包括進階的 WAF 規則。
  • 規則語法:​閱讀有關如何在 cdn.yaml 設定檔案宣告流量篩選規則。此包括可供所有 Sites 和 Forms 客戶使用的流量篩選規則,以及針對那些授權該功能者所提供的 WAF 規則子類別。
  • 規則範例:​查看已宣告的規則範例以協助您進行。
  • 速率限制規則:​了解如何使用速率限制規則保護您的網站避免受到大量的攻擊。
  • CDN 日誌:​查看哪些宣告的規則和 WAF 標幟與您的流量相符。
  • 儀表板工具:​分析您的 CDN 日誌以提出新的流量篩選規則。
  • 推薦的入門規則:​一組可以開始使用的入門規則。
  • 教學課程:​有關該功能的實用知識,包括如何使用儀表板工具宣告正確的規則。

我們邀請您透過傳送電子郵件至:aemcs-waf-adopter@adobe.com,以提供意見回饋或詢問有關流量篩選規則的問題。

流量保護概觀

在目前的數位環境中,惡意流量是一種揮之不去的威脅。我們認知到風險的嚴重性,並提供多種方法保護客戶應用程式,以及在發生時減輕攻擊。

在邊緣,Adobe Managed CDN 吸收網路
層上的 DoS 攻擊 (第 3 層和第 4 層),包括洪水攻擊和反射/放大攻擊。

預設情況下,Adobe 會採取措施防止因超出特定閾值的意外爆發高流量而導致效能下降。果發生影響網站可用性的 DoS 攻擊,Adobe 的營運團隊會收到警報並採取減輕影響的步驟。

客戶可以透過在不同層的內容傳遞流程設定規則,以採取主動式措施減輕應用程式層攻擊 (第 7 層)。

例如,在 Apache 層,客戶可以設定 Dispatcher 模組ModSecurity 以限制對特定內容的存取。

如本文所述,可以使用 Cloud Manager 的設定管道將流量篩選器規則部署到 Adobe Managed CDN。除了根據 IP 位址、路徑和標頭等屬性的流量篩選規則,或根據設定速率限制的規則之外,客戶也可以授權稱為 WAF 規則的強大流量篩選規則子類別。

建議的流程

以下是制定正確流量篩選規則的高階建議端到端流程:

  1. 設定非生產和生產設定管道,如設定章節的敘述。
  2. 已獲得 WAF 流量篩選規則子類別授權的客戶應於 Cloud Manager 加以啟用。
  3. 閱讀並嘗試本教學課程,以具體了解如何使用流量篩選規則,包括 WAF 規則 (若已獲得授權)。本教學課程將引導您將規則部署到開發環境、模擬惡意流量、下載 CDN 日誌,以及在儀表板工具中進行分析。
  4. 將推薦的入門規則複製到 cdn.yaml,並以日誌模式將設定部署到生產環境。
  5. 在收集一些流量之後,使用儀表板工具分析結果,以了解是否有任何符合的項目。留意誤報,並進行任何必要的調整,最終在區塊模式下啟用入門規則。
  6. 根據 CDN 日誌的分析新增自訂規則,首先在開發環境中使用模擬流量進行測試,然後以日誌模式部署到中繼和生產環境,然後以區塊模式部署。
  7. 持續監控流量,隨著威脅態勢的發展而進行規則的變更。

設定

  1. 首先,請在 Git 中建立以下資料夾和檔案結構的最高層級資料夾:

    config/
         cdn.yaml
    
  2. cdn.yaml 應包含中繼資料以及流量篩選規則和 WAF 規則的清單。

    kind: "CDN"
    version: "1"
    metadata:
      envTypes: ["dev"]
    data:
      trafficFilters:
        rules:
        # Block simple path
        - name: block-path
          when:
            allOf:
              - reqProperty: tier
                matches: "author|publish"
              - reqProperty: path
                equals: '/block/me'
          action: block
    

kind 參數應設定為 CDN,而版本則應設定為綱要版本,目前是 1。請進一步參閱下方範例。

  1. 如果 WAF 規則已獲得授權,則應在 Cloud Manager 中啟用該功能 (如下所述),對於新的和現有的計畫案例都適用。

    1. 若要對新計畫設定 WAF,在新增生產計畫時,請勾選「WAF-DDOS 防護」核取方塊 (在​安全性​標籤中)

    2. 若要在現有的計畫上設定 WAF,編輯您的計畫並在「安全性」標籤隨時取消勾選或勾選 WAF-DDOS 選項。

  2. 對於 RDE 以外的環境類型,請在 Cloud Manager 中建立鎖定目標的部署設定管道。

若為 RDE,會使用命令列,但目前不支援 RDE。

附註

  • 您可以使用 yq 在本機驗證設定檔的 YAML 格式 (例如 yq cdn.yaml)。

流量篩選規則語法

您可以將 traffic filter rules 設定為符合 IPS、使用者代理、要求標頭、主機名稱、地理位置和 URL 等模式。

授權強化的安全性或 WAF-DDoS 保護安全性產品的客戶,也可以設定特殊類別的流量篩選規則 WAF traffic filter rules (或簡稱為 WAF 規則),其參考一個或多個 WAF 標幟

以下是一組流量篩選規則的範例,其中也包括 WAF 規則。

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: "path-rule"
        when: { reqProperty: path, equals: /block-me }
        action:
          type: block
      - name: "Enable-SQL-Injection-and-XSS-waf-rules-globally"
        when: { reqProperty: path, like: "*" }
        action:
          type: block
          wafFlags: [ SQLI, XSS]

cdn.yaml 檔案中流量篩選規則的格式如下所述。請參閱後面章節的一些其他範例,和關於速率限制規則的獨立章節。

屬性 大部分流量篩選規則 WAF 流量篩選規則 類型 預設值 說明
名稱 X X string - 規則名稱 (64 個字元的長度,只能包含英數字元和 -)
時間 X X Condition - 基本結構是:

{ <getter>: <value>, <predicate>: <value> }

請參閱下面的條件結構語法,其中會說明 getter、述詞以及結合多個條件的方式。
動作 X X Action 記錄 記錄、允許、封鎖或動作物件。預設為記錄
rateLimit X RateLimit 未定義 速率限制設定。若未定義,則停用速率限制。

以下會有一個單獨的章節說明 rateLimit 語法以及範例。

條件結構

條件可以是一個簡單的條件,也可以是一個條件群組。

簡單條件

簡單條件由 getter 和述詞組成。

{ <getter>: <value>, <predicate>: <value> }

群組條件

條件群組由多個簡單和/或群組條件組成。

<allOf|anyOf>:
  - { <getter>: <value>, <predicate>: <value> }
  - { <getter>: <value>, <predicate>: <value> }
  - <allOf|anyOf>:
    - { <getter>: <value>, <predicate>: <value> }
屬性 類型 含義
allOf array[Condition] 作業。如果所有列出的條件都傳回 true,則為 true
anyOf array[Condition] 作業。如果任何列出的條件都傳回 true,則為 true

Getter

屬性 類型 說明
reqProperty string 要求屬性。

之一:
  • path:傳回不帶查詢參數的 URL 完整路徑。
  • queryString:傳回 URL 的查詢部分
  • method:傳回要求中所使用的 HTTP 方法。
  • tier:返回其中之一authorpreviewpublish
  • domain:傳回小寫的網域屬性 (如 Host 標頭的定義)
  • clientIp:傳回用戶端 IP 位址。
  • clientCountry:傳回兩個字母的代碼 (https://en.wikipedia.org/wiki/tw/Regional_indicator_symbol 識別客戶位於哪個國家。
reqHeader string 傳回具有指定名稱的要求標頭
queryParam string 傳回具有指定名稱的查詢參數
reqCookie string 傳回具有指定名稱的 Cookie
postParam string 從要求內文傳回具有指定名稱的 Post 參數。只有當內文為內容類型 application/x-www-form-urlencoded 時才有效

述詞

屬性 類型 含義
等於 string 如果 getter 結果等於所提供的值,則為 true
doesNotEqual string 如果 getter 結果不等於所提供的值,則為 true
like string 如果 getter 結果和所提供的模式相符,則為 true
notLike string 如果 getter 結果和所提供的模式不相符,則為 true
matches string 如果 getter 結果和所提供的 regex 相符,則為 true
doesNotMatch string 如果 getter 結果和所提供的 regex 不相符,則為 true
in array[string] 如果所提供的清單包含 getter 結果,則為 true
notIn array[string] 如果所提供的清單不包含 getter 結果,則為 true
存在 boolean 設定為 true 且屬性存在,或設為 false 且屬性不存在時為 true

附註

  • 要求屬性 clientIp 只能與以下述詞一起使用:equalsdoesNotEqualinnotInclientIp 也可以比對 IP 範圍 (在使用 innotIn 述詞時)。以下範例實作一個條件以評估用戶端 IP 是否在 192.168.0.0/24 的 IP 範圍內 (即從 192.168.0.0 到 192.168.0.255):
when:
  reqProperty: clientIp
  in: [ "192.168.0.0/24" ]
  • 我們建議使用 regex101,以及在搭配規則運算式時使用 Fastly Fiddle。您也可以在本文章中了解更多有關 Fastly 如何處理規則運算式的資訊。

動作結構

一個action可以是指定動作 (允許、封鎖或記錄) 的字串,也可以是由動作類型 (允許、封鎖或記錄) 以及 wafFlags 和/或狀態等選項組成的物件。

動作類型

動作根據下表中的類型排定優先順序,以反映動作的執行順序:

名稱 允許的屬性 含義
允許 wafFlags (可選) 如果沒有 wafFlags,則停止進一步處理規則並繼續提供回應。如果有 wafFlags,它將停用指定的 WAF 保護並繼續進一步處理規則。
封鎖 status, wafFlags (可選且互斥) 如果沒有 wafFlags,則繞過所有其他屬性傳回 HTTP 錯誤,錯誤代碼由狀態屬性定義或預設為 406。如果有 wafFlags,它將啟用指定的 WAF 保護並繼續進一步處理規則。
記錄 wafFlags (可選) 記錄規則已觸發的事實,否則不影響處理作業。wafFlags 沒有影響

WAF 標幟清單

在可授權 WAF 流量篩選規則中可以使用的 wafFlags 屬性,可以參考以下內容:

標幟 ID 標幟名稱 說明
SQLI SQL 注入 SQL 注入指試圖透過執行任意資料庫查詢以取得對應用程式的存取權或獲取特權資訊。
BACKDOOR 後門 後門訊號指試圖決定系統是否存在常見後門檔案的要求。
CMDEXE 命令執行 命令執行指試圖透過由使用者輸入的任意系統命令獲取控制或毀損目標系統。
XSS 跨網站指令碼 跨網站指令碼指試圖透過惡意 JavaScript 程式碼劫持使用者的帳戶或 Web 瀏覽工作階段。
周遊 目錄周遊 目錄周遊指試圖瀏覽整個系統中的特權檔案,期望能獲取敏感資訊。
USERAGENT 攻擊工具 攻擊工具指使用自動化軟體識別安全漏洞或試圖惡意探索發現的漏洞。
LOG4J-JNDI Log4J JNDI Log4J JNDI 攻擊會試圖惡意探索出現在 2.16.0 之前的 Log4J 版本中的 Log4Shell 漏洞
BHH 錯誤跳躍標頭 錯誤跳躍標頭指透過格式錯誤的傳輸編碼 (TE) 或內容長度 (CL) 標頭或格式正確的 TE 和 CL 標頭進行的 HTTP 走私嘗試
程式碼插入 程式碼插入 程式碼插入是指透過使用者輸入任意應用程式程式碼指令,試圖控制或破壞目標系統。
ABNORMALPATH 異常路徑 異常路徑指原始路徑和標準化路徑不同 (例如:/foo/./bar 會標準化為 /foo/bar)
DOUBLEENCODING 雙重編碼 雙重編碼會檢查雙重編碼 html 字元的規避技術
NOTUTF8 無效的編碼 無效的編碼可能會導致伺服器將要求中的惡意字元翻譯為回應,進而導致拒絕服務或 XSS
JSON-ERROR JSON 編碼錯誤 指定為在「Content-Type」要求標頭中包含 JSON 但包含 JSON 剖析錯誤的 POST、PUT 或 PATCH 要求內文。這經常和程式設計錯誤或自動化亦或惡意要求有關。
MALFORMED-DATA 要求內文中格式錯誤的資料 根據「Content-Type」要求標頭,格式錯誤的 POST、PUT 或 PATCH 要求內文。例如,如果指定了「Content-Type: application/x-www-form-urlencoded」要求標頭並包含 json 的 POST 內文。這經常是程式設計錯誤、自動化或惡意要求。需要代理程式 3.2 或更高版本。
SANS 惡意的 IP 流量 已被報告為參與了惡意活動的 SANS 網際網路風暴中心 IP 位址清單
NO-CONTENT-TYPE 缺少「Content-Type」要求標頭 沒有「Content-Type」要求標頭的 POST、PUT 或 PATCH 要求。在此案例中,預設情況下應用程式伺服器應假設「Content-Type: text/plain; charset=us-ascii」。許多自動化和惡意要求可能會缺少「內容類型」。
NOUA 沒有使用者代理程式 許多自動化和惡意要求會使用偽造的使用者代理程式或缺少使用者代理程式,這使得難以識別發出要求的裝置類型。
TORNODE Tor 流量 Tor 是可隱藏使用者身份的軟體。Tor 流量激增可能表示有攻擊者試圖掩飾其位置。
NULLBYTE 空位元 空位元通常不會出現在要求中,因為這表示該要求的格式錯誤且可能是惡意的。
PRIVATEFILE 私人檔案 私人檔案通常在本質上屬於機密性,例如 Apache .htaccess 檔案或可能洩漏敏感資訊的設定檔案
SCANNER 掃描程式 可識別熱門的掃描服務和工具
RESPONSESPLIT HTTP 回應拆分 會識別何時將 CRLF 字元作為輸入提交給應用程式,以將標頭注入 HTTP 回應
XML-ERROR XML 編碼錯誤 指定為在「Content-Type」要求標頭中包含 XML 但包含 XML 剖析錯誤的 POST、PUT 或 PATCH 要求內文。這經常和程式設計錯誤或自動化亦或惡意要求有關。

考量事項

  • 建立兩個衝突規則時,允許規則總是優先於封鎖規則。例如,如果您建立一條封鎖特定路徑的規則,又建立一條允許特定 IP 位址的規則,則來自遭封鎖路徑上的該 IP 位址的要求會受到允許。

  • 如果規則相符並遭封鎖,CDN 會以 406 傳回代碼回應。

  • 設定檔不應包含密碼,因為任何有權存取 git 存放庫的人都可以讀取。

  • 在 Cloud Manager 中定義的 IP 允許清單優先於流量篩選規則。

  • WAF 規則的符合項目只會出現在 CDN 未命中和通過的 CDN 記錄中,而非點擊的記錄中。

規則範例

下面是一些規則範例。如需進一步探討速率限制規則的範例,請參閱「速率限制」一節

範例 1

此規則會封鎖來自 IP 192.168.1.1 的要求:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
     rules:
       - name: "block-request-from-ip"
         when: { reqProperty: clientIp, equals: "192.168.1.1" }
         action:
           type: block

範例 2

此規則會使用包含 Chrome 的使用者代理程式封鎖發佈的路徑 /helloworld 上的要求:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: "block-request-from-chrome-on-path-helloworld-for-publish-tier"
        when:
          allOf:
          - { reqProperty: path, equals: /helloworld }
          - { reqProperty: tier, equals: publish }
          - { reqHeader: user-agent, matches: '.*Chrome.*'  }
        action:
          type: block

範例 3

此規則會封鎖包含查詢參數 foo 的要求,但會允許來自 IP 192.168.1.1 的每個要求:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: "block-request-that-contains-query-parameter-foo"
        when: { queryParam: url-param, equals: foo }
        action:
          type: block
      - name: "allow-all-requests-from-ip"
        when: { reqProperty: clientIp, equals: 192.168.1.1 }
        action:
          type: allow

範例 4

此規則會封鎖對路徑 /block-me 的要求,並封鎖和 SQLIXSS 模式相符的每個要求。此範例包含 WAF 流量篩選規則,其參考了 SQLIXSSWAF 標幟,因此需要單獨的授權。

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: "path-rule"
        when: { reqProperty: path, equals: /block-me }
        action:
          type: block
      - name: "Enable-SQL-Injection-and-XSS-waf-rules-globally"
        when: { reqProperty: path, like: "*" }
        action:
          type: block
          wafFlags: [ SQLI, XSS]

範例 5

此規則會封鎖對 OFAC 國家的存取:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: block-ofac-countries
        when:
          allOf:
            - reqProperty: tier
              matches: "author|publish"
            - reqProperty: clientCountry
              in:
                - SY
                - BY
                - MM
                - KP
                - IQ
                - CD
                - SD
                - IR
                - LR
                - ZW
                - CU
                - CI
        action: block

速率限制規則

有時,如果流量超過傳入要求的特定速率 (可能基於特定條件),則需要封鎖流量。設定 rateLimit 屬性的值會限制那些和規則條件相符的要求的速率。

速率限制規則不能參考 WAF 標幟。它們提供給所有網站和表單客戶使用。

速率限制是根據 CDN POP 計算的。例如,假設在蒙特婁、邁阿密和都柏林的 POP 的流量速率分別為每秒 80、90 和 120 個要求,且速率限制規則設定為上限 100。在這種情況下,只有到都柏林的流量會受到速率限制。

rateLimit 結構

屬性 類型 預設 含義
限制 10 到 10000 之間的整數 必要 觸發規則的要求速率是以每秒要求數為單位 (per CDN POP)。
視窗 整數列舉:1、10 或 60 10 計算要求速率的取樣期間 (秒數)。計數器的準確性取決於時間範圍的大小 (範圍愈大,準確度愈高)。例如,1 秒時間範圍的準確度預計為 50%,60 秒時間範圍的準確度預計為 90%。
懲罰 60 到 3600 之間的整數 300 (5 分鐘) 封鎖相符要求時間的秒數 (四捨五入到最接近的分鐘)。
groupBy array[Getter] 速率限制器計數器將由一組要求屬性 (例如 clientIp) 彙總。

範例

範例 1

當在過去 60 秒內超過 100 個要求/秒時 (per CDN POP),此規則將封鎖用戶端 5m:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
    - name: limit-requests-client-ip
      when:
        reqProperty: tier
        matches: "author|publish"
      rateLimit:
        limit: 60
        window: 10
        penalty: 300
        groupBy:
          - reqProperty: clientIp
      action: block

範例 2

當過去 60 秒內超過 100 個要求/秒時 (per CDN POP),就會封鎖路徑 /重要/資源上的要求 60 秒:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: rate-limit-example
        when: { reqProperty: path, equals: /critical/resource }
        action:
          type: block
        rateLimit: { limit: 100, window: 60, penalty: 60 }

CDN 記錄

AEM as a Cloud Service 會提供對 CDN 記錄的存取權,這對於包括快取命中率最佳化以及設定流量篩選規則等使用案例都非常有幫助。選取作者或發佈服務時,CDN 記錄會顯示在 Cloud Manager 下載記錄​對話框中。

CDN 記錄可能會延遲最多五分鐘。

rules 屬性描述要符合哪些流量篩選規則,並具有以下模式:

"rules": "match=<matching-customer-named-rules-that-are-matched>,waf=<matching-WAF-rules>,action=<action_type>"

例如:

"rules": "match=Block-Traffic-under-private-folder,Enable-SQL-injection-everywhere,waf="SQLI,SANS",action=block"

這些規則的行為方式如下:

  • 任何符合規則的客戶宣告規則名稱將列於 match 屬性中。
  • action 屬性確定規則是否具有封鎖、允許或記錄的影響。
  • 如果 WAF 已獲得授權並啟用,waf 屬性將列出所有偵測到的任何 WAF 標幟 (例如 SQLI),無論 WAF 標幟是否列於任何規則中。這是提供深入分析要宣告的潛在新規則。
  • 如果沒有客戶宣告的規則相符且沒有 WAF 規則相符,則 rules 屬性將為空。

如前所述,WAF 規則的符合項目只會出現在 CDN 未命中和通過的 CDN 記錄中,而非點擊的記錄中。

以下範例顯示了一個範例 cdn.yaml 和兩個 CDN 記錄條目:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: "path-rule"
        when: { reqProperty: path, equals: /block-me }
        action: block
      - name: "Enable-SQL-Injection-and-XSS-waf-rules-globally"
        when: { reqProperty: path, like: "*" }
        action:
          type: block
          wafFlags: [ SQLI, XSS ]
{
"timestamp": "2023-05-26T09:20:01+0000",
"ttfb": 19,
"cli_ip": "147.160.230.112",
"cli_country": "CH",
"rid": "974e67f6",
"req_ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
"host": "example.com",
"url": "/block-me",
"method": "GET",
"res_ctype": "",
"cache": "PASS",
"status": 406,
"res_age": 0,
"pop": "PAR",
"rules": "match=path-rule,action=blocked"
}
{
"timestamp": "2023-05-26T09:20:01+0000",
"ttfb": 19,
"cli_ip": "147.160.230.112",
"cli_country": "CH",
"req_ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
"rid": "974e67f6",
"host": "example.com",
"url": "/?sqli=%27%29%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL--%20fAPK",
"method": "GET",
"res_ctype": "image/png",
"cache": "PASS",
"status": 406,
"res_age": 0,
"pop": "PAR",
"rules": "match=Enable-SQL-Injection-and-XSS-waf-rules-globally,waf=SQLI,action=blocked"
}

記錄格式

以下是 CDN 記錄中使用的欄位名稱清單以及簡要說明。

欄位名稱 說明
timestamp TLS 終止後要求開始的時間。
ttfb 首位元組時間 (Time To First Byte) 的縮寫。發出要求開始到回應內文開始串流的時間之間的時間間隔。
cli_ip 用戶端 IP 位址。
cli_country 雙字母 ISO 3166-1 用戶端國家/地區的 alpha-2 國家/地區代碼。
rid 用於唯一識別要求的要求標頭的值。
req_ua 負責發出特定 HTTP 要求的使用者代理程式。
主機 發送要求的目標機構。
url 包括查詢參數的完整路徑。
方法 用戶端傳送的 HTTP 方法,例如「GET」或「POST」。
res_ctype 此內容類型用於指明資源的原始媒體類型。
cache 快取的狀態。可能的值包括 HIT、MISS 或 PASS
狀態 作為整數值的 HTTP 狀態代碼。
res_age 回應已經 (在所有的節點) 快取的時間量 (以秒為單位)。
pop CDN 快取伺服器的資料中心。
rules 任何符合的規則其名稱。

還會指出該相符程度是否導致封鎖。

例如,「match=Enable-SQL-Injection-and-XSS-waf-rules-globally,waf=SQLI,action=blocked

如果沒有相符的規則,則為空白。

儀表板工具

Adobe 提供了將儀表板工具下載到您電腦上的機制,以擷取透過 Cloud Manager 下載的 CDN 日誌。使用此工具,您可以分析流量,以協助制定要宣告的適當流量篩選規則,包括 WAF 規則。

儀表板工具可以直接從 AEMCS-CDN-Log-Analysis-ELK-Tool Github 存放庫原地複製。

關於如何使用儀表板工具的具體說明,請參閱教學課程

您可以將以下推薦的規則複製到您的 cdn.yaml 以開始使用。從日誌模式開始分析您的流量,在滿意之後,變更為封鎖模式。您可能想要根據網站即時流量的獨有特徵修改規則。

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev", "stage", "prod"]
data:
  trafficFilters:
    rules:
    #  Block client for 5m when it exceeds 100 req/sec on a time window of 1sec
    - name: limit-requests-client-ip
      when:
        reqProperty: path
        like: '*'
      rateLimit:
        limit: 100
        window: 1
        penalty: 300
        groupBy:
          - reqProperty: clientIp
      action: log
    # Block requests coming from OFAC countries
    - name: block-ofac-countries
      when:
        allOf:
          - { reqProperty: tier, equals: publish }
          - reqProperty: clientCountry
            in:
              - SY
              - BY
              - MM
              - KP
              - IQ
              - CD
              - SD
              - IR
              - LR
              - ZW
              - CU
              - CI
      action: log
    # Enable recommended WAF protections (only works if WAF is licensed enabled for your environment)
    - name: block-waf-flags-globally
      when:
        reqProperty: tier
        matches: "author|publish"
      action:
        type: log
        wafFlags:
          - SANS
          - TORNODE
          - NOUA
          - SCANNER
          - USERAGENT
          - PRIVATEFILE
          - ABNORMALPATH
          - TRAVERSAL
          - NULLBYTE
          - BACKDOOR
          - LOG4J-JNDI
          - SQLI
          - XSS
          - CODEINJECTION
          - CMDEXE
          - NO-CONTENT-TYPE
          - UTF8
    # Disable protection against CMDEXE on /bin (only works if WAF is licensed enabled for your environment)
    - name: allow-cdmexe-on-root-bin
      when:
        allOf:
          - reqProperty: tier
            matches: "author|publish"
          - reqProperty: path
            matches: "^/bin/.*"
      action:
        type: log
        wafFlags:
          - CMDEXE

教學課程

完成教學課程以獲得有關流量篩選規則的實用知識和經驗。

本教學課程將引導您完成:

  • 設定 Cloud Manager 設定管道
  • 使用工具模擬惡意流量
  • 宣告流量篩選規則,包括 WAF 規則
  • 使用儀表板工具分析結果
  • 最佳做法

本頁內容