解析Web應用防火墻中主動防御模塊設計
防火墻這類IDS設備隨著Web應用的爆炸式成長,對于應用層尤其是HTTP應用層就顯得越來越表現(xiàn)出弱勢,大規(guī)模SQL自動注入讓Web安全越來越被人們所關注,Web應用防火墻也就應運而生。顧名思義,Web應用防火墻(Web Application Firewall,下面簡稱WAF)是專注于Web應用層上的應用級防火墻。其原理是利用WAF可以有效地阻止各類針對Web應用的攻擊,比如SQL注入、XSS攻擊等。
目前,國內(nèi)的Windows平臺WAF基本上都是由IIS Filter來實現(xiàn),或者直接基于Apache ModSecurity(可以做獨立反向代理服務器)。WAF從其部署上來看,可以有多找那個模式,比如可以內(nèi)嵌于Web Server中(IIS ISAPI或者Apache模塊)也可以做反向代理或者作為路由模式。國內(nèi)目前的WAF其設計模式基本上全部基于第一種模式,也就是基于特征碼檢測的機制,比如開源的WebKnight 、Snort等。
先從第一種模式談起,這種模式的檢測機制是依靠不斷更新的特征碼來抵御各類Web攻擊,類似于目前的殺毒軟件病毒庫,其風險是一旦有新型變形關鍵字,就可以輕易繞過此類Web應用防火墻的檢測。
而且這類基于關鍵字檢測識別的防御模式(第一種模式),在很多情況下只是簡單的關鍵字查找,正則表達式匹配等這類非常初級的特征碼檢測技術手段,基本上都沒有去基于某種完備的特征碼識別理論,純粹依靠開發(fā)者的個人功底來實現(xiàn)這部分的特征碼檢測核心模塊。那么這部分WAF其實是非常簡陋的,包括WebKnight在內(nèi),很多WAF都存在同樣的問題。Port80Software的ServerDefender也是同樣的檢測機制,只是它基于一定的檢測理論支持,而非簡單的字符串識別這么簡單的匹配規(guī)則。Snort相對比較成熟,在特征碼檢測匹配方面采用了改進的BM算法。
第一種模式并非完美,但是也是必不可少的,只是需要基于某些成熟的特征碼檢測識別理論,其安全性才會大大加強。
第二種模式則各家實現(xiàn)各不相同,但本質上是一樣的,就是允許在生產(chǎn)部署之前,通過手動或者自動學習模式來完成其安全檢測知識庫的構建。從這一點來看,比較類似于語音識別軟件。語音識別軟件首先會讓用戶朗讀各種典型應用的文字段落,從中不斷學習和識別關鍵語音片段。WAF的主動防御模式就是基于此基礎來實現(xiàn)。
WAF主動防御模式有的廠商實現(xiàn)為在生產(chǎn)環(huán)境下通過自動學習并將學習知識庫即時應用,但是并不建議這種做法.因為對于關鍵應用而言,一旦出現(xiàn)失誤就直接導致關鍵Web應用被此WAF阻擋,那可就是耽誤了大事。
WAF主動防御的自動模式可以在部署前的完整測試環(huán)境下開啟,以便快速構建主動防御知識庫(Active Defense Repository)。
1. 首次上線
WAF主動防御機器人 –> 循環(huán)遍歷需要保護的Web網(wǎng)站(上線前測試環(huán)境下)-> 構建主動防御知識庫 –> 人工審核辨別知識庫條目,并編輯 –> 測試主動防御知識庫 -> 正式部署Web App+WAF到生產(chǎn)環(huán)境,并開啟主動防御模式。
2. 迭代更新階段
此階段的特點是,每次網(wǎng)站程序更新幅度較小,為迭代式增量更新模式。
手動開啟WAF機器人 -> 檢索新目錄或新應用程序站點 -> 構建增量主動防御知識庫 ->人工審核確認知識庫條目;
或者直接手動在主動防御知識庫中添加需要的知識條目即可。
3. 主動防御知識庫管理
管理員可以隨時手工管理知識庫中的知識條目,并幫助主動防御模塊學習更新的知識條目。
之所以不在生產(chǎn)環(huán)境下開啟WAF框架層的自動學習,也是為了避免知識條目噪聲的出現(xiàn)。
有機結合基于成熟理論的特征碼檢測機制與主動防御檢測機制,就可以在最大程度上保證Web應用程序的安全。
當然,治本的話還是需要開發(fā)人員從源碼級別來做到抵御各類Web攻擊才對,不過由于實際情況往往不是預想的那么理想,在越來越多的場景中需要WAF來加以補充和配合。但接觸WAF首先要明確的就是,并不是說有了WAF,開發(fā)人員就不必關心Web安全了。
Web應用防火墻中主動防御模塊設計的分析就為大家介紹完了,希望讀者已經(jīng)理解和掌握。
【編輯推薦】