【正文】
and some one must be by while he is eating to prevent the stable boy of the inn from stealing his oats。 he goes like the wind. Ah! indeed he must not be mounted. It does not suit his ideas to be a saddlehorse. Every one has his ambition. `Draw? Yes. Carry? No.39。 then he paused again and stopped short, as though in thought, and afte r the lapse of a few seconds, instead of allowing the knoc ker to fall abruptly, he placed it gently, and resumed his way with a sort of haste which had not been apparent previously. M. Madeleine found Master Scaufflaire at home, engaged in stitching a harness over. Master Scaufflaire, he inquired, have you a good horse? Mr. Mayor, said the Fleming, all my horses are good. What do you mean by a good horse? I mean a horse which can travel twenty leagues in a day. The deuce! said the Fleming. Twenty leagues! Yes. Hitched to a cabriolet? Yes. And how long can he rest at the end of his journey? He must be able to set out again on the next day if necessary. To traverse the same road? Yes. The deuce! the deuce! And it is twenty leagues? M. Madeleine drew from his pocket the paper on which he had pencilled some figures. He showed it to the Fleming. The figures were 5, 6, 8 1/2. You see, he said, total, nieen and a half。 but this good man only wor ked until seven o39。 but Montfermeil was none the less a village. Retired clothmerchants and rusticating attorneys had not discovered it as yet。 ( 4)學(xué)??稍试S學(xué)位論文被查閱或借閱。除非另有說明,本文的工作是原始性工作。由于采用靈活的策略插入機(jī)制,所以可以通過策略增加系統(tǒng)的功能。提供方便的編寫策略腳本的機(jī)制,方便 Web 服務(wù)器管理員配置安全的 Web 服務(wù)器環(huán)境。如果迅雷能以 3 個(gè)線程下載服務(wù)器文件則測(cè)試通過。 (2) SQL 注入防御:在發(fā)送的 url 字段中包含 SQL 注入的關(guān)鍵字。按照上面的 xml 文件信息所示, 應(yīng)該存放在 Policy 目錄下。 end end function CheckSqlKey(str) local test_key = {and, or} str = (str) for i,v in ipairs(test_key) do if (str, v) then return true end end return false end 基于 xml 的策略管理 在這套系統(tǒng)中,我們通過 xml 配置文件來管理策略的信息。我們需要將此對(duì)象封裝成 Lua 腳本能識(shí)別的形式。 對(duì)策略的封裝 要讓 Lua 作為策略的腳本語言首先得完成對(duì)策略的封裝。 C++實(shí)現(xiàn)的策略效率高但因?yàn)椴捎糜簿幋a的方式集成到系統(tǒng)中,除了少量的數(shù)據(jù)信息可以通過配置文件在加載時(shí)動(dòng)態(tài)配置外,其策略的邏輯無法靈活 的修改。在 Windows 2020 的服務(wù)器上配置 IIS 的 ISAPI Filter 的步驟如下: (1) 打開 IIS 管理器 (2) 展開左側(cè)的目錄樹,選擇網(wǎng)站,單擊鼠標(biāo)右鍵,選擇屬性 (3) 選擇 ISAPI 篩選器一欄 (4) 點(diǎn)擊添加按鈕,篩選器名稱填“ WebIPS”,可執(zhí)行文件選擇 WebIPS所在的路徑,單擊確定添加完畢。 _pfcAddResponseHeaders(buf)。 } } } (4) 重定向 將服務(wù) 器端響應(yīng)的 Http 報(bào)頭中的狀態(tài)碼設(shè)置為“ 302 Moved Permanently ”,同時(shí)設(shè)置報(bào)頭中的 Location 為要轉(zhuǎn)向的地址。 nCount = ()。 ifstream in(filename, ios_base::binary)。發(fā)送的文件內(nèi)容從該路 徑指定的文件中讀取。 _pfcWriteClient(const_castchar*(msg), amp。通 過 ISAPI Filter 中 提供的ServerSupportFunction API 可以設(shè)置響應(yīng)的 HTTP 報(bào)文的狀態(tài),通過 WriteClient可以直接向客戶端寫數(shù)據(jù)。策略引擎會(huì)對(duì)不同的策略引擎把 IClient 重新封裝。 } HTTP_FILTER_CONTEXT, * PHTTP_FILTER_CONTEXT。 BOOL AddResponseHeaders。 DWORD ulReserved。 相關(guān)的 C++聲明如下: DWORD WINAPI HttpFilterProc( PHTTP_FILTER_CONTEXT pfc, DWORD notificationType, LPVOID pvNotification )??梢酝ㄟ^ HttpFilterProc 以提供特殊的事件處理。通過這個(gè)函數(shù),可以設(shè)置 ISAPI Filter 的優(yōu)先級(jí)和確定請(qǐng)求的事件。下面我們將詳細(xì)介紹這三層的實(shí)現(xiàn)。我們可以利用 ISAPI 來實(shí)現(xiàn) Http 的解析與響應(yīng)。具體的實(shí)現(xiàn)是由Http 響應(yīng)層完成的。例如: REMOTE_ADDR 是客戶端的 IP;QUERY_STRING 是 查詢 HTTP 請(qǐng)求中問號(hào)( ?)后的信息 ; HTTP_COOKIE 是客戶端發(fā)送的 Cookie,等等。 (3) 獲取客戶端信息的接口: GetServerVariable Client 對(duì)象的方法。策略調(diào)度時(shí),策略引擎在調(diào)用這些接口時(shí)傳入的都是 client 對(duì)象。 (3) 如果策略返回的不是“調(diào)用下一條策略”的響應(yīng)時(shí),則停止調(diào)度策略鏈上后面的策略并返回該響應(yīng)。 (7) 直到策略列表中的所有項(xiàng)都處理結(jié)束后,重新遍歷這個(gè)列表,把 Loaded的項(xiàng)依次提取出來,形成策略調(diào)度用的策略列表。 腳本加載器會(huì)根據(jù)屬性中的路徑字段去讀取策略腳本,加載器要完成策略腳本語法檢測(cè)的步驟,加載成功時(shí)也是返回 一個(gè)策略對(duì)象,加載失敗返回NULL。 (4) 如果策略的開啟狀態(tài)屬性不為 Enable,則跳過該策略,繼續(xù)加載策略列 表中后面的策略。 策略的加載 策略引擎加載策略的步驟如下: (1) IPS 通過配置模塊讀取出策略屬性列表,去掉此列表中策略名稱重復(fù)的項(xiàng),然后將此列表作為策略引擎初始化的參數(shù)或者作為策略引擎重新加載的參數(shù)。這個(gè)值不能在配置文件中設(shè)置,默認(rèn)為 Unloaded,當(dāng)策略引擎成功加載此策略時(shí), 會(huì)將此值設(shè)置為 Loaded。此屬性的作用是在增加策略優(yōu)先級(jí)調(diào)度的粒度??梢允÷?。 策略的屬性 策略的屬性可以幫助策略引擎選擇合適的策略加載器加載策略和策略引擎按合適的方式調(diào)度策略。這種體系結(jié)構(gòu)可以方便的把策略不同的實(shí)現(xiàn)方式擴(kuò)充進(jìn)來。當(dāng)策略引擎檢測(cè)到策略返回的是這種響應(yīng)方式后也會(huì)停止調(diào)用策略鏈后面的其他策略 策略引擎的設(shè)計(jì) 策略引擎是整個(gè)系統(tǒng)的核心模塊,如圖 3 所示為策略引擎的結(jié)構(gòu)。如果是采用的發(fā)送信息的響應(yīng)方式,則客戶端看不到這條信息。當(dāng)策略引擎檢測(cè)到策略返回的是這種響應(yīng)方式后會(huì)停止調(diào)用策略鏈后面的其他策略。當(dāng)策略引擎已經(jīng)確認(rèn)客戶端的訪問是惡意的攻擊 行為時(shí),可以直接斷開和客戶端的連接。 (2) 接受請(qǐng)求 接受客戶端的訪問。如果返回的是除“調(diào)度下一條策略”外的其他響應(yīng),則策略引擎停止調(diào)動(dòng)策略鏈中后面的策略,否則策略引擎依次調(diào)度策略鏈上的策略直到全部策略調(diào)度完成。 (6) 日志模塊 日志模塊的作用是對(duì)系統(tǒng)運(yùn)行時(shí)產(chǎn)生的日志或?qū)θ肭址烙袨榈倪M(jìn)行記錄。當(dāng)一個(gè)策略中沒有對(duì)客戶端的行為做出響應(yīng)時(shí),策略引擎調(diào)用策略鏈中的下一條,直到全部調(diào)用完。除了“調(diào)用下一條策略”需要策略引擎繼續(xù)調(diào)用其他策略外,其他的響應(yīng)結(jié)束后都表示客戶端的一次請(qǐng)求過程的結(jié)束,策略引擎將不會(huì)繼續(xù)調(diào)用策略鏈上的其它策略。 Http 報(bào)文的解析模塊中會(huì)為每一個(gè)客戶端生成一個(gè)實(shí)現(xiàn)了能檢測(cè)客戶端相關(guān)信息的接口的對(duì)象。當(dāng) Http 報(bào)文解析模塊通知有客戶端的訪問時(shí),調(diào)用策略引擎對(duì)客戶端的行為及 信息進(jìn)行檢測(cè),對(duì)策略引擎返回的結(jié)果通知 Http 響應(yīng)模塊進(jìn)行響應(yīng)。這樣整個(gè)結(jié)構(gòu)就有很大的擴(kuò)展性,例如:我們可以把解析和響應(yīng)層的具體實(shí)現(xiàn)是由調(diào)用 Web 服務(wù)器自身接口的方式替換為直接截獲傳輸層網(wǎng)絡(luò)層封包的方式等等。同時(shí)策略引擎還需要調(diào)度數(shù) 據(jù)管理層完成策略的加載,以及日志記錄的功能。 如圖 1 所示,這個(gè) Web 的入侵防御系統(tǒng)主要分層了以下三層: (1) 解析及響應(yīng)層 這一層為整個(gè)防御系統(tǒng)提供對(duì)客戶端發(fā)送的 Http 報(bào)文請(qǐng)求的解析及服務(wù)器響應(yīng)時(shí) Http 報(bào)文封裝的接口。多層的結(jié)構(gòu)將不同功能的模塊進(jìn)行了劃分,層與層之間靠定義好的接口進(jìn)行通信,單層的結(jié)構(gòu)將模塊都緊耦合在一起,模塊與模塊間有交叉調(diào)用。 如果 Web 服務(wù)器提供 Http 報(bào)文封裝的接口,則在對(duì)客戶端進(jìn)行響應(yīng)時(shí)我們也盡量調(diào)用 Web 服務(wù)器的這些接口而不是自己組裝 Http 報(bào)文。 3 Web 的 入侵防御系統(tǒng)的設(shè)計(jì) 由于系統(tǒng)要對(duì)客戶端發(fā)送的 Http 報(bào)文進(jìn)行分析,這需要對(duì) Http 報(bào)文進(jìn)行解析, Http 報(bào)文解析的方式主要有兩種: (1)自解析:系統(tǒng)對(duì)原始數(shù)據(jù)報(bào)文自行解析; (2)由 Web 服務(wù)器進(jìn)行解析,需要時(shí)系統(tǒng)通過 Web 服務(wù)器提供的接口查詢。 對(duì)于這類來自腳本自身的安全威脅,好的防御方式是時(shí)常關(guān)注源碼站點(diǎn)的補(bǔ)丁信息 ,對(duì) Web 服務(wù)器的環(huán)境進(jìn)行安全配置,防止數(shù)據(jù)庫(kù)這樣會(huì)透露敏感信息的文件被下載等等。 (3) 腳本自身的 Bug Web 服務(wù)器上所運(yùn)行的動(dòng)態(tài)腳本 ( ASP、 、 JSP 和 PHP 等等) 自身所帶的 Bug 也會(huì)給 Web 服務(wù)器的安全帶來極大的威脅。盜鏈的定義是:此內(nèi)容不在自己服務(wù)器上,而通過技術(shù)手段,繞過別人放廣告有利益的最終頁,直接在自己的有廣告有利益的頁面上向最終用戶提供此內(nèi)容。 防御這種攻擊方式的方法有以下幾種: (1) 防止客戶端的快速刷新,可以通過 Cookie 或者 Session 來實(shí)現(xiàn) (2) 對(duì)消耗較大的頁面進(jìn)行識(shí)別碼認(rèn)證,確保是人而不是惡意的自動(dòng)化程序在訪問這個(gè)頁面。 和傳統(tǒng)的 DDos 攻擊針對(duì)服務(wù)器操作系統(tǒng)本身或網(wǎng)絡(luò)帶寬的消耗而言,基于腳本的攻擊方式是針對(duì)應(yīng)用程序的消耗來達(dá)到拒絕服務(wù)攻擊的目的。 目前對(duì) SQL 注入攻擊提出的防御方案有: (1) 在服務(wù)端正式處理之前對(duì)提交數(shù)據(jù)的合法性進(jìn)行檢查; (2) 封 裝客戶端提交信息; (3) 替換或刪除敏感字符 /字符串; (4) 屏蔽出錯(cuò)信息。目前互聯(lián)網(wǎng)上仍然存在很多有此風(fēng)險(xiǎn)的服務(wù)器。目前,緩沖區(qū)溢出是很難杜絕的,因?yàn)?Web 服務(wù)器程序開發(fā)的測(cè)試階段無法對(duì)所有客戶端可能提交的數(shù)據(jù)進(jìn)行測(cè)試,所以不能確保 Web 服務(wù)器程序完全沒有緩沖區(qū)溢出威脅的存在。通過對(duì)這套系統(tǒng)的運(yùn)行檢測(cè)可以發(fā)現(xiàn)它能有效的保護(hù) Web 服務(wù)器的安全。惡意的攻擊者往往 通過 Web 服務(wù)器上的突破口,來進(jìn)一步對(duì)內(nèi)部網(wǎng)絡(luò)進(jìn)行滲透。 ISAPI。在這套入侵防御系統(tǒng)中,可以通過制定策略來檢測(cè)所有訪問 Web服務(wù)器的行為,可以有效地阻止惡意攻擊從而保護(hù) Web服務(wù)器的安全。 畢 業(yè) 設(shè) 計(jì) ( 論文 ) Web 的入侵 防御 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 論 文 作 者 姓 名 : 申 請(qǐng) 學(xué) 位 專 業(yè) : 申 請(qǐng) 學(xué) 位