這是一個重要的問題,尤其對我們而言。
網頁應用程式防火牆 (Web Application Firewall, WAF) 顧名思義,是用來保護網頁應用程式,對抗各式各樣針對網頁應用程式的攻擊的,當壞人的攻擊對象從網路轉向伺服器、再轉向應用系統,攻擊內容從網路層向上爬升到應用層時,好人的防禦措施也從防火牆、IDS逐步演進為 AP Firewall、IPS 等,而隨著 WWW 佔了極大量的網際網路服務比重與惡意攻擊比重,既有的對抗措施又不足以聚焦與回應針對 Web 的攻擊,才衍生出 WAF 這個特殊的資安產品類別。
我們從去年底推出網頁應用程式防火牆產品 SmartWAF,正式跨足 WAF 產品領域以來,可以看到客戶對 WAF 的期望:
1.簡單,好用 (那是當然的)
2.設定簡單(最好不用設定),免維護免管理,讓你忘了它的存在 (呃...)
3.防禦能力滴水不漏,刀槍不入
如果真的有那麼好就好了.....
系統在安裝佈署、管理維護、設定調校上的改進是各家持續努力的目標,這部份也是比較容易讓使用者感受到的效果。以 SmartWAF 來說,安裝系統用不到五分鐘就完成,加上基本的黑名單設定,不到十五分鐘便可佈署完成,怕誤擋還可以開成影子模式觀察有沒有誤擋的 Log ,而這僅僅需要十五分鐘的設定,就已經可以阻擋許多常見的網頁程式攻擊如 SQL Injection、 XSS 等,以及許多網頁弱點掃描程式的探測,而這時,還沒有使用到 SmartWAF 的白名單自動學習功能。
什麼? SmartWAF 有白名單學習功能?是唬爛的吧?
並沒有唬爛,只是我們的人在提供產品試用與操作說明時,的確很少使用到白名單自動學習功能,有些同業道聽塗說、以訛傳訛,還真的以為 SmartWAF 的白名單自動學習功能還在開發中,殊不知名為 Parameter Ruleset Creation Wizard 早已經可以從 HTTP Requests 自動學習並建立白名單,在最近推出的 SmartWAF v2.5 還新增了一個從 HTTP Responses 自動學習並建立規則的 Suggest Rules Wizard ,需要手動設定的部份又更少了!
而 SmartWAF 中的 Vulnerability Description Import Wizard ,可以將 CodeSecure 的源碼檢測報告直接匯入 SmartWAF 並產生出相對應的防護規則,直接針對弱點與弱點的進入點重點防護,更精準也更可靠。
以上的這些設定,總共設定起來也不到30分鐘(不含自動學習的期間),還沒有繁複的 Regular Expressions ,就可以將黑白名單設定完畢,常見攻擊也幾乎一網打盡,不知道這樣對使用者來說夠不夠方便了?
當然,還是會有觀察影子模式的紀錄中有沒有誤擋並且進行微調與排除的工作,這似乎很難避免,我們也在嘗試更好更快更簡單的方法,希望不久的未來就有新功能面世。
話說回來,當WAF設定了黑名單與白名單後,是不是就真的萬無一失、滴水不漏了?從 Wayne 之前發表的blog中(這裡 和 這裡)就可以發現,BH & DC 都有講師提及 WAF 的使用限制,Arian Evans提的編碼問題就是一個例子,SmartWAF 可以解 URL Encoding ,但是如果碰上編碼過的 JavaScript ,尤其是多重編碼過的 JavaScript 也是沒輒,只能希望白名單能有效限制 XSS 的發揮空間了。
Wendel 的 打穿 WAF(Wayne 的敘述)其實將 WAF 的限制整理的很好,例如他也有提到編碼,另外 XSS 的變形也是相當頭痛的,Rsnake 的 XSS Cheat Sheet 就列出了上百種變形攻擊的方法,要用黑名單窮舉是一件很要命的事,搭配白名單的限制功能也不容易完全防範,想要 100% Security,光靠 WAF 真的不容易,因為問題的根源還是在於程式的漏洞。
講到 Wendel 就先小小離題一下,他的觀念是對的,去利用這些跡象找出攻擊對象使用哪台 WAF 進行防禦,這是可以辦得到的,但是先決條件仍然是攻擊對象未妥善設定 WAF 。至於攻擊穿透 WAF 又是另一回事了,許多 WAF 的設定人員未必使用預設的規則來提供防護,加上白名單護體,就算知道攻擊對象用哪一種 WAF ,也未必就因此輕鬆穿了過去,即便是只有97%的防禦率,要真的能打穿也並不是就那麼的容易啊。
所以我們通常都跟客戶說的很清楚:『期望裝了 SmartWAF 後就天下太平,防火防水又防彈,網頁應用程式的漏洞也不用補,這樣有點不切實際,SmartWAF 的最大效益是可以爭取更多的時間,讓網頁應用程式漏洞有比較從容的時間修復,並且能夠顧及網頁應用程式以外的安全問題,例如 Session 、 Cookie 或 HTTP Method 等應用程式以外的安全問題。』在這樣的前提下, WAF 的防禦能力是否達到100%就不是最重要的事情了。
你期待的 WAF 又是什麼呢?
作者 Wisely 為 阿碼科技 產品經理
8 篇回應 :
"以上的這些設定,總共設定起來也不到30分鍾(不含自動學習的期間),還沒有繁複的 Regular Expressions ,就可以將黑白名單設定完畢"
不太懂耶.. 圖上面看起來rule就是"Regular Expressions"!?
是啊,那些規則,那些Regular Expressions,是 Wizard 自動產生的,使用者不需要自己設定,不需要自己撰寫,這樣才叫做 Wizard 啊 ;-)
在操作 Wizard 的過程中,系統已經自動撰寫了以 Regular Expressions 描述的規則,使用者還是看得到 Regular Expressions,但是大部分情形下不需要接觸與修改,而有經驗或是有特殊需求的使用者也保有自行增刪改的權力,不會因為 Wizard 太自動而喪失彈性。
說到軟體式WAF,國外甚至有3-4套免費的,看起來功能似乎也差不多,是不是可以作一些比較?
此外這類的WAF會讓人擔心對原有網站loading的影響,是否有查詢次數與loading的統計數據?
其實 SmartWAF 這個產品我們公司有測試過一段時間。的確安裝跟設定都不需要很多時間。
但是我們公司的網頁流量是非常大的,最後 Log 報表的地方跑不太出來。後來有更新一下版本是有解決。
我個人是認為,資安產品都是那種很難去評估能夠提供多少安全上的效用。要說服老闆這個東西很有用,報表功能一定也是要多加強的地方。
當然 SmartWAF 在功能面上,考慮了相當多。可是如果報表數據說服不了出錢的老闆買的話。那可就沒辦法了...
WAF的核心功能其實大同小異,只是實現手法有所不同而已,甚至有人使用Apache的Rewrite module就可以做出基本的WAF功能。
軟體式WAF遭遇的問題,常常是支援平台以及管理功能的差異,這兩點是最大的差異。
以支援平台來說,開源碼社群中最有名的ModSecurity目前僅支援Apache,WebKnight僅支援IIS,對岸也有幾套支援IIS的,很少有像SmartWAF這樣IIS/Apache/Tomcat/WebLogic/WebSphere...這樣廣泛支援的。
而管理功能與管理介面更是差異頗大。SmartWAF可以做到Policy集中管裡、集中派送、Log集中管理等,而ModSecurity要達到相近功能,必須使用好幾套軟體拼裝而成。
至於SmartWAF消耗的資源以及對系統的影響,這種影響一定是會有的,但是在大部分的環境中(例如有HT或Dual Core的CPU,記憶體1G,CPU loading Avg. <=80%)這樣的影響是難以感受到的。此外效能數據比較不容易有一個衡量的基準(要開多少Rules?system loading?平台/Web Server?),以後有機會的話我把數據整理整理再發表一篇,連同軟體式WAF的效能問題與迷思一併發表。
To Black Jack,
多謝指教,事實上Log與報表的部分我們也在持續加強中,新的2.5版除了原有的功能之外,還可以統計各台Web Server上的資源(CPU/MEM/Disk Usage...)使用率,並有臨界自動E-Mail警示功能,此外條件搜尋後的Logs也可匯出下載,比過去更為方便,也更便於產出報表。
而您提及的統計報表功能則是我們下一階段的加強目標,我們很歡迎您的意見與指教,這樣可以讓我們的產品更加貼近客戶的期待。
@三樓友:
謝謝你的問題!這是很棒的問題。
我在 Black Hat 第二天一文(http://armorize-cht.blogspot.com/2008/08/black-hat- 2008_18.html#ARIAN)有提到:「其實我深深覺得資安業,找對公司比找對產品重要多了。不論是源碼檢測或 Web 防火牆,如果賣方只是想塞產品給您,那麼買了再好的,牌子在大的產品也沒有用,一樣會失敗,最後還是會發生資安事件。如果找對好的 partner,有心服務客戶,長期經營,技術能量也夠,那即使用免費的開放源碼 ModSecurity 做 Web 防火牆,一樣能設定到讓您高枕無憂」。
在 DEFCON 第一天一文也有提到:「...WAF 是資安團隊的工具,在來不及把弱點修改好之前,WAF 可以提供一定程度的防禦力。但是 WAF 不是買來就好,重點是設定」。
謝謝 Wisely 的回答,我自己的看法是,先不論商業產品跟開放源碼 / 免費 WAF 誰做得好,但是我一直覺得,投資 security 產品,選團隊是一個大重點,一個常被忽略的重點。以前看好多 mailing list / 討論區上的辯論,總是有一群人覺得世界根本不需要有 WAF,他們用種種方法做起來又快又好,系統搞得多安全,WAF 簡直是廢物,還會吃資源跟影響回應速度。就如 Wisely 之前提的,「甚至有人使用Apache的Rewrite module就可以做出基本的WAF功能」。
商業的 WAF 做的,是設法滿足客戶種種需求,例如 Black Jack 提的報表功能(感謝您的意見!),而達到節省客戶時間的目的。再加上商業 WAF 後面有完整的服務支援,是其具有吸引力的兩個原因。
外面也是有很多資安團隊,利用免費的 WAF 來提供服務給客戶。我認為只要他們有辦法設定好,滿足客戶需求,這是很可行的作法。可是阿碼當初決定無法採用免費的 WAF,因為阿碼的客戶需求很廣,我們對自己的品質要求也很高,如果要用免費 WAF 來整合,會花我們太多時間,所以才會有 SmartWAF 的誕生。
最後關於 SmartWAF 與免費 WAF 功能上的比較,Wisely 下一篇應該會做一個整理。再次感謝!
想請教,當被對方公司WAF檔了後,我該如何讓對方取消擋我的ip.
遇到的狀況是,對方說我被國際組織例入黑名單,但對方又不知是那個一國際組織,
dnsbl我查過了.都正常.想請問.WAF是參考那些單位的黑名單.我又該如何解決ip被鎖的狀況.
還請多幫幫忙
張貼留言