在Fastly層級封鎖Adobe Commerce的惡意流量

本文說明如何封鎖前往商店的不想要的流量,不僅是為了回應惡意威脅,也是地理篩選的一種方法。

雲端基礎結構上的Adobe Commerce (和Fastly CDN)提供多種工具,可管理流向您商店的流量,以回應DDoS攻擊等惡意威脅。 此外,即使未偵測到惡意意圖,您也可以封鎖來自特定國家或地區的請求,以符合業務政策、法規要求或其他營運需求。

受影響的產品和版本:

  • 雲端基礎結構上的Adobe Commerce 2.3.x

在本文中,我們假設您已擁有惡意IP及/或其國家/地區和使用者代理。 雲端基礎結構上的Adobe Commerce使用者通常可以從Adobe Commerce支援取得此資訊。 以下小節提供根據此資訊封鎖流量的步驟。 所有變更都應在生產環境中完成。

存取管理面板

如果您的網站被DDoS超載,您可能無法登入您的Commerce管理員(並執行本文中進一步說明的所有步驟)。

若要存取Admin,請依照啟用或停用維護模式並將您的IP位址列入白名單中的說明,將您的網站置於維護模式。 完成後停用維護模式。

依IP封鎖流量

對於雲端基礎結構存放區上的Adobe Commerce而言,按特定IP位址和子網路封鎖流量的最有效方式是在Commerce管理員中新增Fastly的ACL。 以下是包含更多詳細指示連結的步驟:

  1. 在Commerce管理員中,瀏覽至​商店 > 設定 > 進階 > 系統 > 全頁快取 > Fastly設定。
  2. 使用您要封鎖的IP位址或子網路清單,建立新的ACL。
  3. 將其新增到ACL清單並封鎖,如Adobe Commerce的Fastly_Cdn模組的封鎖指南中所述。

依國家/地區封鎖流量

對於雲端基礎結構存放區上的Adobe Commerce而言,按國家/地區封鎖流量的最有效方式是在Commerce管理員中新增Fastly的ACL。

  1. 在Commerce管理員中,瀏覽至​商店 > 設定 > 進階 > 系統 > 全頁快取 > Fastly設定。
  2. 選取國家/地區並使用ACL設定封鎖,如用於Adobe Commerce的Fastly_Cdn模組的封鎖指南中所述。

依使用者代理程式封鎖流量

若要根據使用者代理建立封鎖,您需要將自訂VCL程式碼片段新增到Fastly設定。 若要這麼做,請執行下列步驟:

  1. 在Commerce Admin​中,導覽至​Stores > Configuration > Advanced > System > Full Page Cache。
  2. 然後​Fastly Configuration > Custom VCL Snippets。
  3. 依照Fastly_Cdn模組的自訂VCL程式碼片段指南中的說明,建立新的自訂程式碼片段。 您可以使用以下程式碼範例作為範例。 此範例不允許AhrefsBot使用者代理程式的流量。
name: block_bad_useragents
  type: recv
  priority: 5
  VCL:
  if ( req.http.User-Agent ~ "(AhrefsBot)" ) {
      error 405 "Not allowed";
  }

依JA3/JA4/OH簽名封鎖流量(從Newrelic擷取JA3、JA4和OHFP值)

  1. 建立字典:瀏覽至​Admin > Store > Configuration > System > Full page cache > Fastly configuration > Edge Dictionary​並建立此範例區塊:

    code language-none
    #table ja3_blocklist:
    table ja3_blocklist {
        "********************************": "********************************",
    }
    
    #table ja4_blocklist:
    table filter_bad_ja4 {
        "************************************": "************************************",
    }
    
  2. 接著新增VCL以封鎖上述表格中列出的任何JA3、JA4:

    code language-none
    name: block_traffic_ja3_ja4
    type: recv
    priority: 5
    
    VCL:
    if (req.restarts == 0 && fastly.ff.visits_this_service == 0) {
      if(table.contains(ja3_blocklist, tls.client.ja3_md5)){
        error 403;
      }
      if(table.contains(ja4_blocklist, tls.client.ja4)){
        error 403;
      }
    }
    
  3. 根據OHFP的區塊範例:

    code language-none
    #table ohfp_h2fp_blocklist
    table ohfp_h2fp_blocklist {
        "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx":"xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx",
    }
    
  4. 然後新增VCL以封鎖上述表格中所列的任何OHFP:

    code language-none
    # Snippet block_ohfp_h2fp
    name: block_ohfp_h2fp
    type: recv
    Priority: 5
    
    if (table.contains(ohfp_h2fp_blocklist, fastly_info.oh_fingerprint)) {
      error 403 "Forbidden";
    }
    

速率限制(實驗性Fastly功能)

在雲端基礎結構上有Adobe Commerce的實驗Fastly功能,可讓您指定特定路徑和爬蟲的速率限制。 如需詳細資訊,請參考Fastly模組檔案。

功能必須先在測試環境中經過全面測試,才能用於生產環境,因為這樣可能會封鎖合法的流量。

建議:請考慮更新robots.txt

更新您的robots.txt檔案有助於防止某些搜尋引擎、爬蟲和機器人抓取某些頁面。 不應抓取的頁面範例為搜尋結果頁面、結帳、客戶資訊等。 避免自動機制抓取這些頁面,有助於減少這些自動機制產生的請求數量。

使用robots.txt時,有兩個重要的考量事項:

  • 機器人可以忽略您的robots.txt。 尤其是惡意程式碼自動機制,它會掃描網頁以找出安全漏洞,而垃圾郵件傳送者使用的電子郵件地址收集器則不會受到任何注意。
  • robots.txt檔案是公開可用的檔案。 任何人都可以看到您不希望機器人使用的伺服器區段。

基礎資訊和預設Adobe Commerce robots.txt設定可在開發人員檔案的搜尋引擎機器人文章中找到。

如需robots.txt的一般資訊和建議,請參閱:

請與您的開發人員和/或SEO專家合作,決定您要允許哪些使用者代理,或您想禁止哪些使用者代理。

相關閱讀

recommendation-more-help
commerce-knowledge-base-help