全部產品
Search
文件中心

Alibaba Cloud Service Mesh:使用ASM網關對接WAF

更新時間:Jan 14, 2025

ASM網關支援對接WAF,並且可以通過自訂訪問日誌格式來查看WAF對回源請求添加的Header,更方便線上營運。本文介紹如何使用ASM網關對接WAF,以及如何使用ASM的自訂訪問日誌能力進行調試。

前提條件

WAF功能介紹

Web Application Firewall(Web Application Firewall,簡稱WAF)為您的網站或App業務提供一站式安全防護。WAF可以有效識別Web業務流量的惡意特徵,在對流量清洗和過濾後,將正常、安全的流量返回給伺服器,避免網站伺服器被惡意入侵導致效能異常等問題,從而保障網站的業務安全和資料安全。

步驟一:將ASM網關接入WAF

ASM支援四層CLB和CNAME這兩種方式接入WAF。兩種方式使用情境不同,請根據需求選擇。

  • 四層CLB接入(推薦):將ASM網關的CLB接入(原SLB)。這種方式可以直接將網關的所有流量接入WAF。所有到達網關CLB的請求都會執行WAF規則。

  • CNAME接入:將指定網域名稱的請求接入。如果一個ASM網關上有多個網域名稱,並非所有網域名稱都需要WAF防護,可以採用這種方式。

    說明

    CNAME接入需要修改網域名稱的DNS的解析規則。請將您的網域名稱先指向WAF代理,然後WAF再將請求傳給ASM網關。

方式一:四層CLB接入

  1. 登入Web Application Firewall控制台,按照您的需求單擊購買訂用帳戶開通隨用隨付,仔細確認地區等配置項後,單擊立即購買建立WAF3.0執行個體。如果您已建立WAF執行個體,可以使用已有執行個體。

  2. 在左側導覽列,選擇接入管理。在接入管理頁面,選擇雲產品接入頁簽,單擊CLB(TCP),在右側地區單擊接入

  3. 接入資產-四層CLB面板列表中,找到網關綁定的CLB,單擊添加連接埠。選擇ASM網關上的對應連接埠。連接埠配置完,單擊確定

    本文選擇的是HTTP協議的80連接埠。如果您需要選擇HTTPS協議,需要在此處配置HTTPS認證。

    說明

    您可以登入ASM控制台,在網關詳情頁查看網關對應的CLB執行個體資訊。

  4. 選中啟用流量標記。配置三個Header,然後單擊確定,完成配置。

    如果請求攜帶該Header,則可以認為該請求經過了WAF防護。三個Header的內容分別是:自訂Headercustomwaftag:customwaftagvalue用戶端真實源IPclientrealip以及用戶端真實源連接埠clientrealport

方式二:CNAME接入

  1. 登入Web Application Firewall控制台,按照您的需求單擊購買訂用帳戶開通隨用隨付,仔細確認地區等配置項後,單擊立即購買建立WAF3.0執行個體。如果您已建立WAF執行個體,可以使用已有執行個體。

  2. 在左側導覽列,選擇接入管理,然後在接入管理頁面,選擇CNAME接入頁簽,單擊接入

  3. 配置監聽設定精靈,進行相關配置,單擊下一步

    中國內地的WAF會校正網域名稱是否備案。請填寫有效網域名稱,避免校正失敗。配置樣本如下。

    接入網域名稱配置監聽

  4. 配置轉寄設定精靈,負載平衡演算法選中IP hash伺服器位址選中IP,填寫ASM網關的公網地址。選中啟用流量標記,添加三個Header,其他配置項保持預設,單擊提交

    該配置會在通過WAF發往ASM網關的請求中添加對應的三個Header。三個Header的內容分別是:自訂Headercustomwaftag:customwaftagvalue用戶端真實源IPclientrealip以及用戶端真實源連接埠clientrealport

    接入網域名稱配置轉寄

  5. 接入完成設定精靈,單擊複製CNAME,記錄WAF提供的CNAME地址,然後單擊完成

    說明

    採用CNAME接入,需要您將此處配置的網域名稱的DNS記錄指向WAF提供的CNAME地址。

(可選)步驟二:自訂ASM訪問日誌格式

經過WAF校正的請求可能會攜帶一些特殊的Header。例如,步驟一配置轉寄時在請求中添加了一個自訂Header和兩個標識請求源IP、源連接埠的Header。在將線上應用接入WAF時,如果不能在調用鏈路的日誌中看到這個Header,將會給鏈路聯調造成極大困難。這種情況下,您可以使用ASM可觀測能力的自訂訪問日誌功能。具體操作,請參見自訂資料面訪問日誌

步驟三:測試是否接入WAF成功

方式一:採用四層CLB接入

使用四層CLB接入WAF,直接存取網關的IP地址。在瀏覽器中輸入${ASM網關IP地址}:80/status/418

預期輸出:

-=[ teapot ]=-

       _...._
     .'  _ _ `.
    | ."` ^ `". _,
    \_;`"---"`|//
      |       ;/
      \_     _/
        `"""`

方式二:採用CNAME接入

使用WAF提供的CNAME地址,執行以下命令,訪問httpbin應用的/status/418路徑。

curl -HHost:${WAF處配置的網域名稱}  "http://${WAF提供的CNAME地址}/status/418" -v

展開查看預期輸出

*   Trying x.x.x.x:80...
* Connected to geszcfxxxxxxxxxxxxxxxxxxxxppbeiz.aliyunwaf1.com (x.x.x.x) port 80 (#0)
> GET /status/418 HTTP/1.1
> Host:xxxx
> User-Agent: curl/7.84.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 418 Unknown
< Date: Wed, 22 Feb 2023 05:07:23 GMT
< Content-Length: 135
< Connection: keep-alive
< Set-Cookie: acw_tc=0bc1599a16770424432844282e82xxxxxxxxxxxxxxxxxxx1ad989e7e5245f;path=/;HttpOnly;Max-Age=1800
< server: istio-envoy
< x-more-info: http://tools.ietf.org/html/rfc2324
< access-control-allow-origin: *
< access-control-allow-credentials: true
< x-envoy-upstream-service-time: 1
<
-=[ teapot ]=-

       _...._
     .'  _ _ `.
    | ."` ^ `". _,
    \_;`"---"`|//
      |       ;/
      \_     _/
        `"""`
說明

此處並沒有使用原始網域名稱訪問。如需使用原始網域名稱訪問,請您自行修改網域名稱解析規則,將原始網域名稱解析到WAF提供的CNAME地址。

步驟四:查看網關日誌中WAF添加的Header值

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇可觀測管理中心 > 日誌中心

  3. 網關日誌標籤頁的文字框中輸入418,單擊查詢/分析

    您可以看到日誌中已經列印出了WAF添加的Header值。日誌中心

對接完成之後,您可以登入WAF控制台配置其他更進階的防護能力,保護您的網站不受攻擊。如果您還有其他自訂Header需要全鏈路觀測,請參考步驟二中的方式配置。