Citrix 進行特定 User-Agent 的阻擋
如果需要在 Citrix ADC 上針對特定網站(例如 api.aaa.com
)進行特定 User-Agent
的阻擋,可以基於虛擬服務 (Virtual Server) 或 Host
標頭進行精確匹配。以下是詳細步驟:
方法 1:基於虛擬服務 (Virtual Server)
假設 api.aaa.com
綁定到一個特定的虛擬服務,則可以直接對該虛擬服務配置 Responder Policy 或 Rewrite Policy。
步驟
-
找到虛擬服務
- 登入 Citrix ADC 管理界面。
- 前往 Traffic Management > Load Balancing > Virtual Servers。
- 找到綁定
api.aaa.com
的虛擬服務。
-
創建 Responder Policy
- 前往 AppExpert > Responder > Policies。
- 點擊 Add,輸入以下內容:
- Policy Name:例如
BlockUserAgentForAPI
. - Rule:
HTTP.REQ.HEADER("Host").EQ("api.aaa.com") && HTTP.REQ.HEADER("User-Agent").CONTAINS("某關鍵字")
- Action:選擇 DROP 或 Redirect(例如引導到一個錯誤頁)。
- Policy Name:例如
-
綁定到虛擬服務
- 編輯對應的虛擬服務。
- 在 Responder Policies 部分,綁定剛創建的 Policy。
-
測試效果
- 使用工具(如
curl
或 Postman),模擬包含匹配的User-Agent
訪問api.aaa.com
,應該會被阻擋。
- 使用工具(如
方法 2:基於 HTTP Host Header 的精確匹配
如果 api.aaa.com
與其他應用共享同一虛擬服務,可以基於 Host
標頭進行條件判斷。
步驟
-
創建 Responder Policy
- 配置條件如下:
HTTP.REQ.HEADER("Host").EQ("api.aaa.com") && HTTP.REQ.HEADER("User-Agent").CONTAINS("某關鍵字")
- 動作可以設為:
- DROP:直接丟棄請求。
- Redirect:引導至一個錯誤頁面,例如:
HTTP.REQ.URL.SET_TEXT_MODE("http://error-page.yourdomain.com")
- 配置條件如下:
-
綁定到虛擬服務
- 在對應虛擬服務的 Policies 區域進行綁定。
-
測試效果
方法 3:使用 Rewrite 改寫或拒絕請求
改寫方式
如果你不想丟棄請求,而是改變特定 User-Agent 的行為,可以用 Rewrite Policy 改寫請求,例如修改 User-Agent
為通用值或添加額外標頭:
-
Rewrite Policy 條件
HTTP.REQ.HEADER("Host").EQ("api.aaa.com") && HTTP.REQ.HEADER("User-Agent").CONTAINS("某關鍵字")
-
Rewrite Action
- 替換
User-Agent
:HTTP.REQ.HEADER("User-Agent").SET_TEXT("DefaultUserAgent")
- 添加自定義標頭:
HTTP.REQ.HEADER("X-Blocked").SET_TEXT("Blocked")
- 替換
-
綁定到虛擬服務
方法 4:使用 Application Firewall (更高級別保護)
若已啟用 Application Firewall,可基於 Host
和 User-Agent
配置策略:
-
創建 Application Firewall Profile
- 添加一個自定義 Profile,啟用 Signatures。
- 創建自定義簽名:
- 名稱:例如
BlockUAForAPI
- 條件:
HTTP.REQ.HEADER("Host").EQ("api.aaa.com") && HTTP.REQ.HEADER("User-Agent").CONTAINS("某關鍵字")
- 名稱:例如
-
綁定 Profile 至虛擬服務
測試命令範例
可以使用以下命令測試效果:
curl -H "Host: api.aaa.com" -H "User-Agent: 特定關鍵字" http://<你的 ADC IP>/path
這將模擬請求,並確認是否阻擋成功。
如果有更多需求或複雜場景,可以提供更多細節,我將協助進一步優化配置!