簡述WEB防火墻的主要特點(diǎn)
WEB防火墻已經(jīng)被企業(yè)所廣泛認(rèn)知,不論是企業(yè)的WEB應(yīng)用還是企業(yè)WEB網(wǎng)站,WEB防火墻都成為了企業(yè)安全的防護(hù)手段之一。但是企業(yè)對于WEB防火墻究竟針對何種問題仿佛概念模糊,安全產(chǎn)品廠商又因?yàn)樽约旱睦斫獠煌沟肳EB防火墻略有不同。那么,本文就為您介紹一下WEB防火墻的主要特點(diǎn),以便企業(yè)安全管理員的使用和引進(jìn)。
異常檢測協(xié)議
如果閱讀過各種RFC,就會(huì)發(fā)現(xiàn)一個(gè)被反復(fù)強(qiáng)調(diào)的主題。大多數(shù)RFC建議應(yīng)用自己使用協(xié)議時(shí)要保守,而對于接受其他發(fā)送者的協(xié)議時(shí)可以自由些。Web服務(wù)器就是這樣做的,但這樣的行為也給所有的攻擊者打開了大門。幾乎所有的WAF對HTTP的請求執(zhí)行某種異常檢測,拒絕不符合Http標(biāo)準(zhǔn)的請求。并且,它也可以只允許HTTP協(xié)議的部分選項(xiàng)通過,從而減少攻擊的影響范圍。甚至,一些WAF還可以嚴(yán)格限定HTTP協(xié)議中那些過于松散或未被完全制定的選項(xiàng)。
增強(qiáng)的輸入驗(yàn)證
就頻繁發(fā)生的Web安全問題而言,有些是源于對Web設(shè)計(jì)模型的誤解,有些則來自于程序師認(rèn)為瀏覽器是可信的。很多WEB程序員用JavaScript在瀏覽器上實(shí)現(xiàn)輸入驗(yàn)證。而瀏覽器只是一個(gè)用戶控制的簡單工具,因此攻擊者可以非常容易地繞過輸入驗(yàn)證,直接將惡意代碼輸入到WEB應(yīng)用服務(wù)器。
有一個(gè)解決上述問題的正確方法,就是在服務(wù)端進(jìn)行輸入驗(yàn)證。如果這個(gè)方法不能實(shí)現(xiàn),還可以通過在客戶和應(yīng)用服務(wù)器之間增加代理,讓代理去執(zhí)行Web頁面上嵌入的JavaScript,實(shí)現(xiàn)輸入驗(yàn)證。
消極的安全模型VS積極的安全模型
曾經(jīng)設(shè)置過防火墻規(guī)則的人,可能會(huì)碰到這樣的建議:允許已知安全的流量,拒絕其他一切訪問。這就是一種很好的積極安全模型。恰恰相反,消極安全模型則是默認(rèn)允許一切訪問,只拒絕一些已知危險(xiǎn)的流量模式。
每種安全模型方式都存在各自的問題:
消極安全模型:什么是危險(xiǎn)的?
積極安全模型:什么是安全的?
消極安全模式通常使用的更多。識別出一種危險(xiǎn)的模式并且配置自己的系統(tǒng)禁止它。這個(gè)操作簡單而有趣,卻不十分安全。它依賴于人們對于危險(xiǎn)的認(rèn)識,如果問題存在,卻沒有被意識到(這種情況很常見),就會(huì)為攻擊者留下可趁之機(jī)。
積極安全模式(又稱為白名單模式)看上去是一種制定策略的更好方式,非常適于配置防火墻策略。在Web應(yīng)用安全領(lǐng)域中,積極安全模式通常被概括成對應(yīng)用中的每一個(gè)腳本的枚舉。對枚舉的每一個(gè)腳本,需要建立一個(gè)相應(yīng)列表,表中內(nèi)容如下所示:
◆ 允許的請求方式(比如,GET/POST或者只POST)
◆ 允許的Content-Type
◆ 允許的Content-Length
◆ 允許的參數(shù)
◆ 指定參數(shù)和可選參數(shù)
◆ 參數(shù)類型(比如,文本或整數(shù))
◆ 附加參數(shù)限制
上述列表僅僅是個(gè)例子,實(shí)際的積極安全模式通常包括更多的要素。它試圖從外部完成程序員本應(yīng)從內(nèi)部完成的工作:為提交到Web應(yīng)用的信息驗(yàn)證每一個(gè)比特。如果肯花時(shí)間的話,使用積極安全模式就是一個(gè)比較好的選擇。這個(gè)模式的難點(diǎn)之一,在于應(yīng)用模式會(huì)隨著應(yīng)用的發(fā)展而改變。每當(dāng)應(yīng)用中添加新腳本或更改舊腳本,就需要更新模式。但是,它適用于保護(hù)那些穩(wěn)定的、無人維護(hù)的舊應(yīng)用。
自動(dòng)開發(fā)策略可以解決以上問題:
◆ 一些WAF能夠監(jiān)視流量,并根據(jù)這些流量數(shù)據(jù)自動(dòng)配置策略,有些產(chǎn)品可以實(shí)時(shí)進(jìn)行這樣的工作。
◆ 通過白名單,可以標(biāo)識特定的IP地址是可信的,然后,依據(jù)觀察的流量,配置WAF,更新安全策略。
◆ 如果通過一個(gè)全面的衰減測試,(仿真正確的行為,)來創(chuàng)建一個(gè)應(yīng)用,并且在WAF處于監(jiān)控狀態(tài)時(shí)執(zhí)行測試,那么WAF可以自動(dòng)生成策略。
可見,沒有哪個(gè)模式是完全令人滿意的。消極安全模式適用于處理已知問題,而積極安全模式則適用于穩(wěn)定的Web應(yīng)用。理想的做法是,在現(xiàn)實(shí)生活中,將二者結(jié)合使用,取長補(bǔ)短。#p#
及時(shí)補(bǔ)丁
積極安全模式理論上更好一些因?yàn)闉g覽器和WEB應(yīng)用程序之間的通信協(xié)議通過HTML規(guī)范進(jìn)行了很好的定義?,F(xiàn)在的Web開發(fā)語言都可以處理帶有多個(gè)參數(shù)的 HTTP請求。因?yàn)檫@些參數(shù)在Web防火墻中都是可見的,因此WEB防火墻可以分析這些參數(shù)判斷是否存在允許該請求。,
當(dāng)一個(gè)應(yīng)用中的漏洞被發(fā)現(xiàn)時(shí)大多數(shù)情況下我們會(huì)盡可能在代碼中修補(bǔ)它。受諸多因素的影響(如應(yīng)用的規(guī)模,是否有開發(fā)人員,法律問題等等 ),開發(fā)補(bǔ)丁的過程可能需要幾分鐘,或者一直到無限長的是時(shí)間。這些時(shí)間正是攻擊者發(fā)起攻擊的好機(jī)會(huì)。
如果開發(fā)人員能夠在非常短的時(shí)間內(nèi)在代碼中修補(bǔ)好漏洞,那你就不用擔(dān)心了。但如果修補(bǔ)這個(gè)漏洞需要花費(fèi)幾天,甚至幾周來修復(fù)呢?Web應(yīng)用防火墻就是處理這個(gè)問題的理想工具:只要給一個(gè)安全專家不錯(cuò)的WAF和足夠的漏洞信息,他就能在不到一個(gè)小時(shí)的時(shí)間內(nèi)屏蔽掉這個(gè)漏洞。當(dāng)然,這種屏蔽掉漏洞的方式不是非常完美的,并且沒有安裝對應(yīng)的補(bǔ)丁就是一種安全威脅,但我們在沒有選擇的情況下,任何保護(hù)措施都比沒有保護(hù)措施更好。
及時(shí)補(bǔ)丁的原理可以更好的適用于基于XML的應(yīng)用中,因?yàn)檫@些應(yīng)用的通信協(xié)議都具規(guī)范性。
基于規(guī)則的保護(hù)和基于異常的保護(hù)
現(xiàn)在市場上大多數(shù)的產(chǎn)品是基于規(guī)則的WAF。其原理是每一個(gè)會(huì)話都要經(jīng)過一系列的測試,每一項(xiàng)測試都由一個(gè)過多個(gè)檢測規(guī)則組成,如果測試沒通過,請求就會(huì)被認(rèn)為非法并拒絕。
基于規(guī)則的WAFs很容易構(gòu)建并且能有效的防范已知安全問題。當(dāng)我們要制定自定義防御策略時(shí)使用它會(huì)更加便捷。但是因?yàn)樗鼈儽仨氁紫却_認(rèn)每一個(gè)威脅的特點(diǎn),所以要由一個(gè)強(qiáng)大的規(guī)則數(shù)據(jù)庫支持。WAF生產(chǎn)商維護(hù)這個(gè)數(shù)據(jù)庫,并且他們要提供自動(dòng)更新的工具。
這個(gè)方法不能有效保護(hù)自己開發(fā)的WEB應(yīng)用或者零日漏洞(攻擊者使用的沒有公開的漏洞),這些威脅使用基于異常的WAF更加有效。
異常保護(hù)的基本觀念是建立一個(gè)保護(hù)層,這個(gè)保護(hù)層能夠根據(jù)檢測合法應(yīng)用數(shù)據(jù)建立統(tǒng)計(jì)模型,以此模型為依據(jù)判別實(shí)際通信數(shù)據(jù)是否是攻擊。理論上,一但構(gòu)建成功,這個(gè)基于異常的系統(tǒng)應(yīng)該能夠探測出任何的異常情況。擁有了它,我們不再需要規(guī)則數(shù)據(jù)庫而且零日攻擊也不再成問題了。但基于異常保護(hù)的系統(tǒng)很難構(gòu)建,所以并不常見。因?yàn)橛脩舨涣私馑墓ぷ髟硪膊幌嘈潘?,所以它也就不如基于?guī)則的WAF應(yīng)用廣范。
狀態(tài)管理
HTTP的無狀態(tài)性對Web應(yīng)用安全有很多負(fù)面影響。會(huì)話只能夠在應(yīng)用層上實(shí)現(xiàn),但對許多應(yīng)用來說這個(gè)附加的功能只能滿足業(yè)務(wù)的需要而考慮不到安全因素了。Web防火墻則將重點(diǎn)放在會(huì)話保護(hù)上,它的特征包括:
強(qiáng)制登錄頁面。在大多數(shù)站點(diǎn), 你可以從任何你所知道的URL上訪問站點(diǎn),這通常方便了攻擊者而給防御增加了困難。WAF能夠判斷用戶是否是第一次訪問并且將請求重定向到默認(rèn)登錄頁面并且記錄事件。
分別檢測每一個(gè)用戶會(huì)話。如果能夠區(qū)分不同的會(huì)話,這就帶來了無限的可能。比如,我們能夠監(jiān)視登陸請求的發(fā)送頻率和用戶的頁面跳轉(zhuǎn)。通過檢測用戶的整個(gè)操作行為我們可以更容易識別攻擊。
對暴力攻擊的識別和響應(yīng)。通常的Web應(yīng)用網(wǎng)絡(luò)是沒有檢測暴力攻擊的。有了狀態(tài)管理模式,WAF能檢測出異常事件(比如登陸失?。?,并且在達(dá)到極限值時(shí)進(jìn)行處理。此時(shí)它可以增加更多的身份認(rèn)證請求的時(shí)間,這個(gè)輕微的變化用戶感覺不到,但對于足以對付自動(dòng)攻擊腳本了。如果一個(gè)認(rèn)證腳本需要50毫秒完成,那它可以發(fā)出大約每秒20次的請求。如果你增加一點(diǎn)延時(shí),比如說,一秒種的延遲,那會(huì)將請求降低至每秒不足一次。與此同時(shí),發(fā)出進(jìn)一步檢測的警告,這將構(gòu)成一個(gè)相當(dāng)好的防御。
實(shí)現(xiàn)會(huì)話超時(shí)。超出默認(rèn)時(shí)間會(huì)話將失效,并且用戶將被要求重新認(rèn)證。用戶在長時(shí)間沒有請求時(shí)將會(huì)自動(dòng)退出登錄。
會(huì)話劫持的檢測和防御。許多情況下,會(huì)話劫持會(huì)改變IP地址和一些請求數(shù)據(jù)(HTTP請求的報(bào)頭會(huì)不同)。狀態(tài)監(jiān)控工具能檢測出這些異常并防止非法應(yīng)用的發(fā)生。在這種情況下應(yīng)該終止會(huì)話,要求用戶重新認(rèn)證,并且記錄一個(gè)警告日志信息。
只允許包含在前一請求應(yīng)答中的鏈接。一些WAF很嚴(yán)格,只允許用戶訪問前一次請求返回頁面中的鏈接。這看上去是一個(gè)有趣的特點(diǎn)但很難得到實(shí)施。一個(gè)問題在于它不允許用戶使用多個(gè)瀏覽器窗口,另一個(gè)問題是它令使用JavaScript自動(dòng)建立連接的應(yīng)用失效。
其他防護(hù)技術(shù)
WAF的另外一些安全增強(qiáng)的功能用來解決WEB程序員過分信任輸入數(shù)據(jù)帶來的問題。比如:
隱藏表單域保護(hù)。有時(shí),內(nèi)部應(yīng)用數(shù)據(jù)通過隱藏表單變量實(shí)現(xiàn),而它們并不是真的隱藏的。程序員通常用隱藏表單變量的方式來保存執(zhí)行狀態(tài),給用戶發(fā)送數(shù)據(jù),以確保這些數(shù)據(jù)返回時(shí)未被修改。這是一個(gè)復(fù)雜繁瑣的過程,WAF經(jīng)常使用密碼簽名技術(shù)來處理。
Cookies保護(hù)。和隱藏表單相似的是,cookies經(jīng)常用來傳遞用戶個(gè)人的應(yīng)用數(shù)據(jù),而不一樣的是,一些cookies可能含有敏感數(shù)據(jù)。WAFs 通常會(huì)將整個(gè)內(nèi)容加密,或者是將整個(gè)cookies機(jī)制虛擬化。有了這種設(shè)置,終端用戶只能夠看到cookies令牌(如同會(huì)話令牌),從而保證 cookies在WAF中安全地存放
抗入侵規(guī)避技術(shù)?;诰W(wǎng)絡(luò)的IDS對付WEB攻擊的問題就是攻擊規(guī)避技術(shù)。改寫HTTP輸入請求數(shù)據(jù)(攻擊數(shù)據(jù))的方式太多,并且各種改寫的請求能夠逃避IDS探測。在這個(gè)方面如果能完全理解HTTP就是大幅度的改進(jìn)。比如,WAF每次可以看到整個(gè)HTTP請求,就可以避免所有類型的HTTP請求分片的攻擊。因?yàn)楹芎玫牧私釮TTP協(xié)議,因此能夠?qū)?dòng)態(tài)請求和靜態(tài)請求分別對待,就不用花大量時(shí)間保護(hù)不會(huì)被攻擊的靜態(tài)數(shù)據(jù)。這樣WAF可以有足夠的計(jì)算能力對付各種攻擊規(guī)避技術(shù), 而這些功能由NIDSs完成是很耗時(shí)的。
響應(yīng)監(jiān)視和信息泄露保護(hù)。信息泄露防護(hù)是我們給監(jiān)視HTTP輸出數(shù)據(jù)的一個(gè)名稱。從原理上來說它和請求監(jiān)視是一樣的,目的是監(jiān)視可疑的輸出,并防止可疑的 http輸出數(shù)據(jù)到達(dá)用戶。最有可能的應(yīng)用模式是監(jiān)視信用卡號和社會(huì)保險(xiǎn)號。另外,這個(gè)技術(shù)的另一項(xiàng)應(yīng)用是發(fā)現(xiàn)成功入侵的跡象。因?yàn)橛薪?jīng)驗(yàn)攻擊者總會(huì)給信息編碼來防止監(jiān)測,所以防止這樣有決心并技術(shù)熟練的攻擊者獲取信息是很困難的。但是,在攻擊者沒有完全掌控服務(wù)器而僅僅嘗試WEB應(yīng)用的安全漏洞的情況下,這項(xiàng)技術(shù)可以起到防護(hù)效果
【編輯推薦】