ASM網關支援對接WAF,並且可以通過自訂訪問日誌格式來查看WAF對回源請求添加的Header,更方便線上營運。本文介紹如何使用ASM網關對接WAF,以及如何使用ASM的自訂訪問日誌能力進行調試。
前提條件
已部署入口網關。具體操作,請參見建立入口網關。
已添加叢集到ASM執行個體。具體操作,請參見添加叢集到ASM執行個體。
已部署httpbin應用,並暴露在網關的80連接埠。具體操作,請參見部署httpbin應用。
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接入
登入Web Application Firewall控制台,按照您的需求單擊購買訂用帳戶或開通隨用隨付,仔細確認地區等配置項後,單擊立即購買建立WAF3.0執行個體。如果您已建立WAF執行個體,可以使用已有執行個體。
在左側導覽列,選擇接入管理。在接入管理頁面,選擇雲產品接入頁簽,單擊CLB(TCP),在右側地區單擊接入。
在接入資產-四層CLB面板列表中,找到網關綁定的CLB,單擊添加連接埠。選擇ASM網關上的對應連接埠。連接埠配置完,單擊確定。
本文選擇的是HTTP協議的80連接埠。如果您需要選擇HTTPS協議,需要在此處配置HTTPS認證。
說明您可以登入ASM控制台,在網關詳情頁查看網關對應的CLB執行個體資訊。
選中啟用流量標記。配置三個Header,然後單擊確定,完成配置。
如果請求攜帶該Header,則可以認為該請求經過了WAF防護。三個Header的內容分別是:自訂Header
customwaftag:customwaftagvalue、用戶端真實源IPclientrealip以及用戶端真實源連接埠clientrealport。
方式二:CNAME接入
登入Web Application Firewall控制台,按照您的需求單擊購買訂用帳戶或開通隨用隨付,仔細確認地區等配置項後,單擊立即購買建立WAF3.0執行個體。如果您已建立WAF執行個體,可以使用已有執行個體。
在左側導覽列,選擇接入管理,然後在接入管理頁面,選擇CNAME接入頁簽,單擊接入。
在配置監聽設定精靈,進行相關配置,單擊下一步。
中國內地的WAF會校正網域名稱是否備案。請填寫有效網域名稱,避免校正失敗。配置樣本如下。

在配置轉寄設定精靈,負載平衡演算法選中IP hash,伺服器位址選中IP,填寫ASM網關的公網地址。選中啟用流量標記,添加三個Header,其他配置項保持預設,單擊提交。
該配置會在通過WAF發往ASM網關的請求中添加對應的三個Header。三個Header的內容分別是:自訂Headercustomwaftag:customwaftagvalue、用戶端真實源IPclientrealip以及用戶端真實源連接埠clientrealport。

在接入完成設定精靈,單擊複製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此處並沒有使用原始網域名稱訪問。如需使用原始網域名稱訪問,請您自行修改網域名稱解析規則,將原始網域名稱解析到WAF提供的CNAME地址。
步驟四:查看網關日誌中WAF添加的Header值
登入ASM控制台,在左側導覽列,選擇。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇。
在網關日誌標籤頁的文字框中輸入418,單擊查詢/分析。
您可以看到日誌中已經列印出了WAF添加的Header值。

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