流量篩選器規則(包括WAF規則)的範例和結果分析

瞭解如何宣告各種型別的流量篩選規則,並使用Adobe Experience Manager as a Cloud Service (AEMCS) CDN記錄和儀表板工具來分析結果。

在本節中,您將探索流量篩選規則的實用範例,包括WAF規則。 您將瞭解如何使用AEM WKND Sites專案,根據URI (或路徑)、IP位址、要求數目和不同的攻擊型別來記錄、允許和封鎖要求。

此外,您將瞭解如何使用儀表板工具來擷取AEMCS CDN記錄,並透過Adobe提供的範例儀表板將基本量度視覺化。

為符合您的特定需求,您可以增強和建立自訂儀表板,進而獲得更深入的見解,並最佳化AEM網站的規則設定。

範例

讓我們探索各種流量篩選規則的範例,包括WAF規則。 請確定您已依照先前如何設定章節所述完成必要的設定程式,且您已複製AEM WKND Sites專案

記錄請求

首先針對AEM Publish服務​ 記錄WKND登入和登出路徑 ​的請求。

  • 將下列規則新增至WKND專案的/config/cdn.yaml檔案。
kind: CDN
version: '1'
metadata:
  envTypes:
    - dev
    - stage
    - prod
data:
  trafficFilters:
    rules:
    # On AEM Publish service log WKND Login and Logout requests
      - name: publish-auth-requests
        when:
          allOf:
            - reqProperty: tier
              matches: publish
            - reqProperty: path
              in:
                - /system/sling/login/j_security_check
                - /system/sling/logout
        action: log
  • 提交變更並將其推送到Cloud Manager Git存放庫。

  • 使用先前建立的Cloud Manager Dev-Config設定管道將變更部署到AEM開發環境

    Cloud Manager設定管道

  • 在Publish服務上登入並登出您程式的WKND網站(例如,https://publish-pXXXX-eYYYY.adobeaemcloud.com/us/en.html)以測試規則。 您可以使用asmith/asmith作為使用者名稱和密碼。

    WKND登入

分析 analyzing

讓我們從Cloud Manager下載AEMCS CDN記錄檔,並使用您在上一章中設定的儀表板工具,來分析publish-auth-requests規則的結果。

  • Cloud Manager的​ 環境 ​卡下載AEMCS Publish ​服務的CDN記錄。

    Cloud Manager CDN記錄下載

    note tip
    TIP
    新請求可能需要5分鐘的時間才會出現在CDN記錄檔中。
  • 將下載的記錄檔(例如底下熒幕擷圖中的publish_cdn_2023-10-24.log)複製到Elastic Dashboard工具專案的logs/dev資料夾中。

    ELK工具記錄檔資料夾 {width="800" modal="regular"}

  • 重新整理「彈性儀表板」工具頁面。

    • 在前​ 個全域篩選器 ​區段中,編輯aem_env_name.keyword篩選器並選取dev環境值。

      ELK工具全域篩選器

    • 若要變更時間間隔,請按一下右上角的日曆圖示,然後選取想要的時間間隔。

      ELK工具時間間隔

  • 檢閱更新儀表板的​ 分析請求已標幟的請求 ​和​ 已標幟請求詳細資料 ​面板。 為了比對CDN記錄專案,它應該顯示每個專案的使用者端IP (cli_ip)、主機、url、動作(waf_action)和規則名稱(waf_match)的值。

    ELK工具儀表板

封鎖要求

在此範例中,讓我們在已部署的WKND專案中位於路徑/content/wknd/internal的​ 內部 ​資料夾中新增頁面。 然後,宣告流量篩選規則,該規則將​ 封鎖來自符合您組織(例如公司VPN)的指定IP位址以外任何位置的子頁面的流量

您可以建立自己的內部頁面(例如,demo-page.html)或使用附加的封裝

  • 在WKND專案的/config/cdn.yaml檔案中新增下列規則:
kind: CDN
version: '1'
metadata:
  envTypes:
    - dev
    - stage
    - prod
data:
  trafficFilters:
    rules:
    ...

    # Block requests to (demo) internal only page/s from public IP address but allow from internal IP address.
    # Make sure to replace the IP address with your own IP address.
      - name: block-internal-paths
        when:
          allOf:
            - reqProperty: path
              matches: /content/wknd/internal
            - reqProperty: clientIp
              notIn: [192.150.10.0/24]
        action: block
  • 提交變更並將其推送到Cloud Manager Git存放庫。

  • 使用Cloud Manager中先前建立的 Dev-Config設定管道將變更部署到AEM開發環境。

  • 存取WKND網站的內部頁面(例如https://publish-pXXXX-eYYYY.adobeaemcloud.com/content/wknd/internal/demo-page.html)或使用下列CURL命令測試規則:

    code language-bash
    $ curl -I https://publish-pXXXX-eYYYY.adobeaemcloud.com/content/wknd/internal/demo-page.html
    
  • 從規則中使用的IP位址重複上述步驟,然後使用不同的IP位址(例如使用行動電話)。

分析

若要分析block-internal-paths規則的結果,請遵循與先前範例中說明的相同步驟。

不過,這次您應該會在使用者端IP (cli_ip)、主機、URL、動作(waf_action)和規則名稱(waf_match)欄中看到​ 封鎖的要求 ​和對應值。

ELK工具儀表板封鎖的要求

防止DoS攻擊

讓​ 透過封鎖IP位址的請求來避免DoS攻擊,每秒發出100個請求,導致其被封鎖5分鐘。

kind: CDN
version: '1'
metadata:
  envTypes:
    - dev
    - stage
    - prod
data:
  trafficFilters:
    rules:
    ...
    #  Prevent DoS attacks by blocking client for 5 minutes if they make more than 100 requests in 1 second.
      - name: prevent-dos-attacks
        when:
          reqProperty: path
          like: '*'
        rateLimit:
          limit: 100
          window: 1
          penalty: 300
          groupBy:
            - reqProperty: clientIp
        action: block
WARNING
針對您的生產環境,請與您的Web安全性團隊共同作業,以決定rateLimit的適當值,
  • 認可、推播和部署變更,如先前範例中所述。

  • 若要模擬DoS攻擊,請使用下列Vegeta命令。

    code language-shell
    $ echo "GET https://publish-pXXXX-eYYYY.adobeaemcloud.com/us/en.html" | vegeta attack -rate=120 -duration=5s | vegeta report
    

    此命令會在5秒內發出120個請求並輸出報表。 如您所見,成功率為32.5%;其餘部分會收到406 HTTP回應代碼,表示流量遭封鎖。

    Vegeta DoS攻擊

分析

若要分析prevent-dos-attacks規則的結果,請遵循與先前範例中說明的相同步驟。

這次您應該會在使用者端IP (cli_ip)、主機、URL、動作(waf_action)和規則名稱(waf_match)欄中看到許多​ 已封鎖的要求 ​和對應的值。

ELK工具儀表板DoS要求

此外,使用者端IP、國家/地區和使用者代理程式的​ 前100名攻擊 ​面板會顯示其他詳細資料,可用來進一步最佳化規則設定。

ELK工具儀表板DoS前100個請求

如需如何防止DoS和DDoS攻擊的詳細資訊,請檢閱使用流量篩選規則封鎖DoS和DDoS攻擊教學課程。

WAF規則

目前為止的流量篩選器規則範例可供所有Sites和Forms客戶設定。

接下來,讓我們針對已購買增強式安全性或WAF-DDoS保護授權的客戶,探索其使用體驗,該授權可讓他們設定進階規則,以保護網站免受更複雜的攻擊。

在繼續之前,請啟用程式的WAF-DDoS保護,如流量篩選規則檔案設定步驟中所述。

不含WAFFlags

讓我們先看看在WAF規則宣告之前的體驗。 當您的程式啟用WAF-DDoS時,您的CDN會依預設記錄任何相符的惡意流量,因此您擁有正確的資訊以提出適當的規則。

我們從攻擊WKND網站開始,但不新增WAF規則(或使用wafFlags屬性)並分析結果。

  • 若要模擬攻擊,請使用下面的Nikto命令,它會在6分鐘內傳送約700個惡意要求。

    code language-shell
    $ ./nikto.pl -useragent "AttackSimulationAgent (Demo/1.0)" -D V -Tuning 9 -ssl -h https://publish-pXXXX-eYYYY.adobeaemcloud.com/us/en.html
    

    Nikto攻擊模擬

    若要瞭解攻擊模擬,請檢閱Nikto - Scan Tuning檔案,其中會說明如何指定要包含或排除的測試攻擊型別。

分析

若要分析攻擊模擬的結果,請遵循與先前範例中所述的相同步驟。

不過,這次您應該會在使用者端IP (cli_ip)、主機、URL、動作(waf_action)和規則名稱(waf_match)欄中看到​ 標幟的要求 ​和對應值。 此資訊可讓您分析結果並最佳化規則設定。

ELK工具儀表板WAF標幟的要求

請注意​ WAF旗標分佈 ​和​ 熱門攻擊 ​面板如何顯示其他詳細資訊,可用來進一步最佳化規則設定。

ELK工具儀表板WAF標籤攻擊要求

ELK工具儀表板WAF熱門攻擊要求

具有WAFFlags

現在,新增包含wafFlags屬性的WAF規則做為action屬性的一部分,並​ 封鎖模擬的攻擊要求

從語法的角度來看,WAF規則與先前所見者類似,不過,action屬性參考一或多個wafFlags值。 若要深入瞭解wafFlags,請檢閱WAF旗標清單區段。

  • 在WKND專案的/config/cdn.yaml檔案中新增下列規則。 請注意,block-waf-flags規則如何包含某些受到模擬惡意流量攻擊時出現在儀表板工具中的wafFlags。 事實上,隨著威脅的演變,長期分析記錄以判斷要宣告哪些新規則是很好的做法。
kind: CDN
version: '1'
metadata:
  envTypes:
    - dev
    - stage
    - prod
data:
  trafficFilters:
    rules:
    ...
    # Enable WAF protections (only works if WAF is enabled for your environment)
      - name: block-waf-flags
        when:
          reqProperty: tier
          matches: "author|publish"
        action:
          type: block
          wafFlags:
            - SANS
            - TORNODE
            - NOUA
            - SCANNER
            - USERAGENT
            - PRIVATEFILE
            - ABNORMALPATH
            - TRAVERSAL
            - NULLBYTE
            - BACKDOOR
            - LOG4J-JNDI
            - SQLI
            - XSS
            - CODEINJECTION
            - CMDEXE
            - NO-CONTENT-TYPE
            - UTF8
  • 認可、推播和部署變更,如先前範例中所述。

  • 若要模擬攻擊,請使用與之前相同的Nikto命令。

    code language-shell
    $ ./nikto.pl -useragent "AttackSimulationAgent (Demo/1.0)" -D V -Tuning 9 -ssl -h https://publish-pXXXX-eYYYY.adobeaemcloud.com/us/en.html
    
分析

重複與先前範例中說明的相同步驟。

這次您應該會在​ 已封鎖的要求 ​下看到專案,以及使用者端IP (cli_ip)、主機、URL、動作(waf_action)和規則名稱(waf_match)欄中的對應值。

ELK工具儀表板WAF已封鎖的要求

此外,WAF旗標分佈 ​和​ 熱門攻擊 ​面板會顯示其他詳細資料。

ELK工具儀表板WAF標籤攻擊要求

ELK工具儀表板WAF熱門攻擊要求

全面分析

在上述​ 分析 ​區段中,您已瞭解如何使用儀表板工具來分析特定規則的結果。 您可以進一步探索使用其他控制面板面板的分析結果,包括:

  • 已分析、已標幟和已封鎖的要求
  • WAF標示一段時間內的分佈
  • 一段時間內觸發的流量篩選規則
  • 依WAF旗標ID排名最前的攻擊
  • 排名在前的觸發流量篩選器
  • 依使用者端IP、國家/地區和使用者代理程式區分的前100名攻擊者

ELK工具儀表板綜合分析

ELK工具儀表板綜合分析

下一步

熟悉建議的最佳實務,以降低安全性遭到破壞的風險。

其他資源

流量篩選器規則語法

CDN記錄格式

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69