【摘要】:針對日前常見的Web服務器安全威脅設計并實現(xiàn)了一套Web入侵防御系統(tǒng)。系統(tǒng)通過制定安全策略來檢測所有訪問Web服務器的行為,可以有效地阻止常見的攻擊從而保護Web服務器的安全。由于系統(tǒng)的策略引擎支持加載和調(diào)用Lua語言編寫的策略腳本,使策略腳本的編寫更加簡單、靈活。
【關(guān)鍵詞】:Web入侵防御;網(wǎng)絡安全;Lua
1.幾種常見的Web服務器而臨的威脅
1.1緩沖區(qū)溢出
緩沖區(qū)溢出攻擊是利用緩沖區(qū)溢出漏洞所進行的攻擊行動,具體是指當計算機向緩沖區(qū)內(nèi)填充數(shù)據(jù)位數(shù)時超過了緩沖區(qū)本身的容量,溢出的數(shù)據(jù)覆蓋在合法數(shù)據(jù)上,進而進行威脅。而目前這種緩沖區(qū)溢出是很難杜絕的,因為Web服務器的開發(fā)的測試階段不可能對所有客戶端提交的數(shù)據(jù)進程檢測,所以并不能保證Web服務器上完全沒有緩沖區(qū)溢出。
1.2 SQL注入攻擊
SQL注入攻擊是黑客對數(shù)據(jù)庫進行攻擊的常用手段之一,由于程序員的水平及經(jīng)驗也參差不齊,相當大一部分程序員在編寫代碼的時候,沒有對用戶輸入數(shù)據(jù)的合法性進行判斷,使應用程序存在安全隱患。
1.3基于腳本的DDos攻擊
DDos的攻擊策略側(cè)重于通過很多“僵尸主機”(被攻擊者入侵過或可間接利用的主機)向受害主機發(fā)送大量看似合法的網(wǎng)絡包,從而造成網(wǎng)絡阻塞或服務器資源耗盡而導致拒絕服務。
2.Web入侵防御系統(tǒng)的設計
2. 1系統(tǒng)體系結(jié)構(gòu)設計
為了適用于不同的Web服務器平臺,系統(tǒng)采用分層的體系結(jié)構(gòu)設計。Web入侵防御系統(tǒng)主要分3層。
(1)解析及響應層。解析及響應層為整個防御系統(tǒng)提供解析客戶端發(fā)送的HTTP報文請求和封裝服務器響應報文的接口。當有客戶端訪問服務器時,解析及響應層通知策略引擎調(diào)度策略檢測客戶端的訪問信息,并為策略引擎提供響應的實現(xiàn)。
(2)策略引擎層。策略引擎層的作用是策略的調(diào)度,在策略中通過“解析及響應層”提供的接口獲取客戶端的信息,具體的響應也交給“解析及響應層”完成。同時策略引擎還需要調(diào)度數(shù)據(jù)管理層完成策略的加載,以及日志記錄的功能。
(3)數(shù)據(jù)管理層。數(shù)據(jù)管理層提供日志記錄、配置管理及策略腳本解析的功能。對數(shù)據(jù)進行處理的過程都是在這一層里完成。
系統(tǒng)每一層功能都相對獨立,當某一層的實現(xiàn)發(fā)生變化時,只要提供的接口沒有變化,對其他幾層就沒有影響。這樣的結(jié)構(gòu)設計的最大優(yōu)點是使系統(tǒng)具有良好的擴展性。
2.2系統(tǒng)功能模塊設計
依據(jù)Web入侵防御系統(tǒng)的體系結(jié)構(gòu)設計和功能需求,系統(tǒng)由以下主要的功能模塊構(gòu)成,下面將簡單介紹各個功能模塊的作用。
(1)管理模塊。負責管理和連接系統(tǒng)各個模塊,管理數(shù)據(jù)流,讀取配置文件后完成整個系統(tǒng)的初始化,對整個系統(tǒng)的狀態(tài)進行管理:運行,停止,重新加載。
(2)配置文件模塊。主要完成配置文件的讀取及保存。提供統(tǒng)一的接口,具體實現(xiàn)可以根據(jù)需要而作修改。
(3)HTTP報文的解析模塊。利用Web服務器提供的接口,對客戶端訪問Web服務器時提交的原始數(shù)據(jù)進行解析,并通知管理模塊收到客戶端的訪問請求,請求策略引擎檢測客戶端的訪問行為。HTTP報文解析模塊中會為每一個客戶端生成一個實現(xiàn)了能檢測客戶端相關(guān)信息的接口對象。在一般的Web腳本(例如,ASP ,ASP.NET ,PHP等等)中也會有這樣一種獲取客戶端信息的接口。
(4)策略引擎模塊。策略引擎首先對策略腳本進行解析,根據(jù)策略的屬性和優(yōu)先級組裝策略鏈。當管理模塊通知策略引擎對某一個客戶端的信息進行檢測時,策略引擎利用HTTP報文解析模塊提供的接口獲取所需的客戶端信息,檢測客戶端請求的各個字段,對客戶端的行為進行分析或記錄,再依次調(diào)度策略鏈中的策略來控制對客戶端不同的行為進行響應。
(5)日志模塊。日志模塊的作用是對系統(tǒng)運行時產(chǎn)生的日志或?qū)θ肭址烙袨榈倪M行記錄。使用統(tǒng)一的格式將日志信息記錄在文本文件中。由于系統(tǒng)采用分層的體系結(jié)構(gòu),所以這一模塊可以方便的替換成其他格式的日志記錄方式。
2.3系統(tǒng)處理流程
系統(tǒng)的處理流程是:接收客戶端發(fā)送的HTTP請求,將原始的請求數(shù)據(jù)報文提交給HTTP報文解析模塊解析,報文解析模塊通知策略引擎模塊對解析后的數(shù)據(jù)進行檢測,策略引擎模塊則依據(jù)策略腳本中編寫的策略,通知HTTP響應模塊對客戶端的行為做出響應,并依據(jù)策略,通知日志記錄模塊記錄相應的日志。
3.Web入侵防御系統(tǒng)的實現(xiàn)
3.1使用ISAPI Filter獲取HTTP報文信息
ISAPI Filter提供了Get Filter Version和Http Filter Proc兩個回調(diào)函數(shù)。
(1)Get FilterVersion:當IIS加載ISAPI Filter的DLL時,會調(diào)用此函數(shù)。通過這個函數(shù),可以設置ISAPI Filter的優(yōu)先級和確定請求的事件。
(2)Http Filter Proc:當對應的事件發(fā)生時,服務器通過調(diào)用ISAPI Filter事件注冊的每個篩選器。可以通過Http Filter Proc以提供特殊的事件處理。當Http Filter Proc被調(diào)用時,接收到的通知將確定如何處理該事件。
3.2使用ISAPI進行Http響應
(1)拒絕訪問:ISAPI Filter中直接返回SF_STATUS_REQ_FINISHED時,IIS服務器就會斷開和客戶端的連接。
(2)發(fā)送文件:發(fā)送文件的實現(xiàn)和發(fā)送信息的實現(xiàn)類似,只是第2個參數(shù)換成了要發(fā)送文件的路徑,發(fā)送的文件內(nèi)容從該路徑指定的文件中讀取。
(3)重定向:將服務器端響應的HTTP報頭中的狀態(tài)碼設置為“302 Moved Permanently \",同時設置報頭中的Location為要轉(zhuǎn)向的地址。客戶端的瀏覽器在收到這樣的報文后會重新去訪問新的地址。
4.結(jié)語
總之,網(wǎng)絡技術(shù)是個系統(tǒng)工程,不能僅靠防火墻來抵御威脅,要考慮到系統(tǒng)整體的安全,在這里希望大家都能夠在安全、高效的網(wǎng)絡中暢游。
參考文獻:
[1]盧娜. 基于聯(lián)動的網(wǎng)絡入侵防御系統(tǒng)的設計與實現(xiàn)[D].武漢科技大學,2008.
[2]王剛. 一種分布式網(wǎng)絡入侵防御系統(tǒng)的設計與實現(xiàn)[D].天津大學,2007.
[3]聶林. 合作式入侵防御系統(tǒng)的設計與實現(xiàn)[D].西安電子科技大學,2005.
[4]黃小華. 智能化入侵檢測與防御系統(tǒng)的設計與實現(xiàn)[D].電子科技大學,2005.
[5]鄧發(fā)喬. 入侵防御系統(tǒng)研究與設計實現(xiàn)[D].電子科技大學,2004.