Citrix WAF – 如何調整Signature

Citrix 的WAF本身具有Signature的資料庫,這個資料庫的來源是來自於”Snort”(有很耳熟的感覺嗎?)。一般在建置WAF時,工程師都會說”先開啟自動學習功能讓他跑一陣子”,但學習完後加入到阻擋規則就代表可以高枕無憂了嗎?是不是感覺好像還缺點什麼!

WAF自動學習的目的在於如何貼近網站實際的情況並且期望達到有效的防護,但除了學習之外,還有另外一個功能也是不能忽略的,那就是Signature了。

本編對於Signature的定義很簡單,”即為明確的漏洞並應做為預設的防護標的”。

上面這句話的意思是,Signature是由實際的攻擊手法演變而成的防護方式,既然有跡可詢,程式人員在開發時,本就應該針對這種可被用來攻擊的語法使用方式進行規避,因為你使用了與Signature相同的語法,就代表著別人也能用相同的語法來攻擊你的網站,也許不一定能取得到有用的資料,但這個風險就一直存在著。

但一個網站成立許久,歷經了多少次的改版,可能前前後後有多少網頁開發人員的心血在裡面,也不可能每個人都懂網頁的攻擊手法(總是也要給我們一口飯吃嘛!),那難免就有些語法無可避免的會與Signature相同了。

本編今天寫這篇文章的用意就是當網站與Signature相同時,要如何在最大限度的開啟防護同時,又不能擋住現有服務的運作。

 

在接下來的說明中,有一些會涉及到細部的操作,我不會特別說明,畢竟這篇內容並不是在教操作,主要是說明如何調整Signature。在這裡我模擬的情境是,當Signature套用時,其中一條剛好與網頁開發人員在用的方式相同,也就使得網頁無法正常運作,因此我需要單獨將這一條Signature關閉。

 

設定並套用Signature

要調整Signature,當然第一步要先有啟用才能調整啊!

所以在這裡要先客製一份專門給該網站用的Signature,在這裡我是把所有資料庫有的Signature都開啟並套用了。原則上,Signature的開啟是需要與網頁開發人員討論的,針對有用到的語言套用防護即可。

 

進行網站測試

開啟網頁並輸入了URL,使用者反應某些網頁開啟會出現Block網頁。(這裡看到了我打的這一連串網址,有沒有人猜到我要使用什麼漏洞啊!)

我們到了Citrix的Log來找答案,看是哪條規則阻擋了連線。

將Log放大來看,我們發現了使用者的網頁被阻擋的原因,”rule ID 20620: web-client corehttp long buffer overflow attempt”

我們來查一下”ID 20620”在說什麼,上面有說到Citrix的Signature是Snort,那在Snort的網站就可以查到相對應的Rule。

https://www.snort.org/rule_docs/1-20620

由上述說明可以清楚的了解碰到這樣的Signature會發生什麼樣的事,也說明這個Signature會影響的版本是什麼,與網頁開發人員討論,沒有使用這個系統及其版本,但要讓網頁正常的運作,因此我們要將這個Signature關閉。

 

調整Signature

來關閉Signature ”ID 20620”吧!

重新套用規則,來看看是否正常運作吧!

 

網站再測試

好啦!這個網站本來就是不存在的嘛!不要強求了,不過從這也可以看到,再次輸入一樣的字串,這次並不會被擋下來了,同樣的,我們也來看看Citrix的Log吧!

長的亂七八糟的URL。

看到反白的的字了嗎?最後執行的結果是不阻擋,這也確認了Signature是有正確的關閉了。

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.