專利名稱:網(wǎng)絡(luò)安全設(shè)備的高可用性的制作方法
技術(shù)領(lǐng)域:
本公開涉及計(jì)算機(jī)網(wǎng)絡(luò),更具體地,涉及用在計(jì)算機(jī)網(wǎng)絡(luò)內(nèi)的安全設(shè)備。
背景技術(shù):
高可用性計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境的目標(biāo)是向用戶和其他實(shí)體提供“始終在線”服務(wù)。艮口, 高可用性計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境應(yīng)當(dāng)提供可靠的、連續(xù)運(yùn)行的服務(wù)。為了實(shí)現(xiàn)該目標(biāo),高可用性環(huán) 境中的網(wǎng)絡(luò)設(shè)備執(zhí)行錯(cuò)誤檢測(cè)并執(zhí)行對(duì)于檢測(cè)到的錯(cuò)誤的可恢復(fù)性。不幸的是,網(wǎng)絡(luò)設(shè)備 有時(shí)會(huì)出故障。例如,安全設(shè)備內(nèi)的軟件或硬件問題或電源故障會(huì)使所有的或部分的安全 設(shè)備停止工作。當(dāng)網(wǎng)絡(luò)設(shè)備故障時(shí),通過發(fā)生故障的網(wǎng)絡(luò)設(shè)備的所有網(wǎng)絡(luò)通信流會(huì)停止。對(duì)于依 賴于這種網(wǎng)絡(luò)通信量的企業(yè)來說,即使這種故障僅發(fā)生短時(shí)間,這也是不可接受的。為了使 引起所有網(wǎng)絡(luò)通信量停止的故障的可能性最小化,可以安裝諸如備份控制器或獨(dú)立的備份 網(wǎng)絡(luò)設(shè)備的冗余硬件。因此,如果擔(dān)負(fù)著用于執(zhí)行安全服務(wù)的主要責(zé)任的網(wǎng)絡(luò)設(shè)備(即,主 設(shè)備)發(fā)生故障,則備份設(shè)備可以快速地替代該主設(shè)備。換句話說,故障網(wǎng)絡(luò)設(shè)備“故障切 換”到備份設(shè)備。主設(shè)備還可以“切換”到備份設(shè)備來暫時(shí)地離線,例如安裝軟件和/或固 件更新或者進(jìn)行其他例行的維護(hù)程序。通常,故障切換被認(rèn)為是切換的一種形式。在故障 切換或切換到備份設(shè)備之后,備份設(shè)備成為主設(shè)備。高可用性機(jī)群通常包括這種主網(wǎng)絡(luò)設(shè) 備和備份網(wǎng)絡(luò)設(shè)備。入侵檢測(cè)與防御(IDP)設(shè)備檢查應(yīng)用層(即,OSI層七)數(shù)據(jù)以試圖檢測(cè)惡意通信 量。通常,IDP設(shè)備使用應(yīng)用層數(shù)據(jù)作為輸入來執(zhí)行一個(gè)或多個(gè)復(fù)雜的有限自動(dòng)機(jī)或算法, 以檢測(cè)表示惡意通信量的事件序列和模式。該復(fù)雜的檢測(cè)處理通常需要生成和維護(hù)描述當(dāng) 前應(yīng)用層會(huì)話的事件和當(dāng)前通信量模式的主要狀態(tài)信息。主要狀態(tài)信息通常阻止對(duì)于IDP 設(shè)備高可用性的主動(dòng)使用。
發(fā)明內(nèi)容
大體上,本公開描述了用于實(shí)現(xiàn)計(jì)算機(jī)網(wǎng)絡(luò)內(nèi)的高可用性入侵檢測(cè)與防御(IDP) 設(shè)備的技術(shù)。例如,所描述的技術(shù)用于在高可用性環(huán)境中使主動(dòng)IDP設(shè)備和備份IDP設(shè)備 之間的應(yīng)用層IDP狀態(tài)信息同步。本公開還描述了用于執(zhí)行從主動(dòng)IDP設(shè)備到備份IDP設(shè) 備的故障切換的技術(shù)。同步主動(dòng)IDP設(shè)備和備份IDP設(shè)備之間的應(yīng)用層IDP狀態(tài)信息的發(fā) 生,使得一旦進(jìn)行從主動(dòng)IDP設(shè)備故障切換到備份IDP設(shè)備,備份IDP設(shè)備就能夠有目的地 將IDP服務(wù)應(yīng)用到先前被主動(dòng)IDP設(shè)備檢查的現(xiàn)有應(yīng)用層通信會(huì)話。然而,這些技術(shù)避免 了復(fù)制從主動(dòng)IDP設(shè)備到備份IDP設(shè)備的數(shù)據(jù)包流的每個(gè)數(shù)據(jù)包,從而防止使主動(dòng)IDP設(shè) 備和備份IDP設(shè)備超負(fù)荷。本公開的技術(shù)包括使諸如創(chuàng)建新的層七通信會(huì)話、刪除現(xiàn)有會(huì)話、阻止現(xiàn)有會(huì)話 和/或識(shí)別通信會(huì)話的應(yīng)用(或應(yīng)用層協(xié)議)的應(yīng)用層事件的應(yīng)用層IDP狀態(tài)同步。以這 種方式,主動(dòng)IDP設(shè)備將已經(jīng)被識(shí)別出的網(wǎng)絡(luò)內(nèi)新數(shù)據(jù)包流的應(yīng)用(或應(yīng)用層協(xié)議)通知備份IDP設(shè)備。當(dāng)主動(dòng)IDP設(shè)備故障切換到備份IDP設(shè)備時(shí),備份IDP設(shè)備錨定(anchor) 根據(jù)在故障切換之前由主動(dòng)IDP設(shè)備先前識(shí)別的應(yīng)用所選擇的協(xié)議解碼器。例如,備份IDP 設(shè)備在通信會(huì)話內(nèi)的新應(yīng)用層事務(wù)的開始處錨定其協(xié)議解碼器。通常,“事務(wù)”是指對(duì)等設(shè) 備之間的一系列有界的相關(guān)應(yīng)用層通信。例如,單個(gè)TCP連接可用于發(fā)送(接收)多個(gè)超 文本傳輸協(xié)議(HTTP)請(qǐng)求(響應(yīng))。作為一個(gè)實(shí)施例,可以使用單個(gè)TCP連接來獲得包括 多個(gè)到HTML頁面的鏈接和圖像的單個(gè)網(wǎng)頁。可以由IDP設(shè)備調(diào)用HTTP解碼器,以將TCP 連接內(nèi)的每個(gè)請(qǐng)求/響應(yīng)識(shí)別為不同的事務(wù)。這對(duì)于基于事務(wù)界限錨定和應(yīng)用攻擊定義或 攻擊模式來說是有用的。備份IDP設(shè)備可通過檢測(cè)定界符(例如,對(duì)于基于ASCII的事務(wù)) 或者基于限定長(zhǎng)度(例如,對(duì)于基于二進(jìn)制的事務(wù)或以長(zhǎng)度編碼的事務(wù))來區(qū)分?jǐn)?shù)據(jù)包流 的應(yīng)用層數(shù)據(jù)內(nèi)的事務(wù)?!┻M(jìn)行故障切換,備份IDP設(shè)備就試圖識(shí)別先前由主動(dòng)IDP設(shè)備檢查的數(shù)據(jù)包 流的應(yīng)用層數(shù)據(jù)內(nèi)的新事務(wù)的開始。備份IDP設(shè)備一旦發(fā)現(xiàn)新事務(wù)就開始檢查應(yīng)用層數(shù) 據(jù)。在一些實(shí)施例中,備份IDP設(shè)備掃描應(yīng)用層數(shù)據(jù)以識(shí)別標(biāo)識(shí)了當(dāng)前應(yīng)用層事務(wù)的結(jié)束 和新事務(wù)的開始的定界符。例如,許多基于ASCII的應(yīng)用層協(xié)議利用定界符(諸如‘\n’和 iOXOA'的換行/移行字符以及諸如‘\r’和‘0X0D’的回車字符),以信號(hào)通知兩個(gè)事務(wù)之 間的轉(zhuǎn)變。一些長(zhǎng)度編碼協(xié)議將特定位的模式定義為定界符。在利用這種定界符的實(shí)施例 中,備份IDP設(shè)備掃描定界符,并開始主動(dòng)地檢查定界符之后的應(yīng)用層數(shù)據(jù)。在又一些實(shí)施例中,一些長(zhǎng)度編碼應(yīng)用層協(xié)議定義事務(wù)的長(zhǎng)度值(例如,字節(jié) 數(shù))。在使用事務(wù)的長(zhǎng)度值的實(shí)施例中,主動(dòng)IDP設(shè)備基于TCP序列號(hào)附加地與識(shí)別當(dāng)前 事務(wù)的結(jié)束/新事務(wù)的開始的備份IDP設(shè)備數(shù)據(jù)同步。作為一個(gè)實(shí)施例,主動(dòng)IDP設(shè)備一 旦檢測(cè)到通信會(huì)話的應(yīng)用層數(shù)據(jù)內(nèi)的新事務(wù),就會(huì)計(jì)算對(duì)應(yīng)于下一事務(wù)的開始的TCP序列 號(hào),并將所算得的TCP序列號(hào)發(fā)送到備份IDP設(shè)備。一旦進(jìn)行故障切換,備份IDP設(shè)備就錨 定先前由主動(dòng)IDP設(shè)備識(shí)別的應(yīng)用層協(xié)議解碼器,并使用該應(yīng)用層協(xié)議解碼器來主動(dòng)地檢 查數(shù)據(jù)包的應(yīng)用層,該數(shù)據(jù)包具有至少與從主動(dòng)IDP設(shè)備接收到的最新TCP序列號(hào)一樣大 的序列號(hào)。在一個(gè)實(shí)施例中,一種方法包括利用高可用性機(jī)群的備份網(wǎng)絡(luò)設(shè)備接收來自高 可用性機(jī)群的主網(wǎng)絡(luò)設(shè)備的狀態(tài)更新消息,其中,該狀態(tài)更新消息表示被主網(wǎng)絡(luò)設(shè)備檢查 的網(wǎng)絡(luò)會(huì)話以及用于該網(wǎng)絡(luò)會(huì)話的被識(shí)別的應(yīng)用層協(xié)議;利用備份網(wǎng)絡(luò)設(shè)備接收主設(shè)備已 經(jīng)切換或故障切換到備份網(wǎng)絡(luò)設(shè)備的指示;在接收到指示之后,利用備份網(wǎng)絡(luò)設(shè)備接收網(wǎng) 絡(luò)會(huì)話的多個(gè)數(shù)據(jù)包,多個(gè)數(shù)據(jù)包中的每一個(gè)均包括含有應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷;根據(jù)多 個(gè)數(shù)據(jù)包中的一個(gè)數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)檢測(cè)新事務(wù)的開始;以及處理網(wǎng)絡(luò)會(huì)話中在多個(gè)數(shù) 據(jù)包中與新事務(wù)的開始對(duì)應(yīng)的一個(gè)數(shù)據(jù)包之后的并包括該數(shù)據(jù)包的多個(gè)數(shù)據(jù)包的應(yīng)用層 數(shù)據(jù),而不對(duì)在新事務(wù)的開始之前的數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)執(zhí)行有狀態(tài)處理。盡管可以對(duì)于 在新事務(wù)開始之前的數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)執(zhí)行一些處理(例如,無狀態(tài)處理),但是有狀態(tài) 處理僅開始于新事務(wù)之后并包括該新事務(wù)的事務(wù)。在另一實(shí)施例中,高可用性機(jī)群的被配置為以機(jī)群模式運(yùn)行的備份網(wǎng)絡(luò)設(shè)備包 括一個(gè)或多個(gè)網(wǎng)絡(luò)接口,用于接收來自備份網(wǎng)絡(luò)設(shè)備的高可用性機(jī)群的主網(wǎng)絡(luò)設(shè)備的狀 態(tài)更新消息,其中,狀態(tài)更新消息表示被主網(wǎng)絡(luò)設(shè)備檢查的網(wǎng)絡(luò)會(huì)話以及用于設(shè)備的被識(shí) 別的應(yīng)用層協(xié)議,該一個(gè)或多個(gè)網(wǎng)絡(luò)接口用以接收主設(shè)備已經(jīng)切換或故障切換到備份網(wǎng)絡(luò)設(shè)備的指示,以及該一個(gè)或多個(gè)網(wǎng)絡(luò)接口用以在接收到指示之后接收網(wǎng)絡(luò)會(huì)話的多個(gè)數(shù)據(jù) 包,多個(gè)數(shù)據(jù)包中的每一個(gè)均包括含有應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷;協(xié)議解碼器,用于根據(jù)多個(gè) 數(shù)據(jù)包中的一個(gè)的應(yīng)用層數(shù)據(jù)檢測(cè)新事務(wù)的開始;以及控制單元,用于處理網(wǎng)絡(luò)會(huì)話中在 多個(gè)數(shù)據(jù)包中與新事務(wù)的開始對(duì)應(yīng)的一個(gè)數(shù)據(jù)包之后的并包括該數(shù)據(jù)包的多個(gè)數(shù)據(jù)包的 應(yīng)用層數(shù)據(jù),而不對(duì)在新事務(wù)的開始之前的數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)執(zhí)行有狀態(tài)處理。在另一實(shí)施例中,一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),以使高可用性機(jī)群的備份網(wǎng)絡(luò)設(shè)備 的可編程處理器執(zhí)行以下操作的指令對(duì)該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)進(jìn)行編碼接收來自高可用 性機(jī)群的主網(wǎng)絡(luò)設(shè)備的狀態(tài)更新消息,其中,狀態(tài)更新消息表示被主網(wǎng)絡(luò)設(shè)備檢查的網(wǎng)絡(luò) 會(huì)話以及用于該會(huì)話的被識(shí)別的應(yīng)用層協(xié)議;接收主設(shè)備已經(jīng)切換或故障切換到備份網(wǎng)絡(luò) 設(shè)備的指示;在接收到指示之后,接收網(wǎng)絡(luò)會(huì)話的多個(gè)數(shù)據(jù)包,多個(gè)數(shù)據(jù)包中的每一個(gè)均包 括含有應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷;根據(jù)多個(gè)數(shù)據(jù)包中的一個(gè)的應(yīng)用層數(shù)據(jù)檢測(cè)新事務(wù)的開 始;以及處理網(wǎng)絡(luò)會(huì)話中在多個(gè)數(shù)據(jù)包中與新事務(wù)的開始對(duì)應(yīng)的一個(gè)數(shù)據(jù)包之后的并包括 該數(shù)據(jù)包的多個(gè)數(shù)據(jù)包的應(yīng)用層數(shù)據(jù),而不對(duì)在新事務(wù)的開始之前的數(shù)據(jù)包的應(yīng)用層數(shù)據(jù) 執(zhí)行有狀態(tài)處理。在另一實(shí)施例中,一種方法包括利用高可用性環(huán)境中的主網(wǎng)絡(luò)設(shè)備接收網(wǎng)絡(luò)會(huì) 話的多個(gè)數(shù)據(jù)包,多個(gè)數(shù)據(jù)包中的每一個(gè)均包括含有應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷;根據(jù)多個(gè)數(shù) 據(jù)包的一個(gè)數(shù)據(jù)包的應(yīng)用層檢測(cè)新事務(wù)的開始;計(jì)算與網(wǎng)絡(luò)會(huì)話的下一事務(wù)的第一數(shù)據(jù)包 對(duì)應(yīng)的序列號(hào),其中下一事務(wù)在新事務(wù)之后;構(gòu)建包括所算得的序列號(hào)的狀態(tài)更新消息; 以及將狀態(tài)同步消息轉(zhuǎn)發(fā)到用于高可用性環(huán)境中的主網(wǎng)絡(luò)設(shè)備的備份網(wǎng)絡(luò)設(shè)備。在另一實(shí)施例中,高可用性機(jī)群的被配置為以機(jī)群模式運(yùn)行的主網(wǎng)絡(luò)設(shè)備包括 一個(gè)或多個(gè)網(wǎng)絡(luò)接口,用于接收網(wǎng)絡(luò)會(huì)話的多個(gè)數(shù)據(jù)包,多個(gè)數(shù)據(jù)包中的每一個(gè)均包括含 有應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷,以及該一個(gè)或多個(gè)網(wǎng)絡(luò)接口向用于高可用性機(jī)群中的主網(wǎng)絡(luò)設(shè) 備的備份網(wǎng)絡(luò)設(shè)備轉(zhuǎn)發(fā)狀態(tài)同步消息;協(xié)議解碼器模塊,用于根據(jù)多個(gè)數(shù)據(jù)包中一個(gè)數(shù)據(jù) 包的應(yīng)用層數(shù)據(jù)檢測(cè)新事務(wù)的開始;以及流管理模塊,用于計(jì)算與網(wǎng)絡(luò)會(huì)話的下一事務(wù)的 第一數(shù)據(jù)包對(duì)應(yīng)的序列號(hào),并構(gòu)建包括所算得的序列號(hào)的狀態(tài)更新消息,其中,下一事務(wù)在 新事務(wù)之后。在另一實(shí)施例中,一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),以使高可用性機(jī)群的主網(wǎng)絡(luò)設(shè)備的 可編程處理器執(zhí)行以下操作的指令對(duì)該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)進(jìn)行編碼接收網(wǎng)絡(luò)會(huì)話的多 個(gè)數(shù)據(jù)包,多個(gè)數(shù)據(jù)包中的每一個(gè)數(shù)據(jù)包均包括含有應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷;根據(jù)多個(gè)數(shù) 據(jù)包的一個(gè)數(shù)據(jù)包的應(yīng)用層檢測(cè)新事務(wù)的開始;計(jì)算與網(wǎng)絡(luò)會(huì)話的下一事務(wù)的第一數(shù)據(jù)包 相對(duì)應(yīng)的序列號(hào),其中下一事務(wù)在新事務(wù)之后;構(gòu)建包括所算得的序列號(hào)的狀態(tài)更新消息; 以及向用于高可用性環(huán)境中的主網(wǎng)絡(luò)設(shè)備的備份網(wǎng)絡(luò)設(shè)備轉(zhuǎn)發(fā)狀態(tài)同步消息。在另一實(shí)施例中,高可用性機(jī)群系統(tǒng)包括主網(wǎng)絡(luò)設(shè)備和備份網(wǎng)絡(luò)設(shè)備。主網(wǎng)絡(luò)設(shè) 備包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口,用于接收網(wǎng)絡(luò)會(huì)話的第一多個(gè)數(shù)據(jù)包,第一多個(gè)數(shù)據(jù)包中的 每一個(gè)均包括含有應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷,并且該一個(gè)或多個(gè)網(wǎng)絡(luò)接口向備份網(wǎng)絡(luò)設(shè)備轉(zhuǎn) 發(fā)狀態(tài)同步消息;以及流管理模塊,用于根據(jù)第一多個(gè)數(shù)據(jù)包中的一個(gè)的應(yīng)用層檢測(cè)新事 務(wù)的開始,計(jì)算與網(wǎng)絡(luò)會(huì)話的下一事務(wù)的第一數(shù)據(jù)包對(duì)應(yīng)的序列號(hào),并構(gòu)建包括所算得的 序列號(hào)的狀態(tài)更新消息,其中下一事務(wù)在新事務(wù)之后。備份網(wǎng)絡(luò)設(shè)備包括一個(gè)或多個(gè)網(wǎng)絡(luò) 接口,用于接收來自主網(wǎng)絡(luò)設(shè)備的狀態(tài)更新消息,接收主設(shè)備已經(jīng)切換或故障切換到備份網(wǎng)絡(luò)設(shè)備的指示,以及接收網(wǎng)絡(luò)會(huì)話的第二多個(gè)數(shù)據(jù)包,第二多個(gè)數(shù)據(jù)包中的每一個(gè)均包 括含有應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷;協(xié)議解碼器模塊,用于根據(jù)第二多個(gè)數(shù)據(jù)包中的一個(gè)的應(yīng) 用層數(shù)據(jù)檢測(cè)新事務(wù)的開始;以及控制單元,用于處理網(wǎng)絡(luò)會(huì)話中在第二多個(gè)數(shù)據(jù)包中與 新事務(wù)的開始對(duì)應(yīng)的一個(gè)數(shù)據(jù)包之后的并包括該數(shù)據(jù)包的第二多個(gè)數(shù)據(jù)包的應(yīng)用層數(shù)據(jù), 而不對(duì)在新事務(wù)的開始之前的數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)執(zhí)行有狀態(tài)處理。本公開的技術(shù)可以提供一種或多種優(yōu)點(diǎn)。例如,本公開的技術(shù)提供了一種在高可 用性環(huán)境中使高可用性IDP設(shè)備之間的應(yīng)用層IDP狀態(tài)同步的輕便機(jī)制,以允許在故障切 換之后對(duì)現(xiàn)有網(wǎng)絡(luò)會(huì)話繼續(xù)進(jìn)行IDP檢查。因?yàn)橹鱅DP設(shè)備和備份網(wǎng)絡(luò)設(shè)備之間所要求的 通信是最小的,因此該技術(shù)對(duì)于可以檢查大量(例如,百萬)應(yīng)用層通信會(huì)話的系統(tǒng)進(jìn)行適 當(dāng)調(diào)整。因?yàn)樵谥鱅DP設(shè)備和備份IDP設(shè)備之間產(chǎn)生應(yīng)用層IDP狀態(tài)的同步,所以備份網(wǎng) 絡(luò)設(shè)備能夠在從主IDP設(shè)備切換或故障切換之后對(duì)于現(xiàn)有通信會(huì)話執(zhí)行狀態(tài)深度數(shù)據(jù)包 檢查。以這種方式,備份IDP設(shè)備能夠有狀態(tài)地處理(例如,檢查)在切換或故障切換之后 的網(wǎng)絡(luò)會(huì)話中承載的后續(xù)應(yīng)用層事務(wù)。在附圖和以下描述中闡述了一個(gè)或多個(gè)實(shí)施例的細(xì)節(jié)。從描述和附圖以及權(quán)利要 求中,其他特征、目的和優(yōu)點(diǎn)將變得顯而易見。
圖1是示出示例性系統(tǒng)的框圖,在該系統(tǒng)中,對(duì)于在源設(shè)備和目的設(shè)備之間的數(shù) 據(jù)包流,主入侵檢測(cè)與防御(IDP)設(shè)備使應(yīng)用層IDP狀態(tài)與備份IDP設(shè)備同步;圖2是示出主IDP設(shè)備的部件的示例性配置的框圖;圖3是示出主IDP設(shè)備的狀態(tài)檢查引擎的實(shí)施例的框圖;圖4是示出主IDP設(shè)備的流管理模塊的示例性子部件以及主IDP設(shè)備的流表中的 示例性流表項(xiàng)的框圖;圖5是示出用于在接收到新的數(shù)據(jù)包流時(shí)創(chuàng)建新的流表項(xiàng)以及利用新的數(shù)據(jù)包 流的信息更新備份IDP設(shè)備的示例性方法的流程圖;圖6是示出用于將來自主IDP設(shè)備的序列號(hào)更新(例如,對(duì)應(yīng)于具有所定義長(zhǎng)度 的事務(wù)的長(zhǎng)度編碼應(yīng)用層協(xié)議)發(fā)送到備份IDP設(shè)備的示例性方法的流程圖;圖7是示出當(dāng)通過定界符值區(qū)別事務(wù)時(shí)在主動(dòng)IDP設(shè)備的故障切換之后備份IDP 設(shè)備變?yōu)橹鲃?dòng)的示例性方法的流程圖;以及圖8是示出當(dāng)事務(wù)具有定義事務(wù)長(zhǎng)度時(shí)在主動(dòng)IDP設(shè)備的故障切換之后備份IDP 設(shè)備變?yōu)橹鲃?dòng)的示例性方法的流程圖。
具體實(shí)施例方式圖1是示出其中主入侵檢測(cè)與防御(IDP)設(shè)備16和備份IDP設(shè)備20在計(jì)算環(huán)境 10內(nèi)提供主動(dòng)的高可用性IDP服務(wù)的實(shí)施例的框圖。如本文所描述的,主IDP設(shè)備16和備 份IDP設(shè)備20將在源設(shè)備12和目的設(shè)備24之間流動(dòng)的被攔截的網(wǎng)絡(luò)會(huì)話的應(yīng)用層IDP 狀態(tài)進(jìn)行同步。通常,主IDP設(shè)備16對(duì)源設(shè)備12和目的設(shè)備24之間的數(shù)據(jù)包流的應(yīng)用層 數(shù)據(jù)執(zhí)行有狀態(tài)檢查。源設(shè)備12的每一個(gè)均可以與一個(gè)或多個(gè)目的設(shè)備24建立應(yīng)用層通 信會(huì)話,其中,每個(gè)通信會(huì)話通常包括源設(shè)備和目的設(shè)備之間的一對(duì)數(shù)據(jù)包流。
術(shù)語“數(shù)據(jù)包流”是指作為一個(gè)源設(shè)備12和一個(gè)目的設(shè)備24之間的應(yīng)用層網(wǎng)絡(luò) 會(huì)話的一部分、源自一個(gè)特定的源設(shè)備12并發(fā)送至一個(gè)特定的目的設(shè)備24的數(shù)據(jù)包組,其 中,每個(gè)流通常由源IP地址、目的IP地址、源端口、目的端口、傳輸層協(xié)議(例如,TCP、UDP 等)的五元組來標(biāo)識(shí)。類似地,作為對(duì)應(yīng)的網(wǎng)絡(luò)會(huì)話一部分的、源自一個(gè)特定的目的設(shè)備24 并發(fā)送至一個(gè)特定的源設(shè)備12的數(shù)據(jù)包組也形成數(shù)據(jù)包流。在一些環(huán)境中,源設(shè)備12也 被稱為“客戶端”,目的設(shè)備24也被稱為“服務(wù)器”。通常,網(wǎng)絡(luò)會(huì)話包括在兩個(gè)設(shè)備之間的 兩條數(shù)據(jù)包流,每條數(shù)據(jù)包流均處于相反方向。在圖1的實(shí)施例中,源設(shè)備12經(jīng)由網(wǎng)絡(luò)14耦合至主IDP設(shè)備16和備份IDP設(shè)備 20,并且主IDP設(shè)備16和備份IDP設(shè)備20經(jīng)由網(wǎng)絡(luò)22耦合至目的設(shè)備24。在其他實(shí)施 例中,任一或所有源設(shè)備12可以直接或通過類似于網(wǎng)絡(luò)14的其他網(wǎng)絡(luò)耦合至主IDP設(shè)備 16和備份IDP設(shè)備20。一般,網(wǎng)絡(luò)14和網(wǎng)絡(luò)22通常包括一個(gè)或多個(gè)網(wǎng)絡(luò)設(shè)備,諸如像路 由器、交換機(jī)、網(wǎng)橋、網(wǎng)關(guān)、集線器或安全設(shè)備。主IDP設(shè)備16和備份IDP設(shè)備20還經(jīng)由數(shù) 據(jù)鏈路18耦合。在圖1的實(shí)施例中,主IDP設(shè)備16和備份IDP設(shè)備20經(jīng)由數(shù)據(jù)鏈路18 直接耦合。然而,在其他實(shí)施例中,主IDP設(shè)備16和備份IDP設(shè)備20經(jīng)由中間網(wǎng)絡(luò)設(shè)備耦
合出于說明的目的,假設(shè)網(wǎng)絡(luò)14包括將通信量導(dǎo)向主IDP設(shè)備16和/或備份IDP 設(shè)備20的路由器或交換機(jī)。在一個(gè)實(shí)施例中,在主IDP設(shè)備16仍然保持主動(dòng)時(shí),網(wǎng)絡(luò)14 邊緣處的交換機(jī)將數(shù)據(jù)包流導(dǎo)向主IDP設(shè)備16。當(dāng)主IDP設(shè)備16切換或故障切換到備份 IDP設(shè)備20時(shí),交換機(jī)更新轉(zhuǎn)發(fā)信息,以使網(wǎng)絡(luò)通信量導(dǎo)向備份IDP設(shè)備20,而不是主IDP 設(shè)備16。主IDP設(shè)備16可以重啟、從錯(cuò)誤中恢復(fù)、被替換、或者以其他方式再次變?yōu)橹鲃?dòng), 在這種情況下,主IDP設(shè)備16變?yōu)橹鲃?dòng)且主要的,此后備份IDP設(shè)備20回到作為備份而不 是主設(shè)備的狀態(tài)。因此,在主IDP設(shè)備16再次變?yōu)橹鲃?dòng)之后,交換機(jī)再次更新轉(zhuǎn)發(fā)信息,以 使網(wǎng)絡(luò)通信量導(dǎo)向主IDP設(shè)備16而不是備份IDP設(shè)備20。主IDP設(shè)備16和備份IDP設(shè)備20形成高可用性機(jī)群。因此,以“機(jī)群模式”對(duì)主 IDP設(shè)備16和備份IDP設(shè)備20進(jìn)行配置。通常,通過高可用性機(jī)群的通信量在主節(jié)點(diǎn)(如, 主IDP設(shè)備16)上建立主動(dòng)會(huì)話,并且主節(jié)點(diǎn)在備份節(jié)點(diǎn)(如,備份IDP設(shè)備20)上建立備 份會(huì)話,并使主動(dòng)會(huì)話對(duì)于備份節(jié)點(diǎn)同步。術(shù)語“高可用性”通常是指“始終在線”的網(wǎng)絡(luò) 設(shè)備或服務(wù),即這些網(wǎng)絡(luò)設(shè)備或服務(wù)是可靠的,提供錯(cuò)誤檢測(cè)和可恢復(fù)性,以及提供連續(xù)的 運(yùn)行。在圖1的實(shí)施例中,當(dāng)主IDP設(shè)備16遇到錯(cuò)誤或者其他情況而離線時(shí),備份IDP設(shè) 備20作為主IDP設(shè)備執(zhí)行操作。即,在存在使主IDP設(shè)備16變?yōu)殡x線的錯(cuò)誤或事件的情 況下,主IDP設(shè)備16故障切換或切換到備份IDP設(shè)備20。例如,主IDP設(shè)備16可以切換到 備份IDP設(shè)備20,以執(zhí)行要求主IDP設(shè)備16重啟的軟件更新。在一些實(shí)施例中,主IDP設(shè)備16經(jīng)由主IDP設(shè)備16和備份IDP設(shè)備20之間的不 同鏈路向備份IDP設(shè)備20發(fā)送數(shù)據(jù)包流的應(yīng)用層IDP狀態(tài)數(shù)據(jù)(例如,同步消息)和控制 消息(例如,心跳或保持運(yùn)行消息)。這些鏈路可以包括相同物理介質(zhì)上的獨(dú)立邏輯鏈路或 獨(dú)立物理鏈路。在一些實(shí)施例中,備份IDP設(shè)備20通過接收周期性保持運(yùn)行消息來確定主 IDP設(shè)備16仍然主動(dòng)。因此,當(dāng)備份IDP設(shè)備20在一定時(shí)段之后未接收到來自主IDP設(shè) 備16的保持運(yùn)行消息時(shí),備份IDP設(shè)備20確定主IDP設(shè)備16不再主動(dòng),因而備份IDP設(shè) 備20變?yōu)橹鲃?dòng),處理主IDP設(shè)備16的故障以將預(yù)期的保持運(yùn)行消息作為故障切換事件來發(fā)送。如上所述,主IDP設(shè)備16和備份IDP設(shè)備20執(zhí)行源設(shè)備12和目的設(shè)備24之間 的數(shù)據(jù)包流的應(yīng)用層數(shù)據(jù)的有狀態(tài)檢查。即,主IDP設(shè)備16運(yùn)行應(yīng)用層協(xié)議解碼器,該解 碼器處理應(yīng)用層通信并輸出識(shí)別應(yīng)用層事務(wù)的事務(wù)數(shù)據(jù)。具體地,事務(wù)數(shù)據(jù)表示兩個(gè)對(duì)等 設(shè)備之間的一系列相關(guān)應(yīng)用層通信何時(shí)開始及結(jié)束。然后,主IDP設(shè)備16向每個(gè)事務(wù)應(yīng)用 諸如使用確定性有限自動(dòng)機(jī)(DFA)的簽名匹配的入侵檢測(cè)算法或其他算法,來檢測(cè)可接受 和不可接受的應(yīng)用層數(shù)據(jù)。在一些實(shí)施例中,主IDP設(shè)備16和備份IDP設(shè)備20包括用于 可被IDP設(shè)備檢查的每種類型的應(yīng)用層協(xié)議的特定DFA。在一些實(shí)施例中,DFA開始于數(shù)據(jù)包流的應(yīng)用的事務(wù)的應(yīng)用層組件的開始狀態(tài),使 得一旦達(dá)到組件的結(jié)尾,IDP設(shè)備就確定DFA的結(jié)尾狀態(tài)是否對(duì)應(yīng)于接受狀態(tài)、非威脅狀 態(tài)、攻擊狀態(tài)或表示事務(wù)是否代表數(shù)據(jù)包流為惡意的其他狀態(tài)。在本文中DFA可被稱為“基 于應(yīng)用層組件的DFA”的原因在于,當(dāng)被應(yīng)用時(shí),在檢測(cè)到事務(wù)的應(yīng)用層組件的開始時(shí)每個(gè) DFA均開始于開始狀態(tài),并被配置為在達(dá)到正在被處理的應(yīng)用層數(shù)據(jù)內(nèi)的事務(wù)的同一應(yīng)用 層組件的完成之前或完成時(shí)轉(zhuǎn)變?yōu)榭山邮軤顟B(tài)或不可接受狀態(tài)。換句話說,被DFA應(yīng)用的檢測(cè)算法中的至少一些可以被配置為基于每個(gè)事務(wù)進(jìn) 行劃分,以使應(yīng)用層事務(wù)邊界不交叉。這有助于在故障切換到備份IDP設(shè)備20后對(duì)于現(xiàn) 有數(shù)據(jù)包流的錨定和處理。使用DFA來檢測(cè)網(wǎng)絡(luò)攻擊在Ma等人于2009年9月28日提 交的美國申請(qǐng)第 12/568,319 號(hào) “NETWORK TRAFFIC PATTERN MATCHING USING ADAPTIVE DETERMINISTIC FINITE AUTOMATA”以及Ma等人于2007年4月20日提交的美國申請(qǐng) 第 11/738,059 號(hào)“NETWORK ATTACK DETECTION USING PARTIAL DETERMINISTIC FINITE AUTOMATON PATTERN MATCHING”中進(jìn)行了更詳細(xì)地討論,將它們各自的全部?jī)?nèi)容結(jié)合于此 作為參考。主IDP設(shè)備16被配置為檢測(cè)源設(shè)備12和目的設(shè)備24之間的新通信會(huì)話,并且針 對(duì)每一通信會(huì)話,例如使用協(xié)議解碼器和/或應(yīng)用識(shí)別技術(shù)確定用于數(shù)據(jù)包流的初始數(shù)據(jù) 包的會(huì)話檢查的應(yīng)用層協(xié)議。實(shí)施例應(yīng)用識(shí)別技術(shù)在Burns等人于2009年4月29日提 交的美國專利申請(qǐng)第 12/432,325 號(hào) “DETECTING MALICIOUS NETWORK SOFTWARE AGENTS,,、 Yang等人于2007年11月8日提交的美國專利申請(qǐng)第11/937,163號(hào)“Multi-layered Application Classification and Decoding” 以及 Burns 等人于 2007 年 8 月 8 日提交的 美國專利申請(qǐng)第 11/835,923 號(hào)“Identifying Applications for Intrusion Detection Systems”中進(jìn)行了討論,將它們各自的全部?jī)?nèi)容結(jié)合于此作為參考。通常,主IDP設(shè)備16向備份IDP設(shè)備20發(fā)送相對(duì)較少的應(yīng)用層IDP狀態(tài)更新消 息,而向現(xiàn)有的通信會(huì)話(即,在故障切換之前建立的通信會(huì)話)以及新會(huì)話提供高可用性 IDP服務(wù)。在一個(gè)實(shí)施例中,主IDP設(shè)備16向備份IDP設(shè)備20發(fā)送用于諸如創(chuàng)建新網(wǎng)絡(luò)會(huì) 話(例如,當(dāng)主IDP設(shè)備16識(shí)別出先前未監(jiān)控的數(shù)據(jù)包流時(shí))、刪除現(xiàn)有網(wǎng)絡(luò)會(huì)話(例如, 在檢測(cè)到關(guān)閉的會(huì)話消息時(shí))以及阻止現(xiàn)有網(wǎng)絡(luò)會(huì)話(例如,當(dāng)主IDP設(shè)備16確定網(wǎng)絡(luò)會(huì) 話或其數(shù)據(jù)包流為惡意時(shí))的會(huì)話事件的應(yīng)用層IDP狀態(tài)更新消息。在一些實(shí)施例中,例 如在所識(shí)別的應(yīng)用層協(xié)議為長(zhǎng)度編碼且具有為限定長(zhǎng)度的事務(wù)的情況下,主IDP設(shè)備16向 備份IDP設(shè)備20發(fā)送每個(gè)事務(wù)的狀態(tài)更新,以向備份IDP設(shè)備20通知諸如TCP序列號(hào)的 標(biāo)記符,并信號(hào)通知下一應(yīng)用層事務(wù)何時(shí)在數(shù)據(jù)包流中開始。例如,可通過將當(dāng)前事務(wù)的長(zhǎng)度加到當(dāng)前事務(wù)的開始的序列號(hào)中(如需要加上其他數(shù)據(jù)包報(bào)頭的長(zhǎng)度)來計(jì)算層四TCP 序列號(hào)?!┳R(shí)別出用于通信會(huì)話的應(yīng)用層協(xié)議,主IDP設(shè)備16就向備份IDP設(shè)備20發(fā) 送應(yīng)用層IDP狀態(tài)更新消息,以記錄新會(huì)話。主IDP設(shè)備16將識(shí)別用于數(shù)據(jù)包流的應(yīng)用層 協(xié)議的動(dòng)作看作為用于IDP服務(wù)的初始會(huì)話事件。此時(shí),主IDP設(shè)備16向備份IDP設(shè)備20 發(fā)送識(shí)別數(shù)據(jù)包流并包括與數(shù)據(jù)包流相關(guān)聯(lián)的應(yīng)用層協(xié)議的識(shí)別的狀態(tài)更新消息。在一些 實(shí)施例中,在故障切換或切換之后,備份IDP設(shè)備20使用由主IDP設(shè)備16指定的應(yīng)用層協(xié) 議的身份來錨定數(shù)據(jù)包流的正確的協(xié)議解碼器,以檢測(cè)新的應(yīng)用層事務(wù)的開始并觸發(fā)用于 數(shù)據(jù)包流的更新的應(yīng)用層IDP服務(wù)的開始。例如,假設(shè)主IDP設(shè)備16確定用于數(shù)據(jù)包流的 應(yīng)用層協(xié)議包括HTTP,則備份IDP設(shè)備20可以查找新HTTP請(qǐng)求(例如,GET、HEAD或POST 請(qǐng)求)的開始。在故障切換之后,并且在檢測(cè)到當(dāng)前事務(wù)的結(jié)束和新事務(wù)的開始之后,備份 IDP設(shè)備20開始檢查與隨后的應(yīng)用層事務(wù)相關(guān)聯(lián)的應(yīng)用層數(shù)據(jù)。盡管備份IDP設(shè)備20可 以對(duì)在新事務(wù)的開始之前的數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)執(zhí)行一些處理(例如,無狀態(tài)處理),但備 份IDP設(shè)備20僅對(duì)在新事務(wù)之后的并包括該新事務(wù)的事務(wù)開始有狀態(tài)處理。本公開的技術(shù)可以防止在切換或故障切換到備份IDP設(shè)備20之后重新開始與被 主IDP設(shè)備16檢查的數(shù)據(jù)包流相關(guān)聯(lián)的網(wǎng)絡(luò)會(huì)話,從而允許IDP設(shè)備實(shí)現(xiàn)改進(jìn)的高可用性 IDP設(shè)備。此外,可以實(shí)現(xiàn)高可用性IDP服務(wù),而不需要主IDP設(shè)備16向備份IDP設(shè)備20 復(fù)制每個(gè)數(shù)據(jù)包流的每個(gè)所接收到的數(shù)據(jù)包,這種復(fù)制會(huì)在大規(guī)模網(wǎng)絡(luò)中消耗大量網(wǎng)絡(luò)和 計(jì)算資源。在一個(gè)實(shí)施例中,主IDP設(shè)備16向備份IDP設(shè)備20通知對(duì)于新檢測(cè)到的通信 會(huì)話的所識(shí)別的應(yīng)用層協(xié)議,并且備份IDP設(shè)備20在主IDP設(shè)備16切換或故障切換之后, 通過錨定現(xiàn)有數(shù)據(jù)包流的適當(dāng)?shù)膮f(xié)議解碼器并且使攻擊檢測(cè)與新的隨后事務(wù)的開始同步 來開始檢查數(shù)據(jù)包流。在一些實(shí)施例中,這些技術(shù)還包括在檢測(cè)到新的應(yīng)用層事務(wù)之后, 主IDP設(shè)備16向備份IDP設(shè)備20通知TCP序列號(hào)或者可用作備份IDP設(shè)備預(yù)測(cè)新事務(wù)開 始的輔助的其他標(biāo)記符。當(dāng)主IDP設(shè)備16檢測(cè)到當(dāng)前事務(wù)結(jié)束時(shí),主IDP設(shè)備16經(jīng)由用于特定數(shù)據(jù)包流的 數(shù)據(jù)鏈路18向備份IDP設(shè)備20發(fā)送應(yīng)用層IDP狀態(tài)更新消息。在各個(gè)實(shí)施例中,以不同 的方式來信號(hào)通知事務(wù)的結(jié)束。主要地,通過定界符值的存在(諸如換行字符、移行字符、 回車字符或它們的一些組合)或者通過使事務(wù)具有特定長(zhǎng)度來信號(hào)通知事務(wù)的結(jié)束。換行 或移行字符的實(shí)施例包括‘\n’和‘0Χ0Α’?;剀囎址膶?shí)施例包括‘\r’和‘0X0D’。其他 字符也可以用作定界符以指示事務(wù)的結(jié)束。通常,根據(jù)應(yīng)用和/或應(yīng)用層協(xié)議來定義指示 事務(wù)結(jié)束的定界符。因此,主IDP設(shè)備16和備份IDP設(shè)備20被配置為識(shí)別與被主IDP設(shè) 備16和備份IDP設(shè)備20識(shí)別的應(yīng)用層協(xié)議和應(yīng)用相對(duì)應(yīng)的定界符。當(dāng)通過定界符值來信號(hào)通知事務(wù)的結(jié)束時(shí),主IDP設(shè)備16不需要針對(duì)每個(gè)事務(wù)來 向備份IDP設(shè)備20發(fā)送消息。代替地,主IDP設(shè)備16可以僅發(fā)送針對(duì)每個(gè)網(wǎng)絡(luò)會(huì)話事件 (諸如創(chuàng)建、刪除、阻止或應(yīng)用識(shí)別事件)的應(yīng)用層IDP狀態(tài)消息。然而,當(dāng)事務(wù)為限定長(zhǎng) 度時(shí),主IDP設(shè)備16向備份IDP設(shè)備20通知表示下一事務(wù)開始的TCP序列號(hào)。具體地,主 IDP設(shè)備16計(jì)算當(dāng)前事務(wù)的第一數(shù)據(jù)包的TCP序列號(hào)、事務(wù)長(zhǎng)度和不通過由事務(wù)的數(shù)據(jù)包 的應(yīng)用層凈荷所表示的數(shù)據(jù)包報(bào)頭添加的任何附加長(zhǎng)度的總和作為與下一事務(wù)相對(duì)應(yīng)的 TCP序列號(hào)。
當(dāng)主IDP設(shè)備16確定事務(wù)的長(zhǎng)度時(shí),主IDP設(shè)備16構(gòu)建應(yīng)用層IDP狀態(tài)同步消 息(其包括與下一事務(wù)的開始相對(duì)應(yīng)的序列號(hào)),并將該狀態(tài)同步消息發(fā)送給備份IDP設(shè)備 20。反過來,備份IDP設(shè)備20響應(yīng)于該狀態(tài)同步消息更新用于數(shù)據(jù)包流的狀態(tài)信息。盡管為了解釋的目的主要針對(duì)有狀態(tài)IDP設(shè)備進(jìn)行了描述,但本公開的技術(shù)可以 應(yīng)用于其中需要知道序列號(hào)的任何主/備份網(wǎng)絡(luò)元對(duì)。例如,諸如入侵檢測(cè)或入侵防御設(shè) 備、數(shù)據(jù)丟失防御設(shè)備和網(wǎng)絡(luò)安全網(wǎng)關(guān)的其他安全設(shè)備可以執(zhí)行本公開的技術(shù)。作為另一 實(shí)施例,被配置為執(zhí)行統(tǒng)一資源定位符(URL)過濾的設(shè)備也可以被配置為執(zhí)行本公開的技 術(shù)。通常,利用協(xié)議解碼器的高可用性配置中的任何設(shè)備對(duì)可以被配置為執(zhí)行本公開的技 術(shù)。不是僅檢查切換或故障切換之后的新會(huì)話的新的數(shù)據(jù)包流,本公開的技術(shù)還向備 份IDP設(shè)備20提供對(duì)切換或故障切換之后的現(xiàn)有數(shù)據(jù)包流的數(shù)據(jù)包執(zhí)行有狀態(tài)檢查的能 力。具體地,備份IDP設(shè)備20使用在切換或故障切換之前從主IDP設(shè)備16接收到的應(yīng)用 層IDP狀態(tài)更新消息,來確定數(shù)據(jù)包流的新事務(wù)何時(shí)開始,并且備份IDP設(shè)備20開始檢查 新事務(wù)的數(shù)據(jù)包流和該數(shù)據(jù)包流的每個(gè)隨后的事務(wù)。在切換或故障切換之后,備份IDP設(shè)備20進(jìn)入“錨定模式”,在該模式中備份IDP 設(shè)備20搜索數(shù)據(jù)包流的下一事務(wù)的開始。備份IDP設(shè)備20檢查數(shù)據(jù)包流的數(shù)據(jù)包,以檢 測(cè)表示新事務(wù)的定界符或具有TCP序列號(hào)等于從主IDP設(shè)備16接收到的表示新事務(wù)的TCP 序列號(hào)的數(shù)據(jù)包。在這兩種情況下,備份IDP設(shè)備20都試圖檢測(cè)表示當(dāng)前事務(wù)的最后數(shù)據(jù) 包和/或新事務(wù)的第一數(shù)據(jù)包的數(shù)據(jù)包,以錨定用于數(shù)據(jù)包流的協(xié)議解碼器,并開始檢查 數(shù)據(jù)包流以確定該數(shù)據(jù)包流是否代表網(wǎng)絡(luò)攻擊。通常,數(shù)據(jù)包流包括多個(gè)數(shù)據(jù)包。多個(gè)數(shù)據(jù)包中的每一個(gè)均可以對(duì)應(yīng)于數(shù)據(jù)包流 的特定事務(wù)。在一些實(shí)施例中,多個(gè)數(shù)據(jù)包中的一個(gè)或多個(gè)可以對(duì)應(yīng)于用于區(qū)分兩個(gè)事務(wù) 的定界符。即,數(shù)據(jù)包流的每個(gè)事務(wù)之后可以是定界符,以表示該事務(wù)和隨后事務(wù)的差別。 在這種實(shí)施例中,確定多個(gè)數(shù)據(jù)包中的至少一個(gè)對(duì)應(yīng)于新事務(wù)的第一數(shù)據(jù)包包括確定緊 接定界符之后的數(shù)據(jù)包對(duì)應(yīng)于事務(wù)的第一數(shù)據(jù)包??蛇x地,事務(wù)可以被限定為包括固定數(shù)目的字節(jié),被描述為事務(wù)的長(zhǎng)度。在一些實(shí) 施例中,數(shù)據(jù)包流的每個(gè)事務(wù)具有相同的長(zhǎng)度,而在其他實(shí)施例中,每個(gè)事務(wù)在事務(wù)報(bào)頭中 包括描述事務(wù)長(zhǎng)度的長(zhǎng)度值,例如事務(wù)的字節(jié)數(shù)。在這兩種情況下,確定多個(gè)數(shù)據(jù)包中的至 少一個(gè)對(duì)應(yīng)于事務(wù)的第一數(shù)據(jù)包包括確定數(shù)據(jù)包具有等于從主IDP設(shè)備16接收到的表示 新事務(wù)的開始的最大TCP序列號(hào)的TCP序列號(hào)??蛇x地,在一些實(shí)施例中,主IDP設(shè)備16 發(fā)送包括新事務(wù)的第一數(shù)據(jù)包的TCP序列號(hào)以及事務(wù)長(zhǎng)度的消息,并允許備份IDP設(shè)備20 計(jì)算下一事務(wù)的第一數(shù)據(jù)包的序列號(hào)。數(shù)據(jù)包同步數(shù)對(duì)應(yīng)于數(shù)據(jù)包流的特定字節(jié),因此,事 務(wù)的第一數(shù)據(jù)包的同步數(shù)和事務(wù)的最后數(shù)據(jù)包的同步數(shù)之間的差值對(duì)應(yīng)于事務(wù)的長(zhǎng)度。以 這種方式,可通過計(jì)算所接收到數(shù)據(jù)包的序列號(hào)和事務(wù)的第一數(shù)據(jù)包的序列號(hào)之間的差值 來識(shí)別下一事務(wù)的第一數(shù)據(jù)包,并且當(dāng)該差值等于事務(wù)長(zhǎng)度時(shí),確定所接收到的數(shù)據(jù)包為 下一事務(wù)的第一數(shù)據(jù)包。出于解釋的目的,針對(duì)單個(gè)數(shù)據(jù)包流描述了本公開的技術(shù)。然而,應(yīng)當(dāng)理解,通常, 主IDP設(shè)備16檢查多個(gè)數(shù)據(jù)包流的數(shù)據(jù)包。因此,本公開中所描述的技術(shù)可以應(yīng)用于任何 數(shù)目的數(shù)據(jù)包流。
12
圖1的系統(tǒng)10可以提供多個(gè)優(yōu)點(diǎn)。例如,主IDP設(shè)備16和備份IDP設(shè)備20的配 置在高可用性環(huán)境的示例性系統(tǒng)10中提供了用于同步會(huì)話狀態(tài)以及在從主IDP設(shè)備16和 備份IDP設(shè)備20故障切換或切換之后用于繼續(xù)網(wǎng)絡(luò)會(huì)話的IDP檢查的輕便機(jī)制。由于在 主IDP設(shè)備16和備份IDP設(shè)備20之間維持會(huì)話同步需要的通信最小化,因此由主IDP設(shè) 備16和備份IDP設(shè)備20實(shí)現(xiàn)的技術(shù)適當(dāng)調(diào)整用于檢查許多數(shù)據(jù)包流的系統(tǒng)。因?yàn)闋顟B(tài)同 步發(fā)生在主IDP設(shè)備16和備份IDP設(shè)備20之間,所以備份IDP設(shè)備20能夠在從主IDP設(shè) 備16切換或故障切換之后執(zhí)行有狀態(tài)數(shù)據(jù)包檢查。以這種方式,在切換或故障切換之后, 備份IDP設(shè)備20能夠檢查新事務(wù)的數(shù)據(jù)包以及先前由主IDP設(shè)備16檢查的數(shù)據(jù)包流的隨 后數(shù)據(jù)包。圖2是示出主IDP設(shè)備16 (圖1)的組件的示例性布置的框圖。備份IDP設(shè)備20 可以包括與關(guān)于圖2描述的那些組件類似的組件。在圖2的實(shí)施例中,主IDP設(shè)備16包括 輸入網(wǎng)絡(luò)接口 30、控制單元32、流管理模塊34、狀態(tài)檢查引擎28、協(xié)議解碼器36、轉(zhuǎn)發(fā)組件 31、輸出網(wǎng)絡(luò)接口 38、流表40、備份設(shè)備網(wǎng)絡(luò)接口 42和安全管理模塊45。盡管在圖2的實(shí) 施例中示出了三個(gè)不同的網(wǎng)絡(luò)接口,但其他實(shí)施例可以包括執(zhí)行屬于輸入網(wǎng)絡(luò)接口 30、輸 出網(wǎng)絡(luò)接口 38和/或備份設(shè)備網(wǎng)絡(luò)接口 42的功能的單個(gè)網(wǎng)絡(luò)接口。安全管理模塊45呈現(xiàn)用戶界面,管理員43通過其來配置主IDP設(shè)備16。例如,管 理員43可以配置主IDP設(shè)備16來監(jiān)控企業(yè)網(wǎng)絡(luò)的特定子網(wǎng)絡(luò)。此外,安全管理模塊45呈 現(xiàn)用戶界面,管理員43通過其來指定攻擊定義44,其中安全管理模塊45將該攻擊定義傳遞 到狀態(tài)檢查引擎28。在一個(gè)實(shí)施例中,攻擊定義44包括組合攻擊定義。此外,安全管理模 塊45可以呈現(xiàn)用戶界面,管理員43通過其來修改與數(shù)據(jù)包流特性(諸如用于監(jiān)控的最高 優(yōu)先級(jí)數(shù)據(jù)包流、用于應(yīng)用程序的端口綁定或用于確定與數(shù)據(jù)包流相關(guān)聯(lián)的應(yīng)用程序和協(xié) 議的類型的其他特征)有關(guān)的假設(shè)。在所示實(shí)施例中,主IDP設(shè)備16包括轉(zhuǎn)發(fā)平面23,其透明地監(jiān)控入站網(wǎng)絡(luò)通信量 25,并將網(wǎng)絡(luò)通信量作為出站網(wǎng)絡(luò)通信量26轉(zhuǎn)發(fā)。在圖2所示的實(shí)施例中,轉(zhuǎn)發(fā)平面23包 括輸入網(wǎng)絡(luò)接口 30、流管理模塊34、狀態(tài)檢查引擎28、多個(gè)協(xié)議解碼器36、轉(zhuǎn)發(fā)組件31、輸 出網(wǎng)絡(luò)接口 38和備份設(shè)備網(wǎng)絡(luò)接口 42。主IDP設(shè)備16包括執(zhí)行流管理模塊34和協(xié)議解碼器36的控制單元32。控制單 元32可包括用于執(zhí)行屬于控制單元32的功能的硬件、固件和/或軟件的任何組合。例如, 控制單元32可包括執(zhí)行存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的指令的可編程處理器。主IDP設(shè) 備16可包括以用于流管理模塊34和/或協(xié)議解碼器36的指令編碼的計(jì)算機(jī)可讀存儲(chǔ)介 質(zhì)??蛇x地,流管理模塊34和/或協(xié)議解碼器36可包括分立的硬件單元,諸如數(shù)字信號(hào)處 理器(DSP)、特定用途集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、或者任何其他等效集成 的或分立的邏輯電路、或硬件、固件和/或軟件的任何組合。通常,對(duì)于經(jīng)由輸入網(wǎng)絡(luò)接口 30接收到的數(shù)據(jù)包,流管理模塊34確定該數(shù)據(jù)包所 屬的數(shù)據(jù)包流以及該數(shù)據(jù)包流的特性。流管理模塊34還將每個(gè)數(shù)據(jù)包流的會(huì)話狀態(tài)更新 (例如事件更新、對(duì)于長(zhǎng)度編碼協(xié)議的序列號(hào)更新,對(duì)于特定網(wǎng)絡(luò)設(shè)備、數(shù)據(jù)包流或網(wǎng)絡(luò)會(huì) 話所采取的動(dòng)作(例如,阻止、速率限制、阻止阻擋時(shí)間等)、或其他狀態(tài)更新)提供給備份 IDP設(shè)備20。對(duì)于每個(gè)數(shù)據(jù)包流,流管理模塊34向備份IDP設(shè)備20提供針對(duì)每個(gè)數(shù)據(jù)包 流事件的狀態(tài)更新。對(duì)于對(duì)應(yīng)于長(zhǎng)度編碼應(yīng)用層協(xié)議的數(shù)據(jù)包流,主IDP設(shè)備16以每個(gè)新
13事務(wù)來提供應(yīng)用層IDP狀態(tài)更新消息,以識(shí)別與下一事務(wù)的第一數(shù)據(jù)包相對(duì)應(yīng)的TCP序列號(hào)。當(dāng)首先接收到數(shù)據(jù)包流時(shí),流管理模塊34構(gòu)建包括關(guān)于數(shù)據(jù)包流的信息的狀態(tài) 更新消息,該消息表示新的數(shù)據(jù)包流已經(jīng)開始且被主IDP設(shè)備16監(jiān)控。例如,狀態(tài)更新消息 包括諸如五元組{源IP地址、目的IP地址、源端口、目的端口、協(xié)議}的信息,并且在一些 實(shí)施例中,包括如何區(qū)分事務(wù)的指示(例如,是否使用限定長(zhǎng)度事務(wù)或定界符來區(qū)分事務(wù), 使用哪個(gè)特定的定界符、事務(wù)長(zhǎng)度等)。當(dāng)識(shí)別出對(duì)應(yīng)于數(shù)據(jù)包流的應(yīng)用時(shí),流管理模塊34 還發(fā)送應(yīng)用層IDP狀態(tài)更新消息,其中該消息包括應(yīng)用的標(biāo)識(shí)。流管理模塊34接收入站通信量25,并識(shí)別通信量?jī)?nèi)的網(wǎng)絡(luò)流。每個(gè)網(wǎng)絡(luò)流均表示 網(wǎng)絡(luò)通信量?jī)?nèi)在一個(gè)方向上的數(shù)據(jù)包的流,并且至少被源地址、目的地址和通信協(xié)議所標(biāo) 識(shí)。流管理模塊34可利用包括了源介質(zhì)存取控制(MAC)地址、目的MAC地址、源端口和目 的端口的附加信息來指定網(wǎng)絡(luò)流。其他實(shí)施例可以使用諸如IP地址的其他信息來標(biāo)識(shí)網(wǎng) 絡(luò)流。流管理模塊34將描述網(wǎng)絡(luò)通信量?jī)?nèi)存在的每個(gè)有效數(shù)據(jù)包流的數(shù)據(jù)保持在流表 40中。流表40指定與每個(gè)有效數(shù)據(jù)包流相關(guān)聯(lián)的網(wǎng)絡(luò)元,S卩,諸如與數(shù)據(jù)包流相關(guān)聯(lián)的源 和目的設(shè)備和端口的低級(jí)信息。此外,流表40標(biāo)識(shí)共同形成客戶端和服務(wù)器之間的單個(gè)通 信會(huì)話的數(shù)據(jù)包流對(duì)或組。例如,流表40可以將通信會(huì)話指定為共享至少某些公共網(wǎng)絡(luò)地 址、端口和協(xié)議的相反方向上流的數(shù)據(jù)包流對(duì)。流管理模塊34保持流表40,該流表包括被主IDP設(shè)備16監(jiān)控的每個(gè)數(shù)據(jù)包流的 參數(shù)。如以下關(guān)于圖4的實(shí)施例更詳細(xì)描述的,在一個(gè)實(shí)施例中,流表40包括用于每個(gè)數(shù) 據(jù)包流的項(xiàng),其包括諸如數(shù)據(jù)包流識(shí)別信息(諸如五元組{源IP地址、目的IP地址、源端 口、目的端口、協(xié)議})、對(duì)應(yīng)于數(shù)據(jù)包流的應(yīng)用的識(shí)別、數(shù)據(jù)包流是有效還是被阻止以及如 何區(qū)分事務(wù)(例如,是使用定界符還是事務(wù)長(zhǎng)度)的信息。流表40通常包括被主IDP設(shè)備 16監(jiān)控的每個(gè)數(shù)據(jù)包流的項(xiàng)。當(dāng)主IDP設(shè)備16接收到新的數(shù)據(jù)包流時(shí),流管理模塊34從形成數(shù)據(jù)包流的三次 握手的數(shù)據(jù)包中提取數(shù)據(jù),以在流表40中創(chuàng)建新的項(xiàng)。三次握手通常包括從客戶端到服 務(wù)器的同步(SYN)數(shù)據(jù)包、從服務(wù)器到客戶端的同步確認(rèn)(SYN-ACK)數(shù)據(jù)包以及從客戶端 到服務(wù)器的確認(rèn)(ACK)數(shù)據(jù)包。這些數(shù)據(jù)包還包括會(huì)話信息,諸如用于客戶端(SYN數(shù)據(jù)包 中)和服務(wù)器(SYN-ACK數(shù)據(jù)包中)二者的初始序列號(hào)。同樣地,主IDP設(shè)備16開始檢查新的數(shù)據(jù)包流的數(shù)據(jù)包,以識(shí)別用于數(shù)據(jù)包流的 應(yīng)用層協(xié)議。一旦識(shí)別出協(xié)議,主IDP設(shè)備16就經(jīng)由備份設(shè)備網(wǎng)絡(luò)接口向備份IDP設(shè)備20 發(fā)送IDP狀態(tài)更新消息,其中IDP狀態(tài)更新消息識(shí)別新的數(shù)據(jù)包流,并包括已經(jīng)被識(shí)別為用 在數(shù)據(jù)包的凈荷內(nèi)的應(yīng)用層協(xié)議的識(shí)別。通常,區(qū)分事務(wù)的方式由應(yīng)用層協(xié)議來定義。而 在一些實(shí)施例中,主IDP設(shè)備16使用表示所識(shí)別的應(yīng)用層協(xié)議的狀態(tài)更新消息明確地向備 份IDP設(shè)備20通知區(qū)分事務(wù)的方式。在一些實(shí)施例中,主IDP設(shè)備16在表示所識(shí)別協(xié)議 的狀態(tài)更新消息中包括區(qū)分事務(wù)的方式是否包括定界符的使用,在這種情況下,主IDP設(shè) 備16可進(jìn)一步指示使用哪個(gè)定界符,或者使用限定長(zhǎng)度的事務(wù),在使用限定長(zhǎng)度的事務(wù)的 情況下,主IDP設(shè)備16可進(jìn)一步在狀態(tài)更新消息中或者每個(gè)新事務(wù)的單獨(dú)的消息中指示每 個(gè)事務(wù)的長(zhǎng)度。
流管理模塊34確定是否使用定界符或固定位/字節(jié)長(zhǎng)度序列來定義事務(wù)。在使 用定界符來表示事務(wù)之間的分開的實(shí)施例中,流管理模塊34還確定將哪個(gè)定界符應(yīng)用于 被確定為與數(shù)據(jù)包流相對(duì)應(yīng)的協(xié)議。在一些實(shí)施例中,流管理模塊34針對(duì)協(xié)議確定區(qū)分事 務(wù)的方式(例如,通過查找諸如換行和回車字符的公共定界符),而在其他實(shí)施例中,控制 單元32只基于應(yīng)用層協(xié)議識(shí)別來確定如何將事務(wù)彼此區(qū)分開。當(dāng)用于數(shù)據(jù)包流的參數(shù)改 變時(shí),流管理模塊34更新對(duì)應(yīng)于該數(shù)據(jù)包流的項(xiàng)。備份IDP設(shè)備20還包括與流表40類似的本地流表。當(dāng)流管理模塊34確定所接 收到的數(shù)據(jù)包形成新的數(shù)據(jù)包流的一部分時(shí),流管理模塊34經(jīng)由數(shù)據(jù)鏈路18向備份IDP 設(shè)備20發(fā)送從新的數(shù)據(jù)包流的三次握手?jǐn)?shù)據(jù)包提取的信息(例如,數(shù)據(jù)包流識(shí)別5元組)。 備份IDP設(shè)備20使用從主IDP設(shè)備16的流管理模塊34接收的數(shù)據(jù)在本地流表中創(chuàng)建新 的數(shù)據(jù)包流的新項(xiàng)。在一些實(shí)施例中,該信息還包括數(shù)據(jù)包流的初始序列號(hào)。當(dāng)備份IDP 設(shè)備20從主IDP設(shè)備16接收到應(yīng)用層IDP狀態(tài)更新時(shí),備份IDP設(shè)備20更新備份IDP設(shè) 備20的本地流表中的相應(yīng)項(xiàng)。當(dāng)主IDP設(shè)備16切換或故障切換到備份IDP設(shè)備20時(shí),備份IDP設(shè)備20開始接 收先前由主IDP設(shè)備16監(jiān)控的數(shù)據(jù)包流的數(shù)據(jù)包。備份IDP設(shè)備20掃描所接收到的數(shù)據(jù) 包流的數(shù)據(jù)包,以(例如)通過識(shí)別由數(shù)據(jù)包的凈荷所承載的應(yīng)用層數(shù)據(jù)內(nèi)的事務(wù)定界符 來識(shí)別數(shù)據(jù)包流的新應(yīng)用層事務(wù)的開始。在數(shù)據(jù)包流的應(yīng)用層事務(wù)具有限定字節(jié)長(zhǎng)度(例 如對(duì)于長(zhǎng)度編碼協(xié)議)的實(shí)施例中,備份IDP設(shè)備20確定具有序列號(hào)等于來自主IDP設(shè)備 16的最新狀態(tài)更新消息的序列號(hào)的數(shù)據(jù)包對(duì)應(yīng)于新事務(wù)的第一數(shù)據(jù)包。當(dāng)備份IDP設(shè)備 20檢測(cè)到新事務(wù)的第一數(shù)據(jù)包時(shí),備份IDP設(shè)備20開始處理新事務(wù)以檢測(cè)數(shù)據(jù)包流的隨后 數(shù)據(jù)包中的攻擊。在一些實(shí)施例中,備份IDP設(shè)備20將不是新應(yīng)用層事務(wù)一部分的數(shù)據(jù)包 流的數(shù)據(jù)包轉(zhuǎn)發(fā),而不檢查這些數(shù)據(jù)包。在一些實(shí)施例中,備份IDP設(shè)備20將在新事務(wù)之 前接收到的數(shù)據(jù)包丟棄。以這種方式,在切換或故障切換之后,備份IDP設(shè)備20開始處于 錨定模式,等待新應(yīng)用層事務(wù)的開始,將應(yīng)用層協(xié)議解碼器錨定到應(yīng)用層數(shù)據(jù)中新事務(wù)開 始的點(diǎn),然后切換到攻擊檢測(cè)和防御模式并使用基于應(yīng)用層組件的DFA掃描隨后的事務(wù)以 試圖識(shí)別和防御惡意網(wǎng)絡(luò)通信量。如下面進(jìn)一步詳細(xì)描述的,狀態(tài)檢查引擎28檢查數(shù)據(jù)包流以識(shí)別數(shù)據(jù)包流內(nèi)的 攻擊。根據(jù)本公開的技術(shù),狀態(tài)檢查引擎28檢查數(shù)據(jù)包流以檢測(cè)在數(shù)據(jù)包流的應(yīng)用層運(yùn)行 的攻擊。當(dāng)狀態(tài)檢查引擎28檢測(cè)到攻擊時(shí),狀態(tài)檢查引擎28執(zhí)行編程響應(yīng),諸如向安全管 理模塊45發(fā)送警報(bào)41或者指示轉(zhuǎn)發(fā)組件31丟棄數(shù)據(jù)包流的數(shù)據(jù)包或結(jié)束對(duì)應(yīng)于該數(shù)據(jù) 包流的網(wǎng)絡(luò)會(huì)話。狀態(tài)檢查引擎28還可以對(duì)數(shù)據(jù)包流進(jìn)行速率限制,即將與所檢測(cè)到的攻 擊對(duì)應(yīng)的網(wǎng)絡(luò)會(huì)話抑制到特定的比特率,諸如IOMbit/秒。攻擊檢測(cè)模塊52還可以將參與 網(wǎng)絡(luò)會(huì)話的至少一個(gè)網(wǎng)絡(luò)設(shè)備的標(biāo)識(shí)符記錄在流表35中,并阻止源自所記錄的標(biāo)識(shí)符的 以后的連接請(qǐng)求。即,流管理模塊34可以接收連接請(qǐng)求,確定連接請(qǐng)求源自記錄在流表40 中的標(biāo)識(shí)符,并阻止連接請(qǐng)求。以這種方式,主IDP設(shè)備16可以阻擋來自參與網(wǎng)絡(luò)會(huì)話的網(wǎng)絡(luò)設(shè)備的將來連接請(qǐng) 求作為編程響應(yīng)。轉(zhuǎn)發(fā)組件31還可以構(gòu)建消息以發(fā)送至其他網(wǎng)絡(luò)設(shè)備(諸如其他路由器 或IDP、IDS或IPS設(shè)備),以阻擋或以其他方式響應(yīng)來自源網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)包流,其中狀態(tài) 檢查引擎28對(duì)于該數(shù)據(jù)包流檢測(cè)攻擊。警報(bào)41可包括諸如數(shù)據(jù)包流的源地址、對(duì)應(yīng)于數(shù)據(jù)包流的應(yīng)用的識(shí)別、使?fàn)顟B(tài)檢查引擎28斷定特定網(wǎng)絡(luò)會(huì)話為惡意的網(wǎng)絡(luò)會(huì)話的度量計(jì) 算得到的分?jǐn)?shù)或者關(guān)于網(wǎng)絡(luò)會(huì)話的其他信息的詳細(xì)信息。除簽名之外,主IDP設(shè)備16可使用重新組合的TCP段的最小數(shù)據(jù)尺寸,以識(shí)別與 數(shù)據(jù)包流或壓縮數(shù)據(jù)包流相對(duì)應(yīng)的應(yīng)用。特定應(yīng)用要求最小的數(shù)據(jù)量,使得主IDP設(shè)備16 可以通過確定數(shù)據(jù)包流是否包含用于所識(shí)別的協(xié)議的足夠數(shù)據(jù)來區(qū)分惡意數(shù)據(jù)包流。此 外,主IDP設(shè)備16可以不需要識(shí)別每個(gè)應(yīng)用。在一個(gè)實(shí)施例中,當(dāng)應(yīng)用是未知時(shí),主IDP設(shè) 備16可以僅轉(zhuǎn)發(fā)數(shù)據(jù)包流。然而,其他實(shí)施例對(duì)未識(shí)別的應(yīng)用采取其他動(dòng)作,諸如丟棄目 標(biāo)未知應(yīng)用的所有數(shù)據(jù)包或者向與未知應(yīng)用類型相關(guān)聯(lián)的所有數(shù)據(jù)包流添加默認(rèn)簽名。其 他實(shí)施例還將本公開的技術(shù)應(yīng)用于諸如用戶數(shù)據(jù)報(bào)協(xié)議(UDP)的其他協(xié)議。因此,主IDP 設(shè)備16可以要求UDP段的最小數(shù)據(jù)尺寸,以識(shí)別與UDP段相關(guān)聯(lián)的應(yīng)用。在一個(gè)實(shí)施例中,狀態(tài)檢查引擎28包括用于執(zhí)行應(yīng)用識(shí)別的共處理器。共處理器 可以連續(xù)地接收數(shù)據(jù)包流形式的輸入,并且可以不斷地對(duì)數(shù)據(jù)包流執(zhí)行應(yīng)用識(shí)別。對(duì)于數(shù) 據(jù)包流的每個(gè)組塊,共處理器可以返回共處理器所識(shí)別的應(yīng)用的身份。通常,協(xié)議解碼器36包括一個(gè)或多個(gè)特定協(xié)議軟件模塊組,其處理應(yīng)用層通信33 并輸出識(shí)別應(yīng)用層事務(wù)的事務(wù)數(shù)據(jù)39。具體地,事務(wù)數(shù)據(jù)39表示兩個(gè)對(duì)等設(shè)備之間的一系 列相關(guān)應(yīng)用層通信何時(shí)開始和結(jié)束。此外,協(xié)議解碼器將事務(wù)分解為應(yīng)用層元素,攻擊簽名 在其上匹配且檢測(cè)協(xié)議反常。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)協(xié)議解碼器36可以為一般的協(xié) 議解碼器,從而一般的協(xié)議解碼器試圖識(shí)別與應(yīng)用層通信33的凈荷相對(duì)應(yīng)的應(yīng)用。一般的 協(xié)議解碼器的實(shí)施例為使應(yīng)用指紋/簽名的預(yù)定組與被解碼的數(shù)據(jù)相匹配并基于特定的 指紋匹配識(shí)別應(yīng)用的算法。例如,一般的協(xié)議解碼器可試圖識(shí)別與HTTP通信的凈荷相對(duì)應(yīng) 的應(yīng)用。多個(gè)協(xié)議解碼器36對(duì)應(yīng)于不同的通信協(xié)議或服務(wù)??杀粎f(xié)議解碼器36支持的 通信協(xié)議的實(shí)施例包括超文本傳輸協(xié)議(HTTP)、文件傳輸協(xié)議(FTP)、網(wǎng)絡(luò)新聞傳輸協(xié)議 (NNTP)、簡(jiǎn)單郵件傳輸協(xié)議(SMTP)、遠(yuǎn)程登錄、域名系統(tǒng)(DNS)、Gopher、查找器、郵局協(xié)議 (POP)、加密套接字協(xié)議層(SSL)協(xié)議、輕量級(jí)目錄存取協(xié)議(LDAP)、安全外殼(SSH)、服務(wù) 器信息塊(SMB)和其他協(xié)議。在一個(gè)實(shí)施例中,每個(gè)協(xié)議解碼器36均經(jīng)由通用軟件接口 (即,以獨(dú)立于下層傳輸機(jī)制的方式處理應(yīng)用數(shù)據(jù)的軟件接口)接收數(shù)據(jù)。以這種方式,當(dāng) 應(yīng)用于給定的數(shù)據(jù)包流時(shí),協(xié)議解碼器可以被交換、重新使用并堆疊(分層)。在協(xié)議解碼器36應(yīng)用于給定的數(shù)據(jù)包流或單獨(dú)的數(shù)據(jù)包之后,協(xié)議解碼器將事 務(wù)數(shù)據(jù)39、應(yīng)用層元素35和協(xié)議異常數(shù)據(jù)37返回到狀態(tài)檢查引擎28。狀態(tài)檢查引擎28 對(duì)特定協(xié)議應(yīng)用層元素35和異常數(shù)據(jù)37應(yīng)用攻擊定義44,以檢測(cè)和防御網(wǎng)絡(luò)攻擊和其他 安全性危險(xiǎn)。在檢測(cè)到安全性危險(xiǎn)的情況下,狀態(tài)檢查引擎28向安全管理模塊45輸出警報(bào)41, 以進(jìn)行存入和進(jìn)一步分析。此外,狀態(tài)檢查引擎28可以根據(jù)策略定義采取附加動(dòng)作,諸如 丟棄與通信會(huì)話相關(guān)聯(lián)的數(shù)據(jù)包,自動(dòng)關(guān)閉通信會(huì)話或其他動(dòng)作。如果對(duì)于給定的通信會(huì) 話未檢測(cè)到安全性危險(xiǎn),則轉(zhuǎn)發(fā)組件31繼續(xù)在對(duì)等設(shè)備之間傳送數(shù)據(jù)包流。例如,轉(zhuǎn)發(fā)組 件31可以保持根據(jù)用于傳送數(shù)據(jù)包流的企業(yè)網(wǎng)絡(luò)的拓?fù)浯鎯?chǔ)路由的路由表。當(dāng)狀態(tài)檢查 引擎28確定僅有一個(gè)壓縮子數(shù)據(jù)包或多個(gè)壓縮子數(shù)據(jù)包的一個(gè)不完整子集對(duì)應(yīng)于惡意網(wǎng) 絡(luò)會(huì)話時(shí),轉(zhuǎn)發(fā)組件31可以只傳送包括不與惡意網(wǎng)絡(luò)會(huì)話相對(duì)應(yīng)的那些子數(shù)據(jù)包的重新組合的數(shù)據(jù)包。主IDP設(shè)備16的狀態(tài)檢查引擎28對(duì)每個(gè)數(shù)據(jù)包流檢查接收到的數(shù)據(jù)包。例如, 狀態(tài)檢查引擎28可以對(duì)數(shù)據(jù)包流內(nèi)的每個(gè)應(yīng)用層事務(wù)執(zhí)行一個(gè)或多個(gè)DFA,以確定事務(wù)是 否對(duì)應(yīng)于網(wǎng)絡(luò)攻擊。通常,DFA的定義被存儲(chǔ)在攻擊定義44中。攻擊定義44(例如)以攻 擊簽名的方式定義對(duì)應(yīng)于正則表達(dá)式的一個(gè)或多個(gè)攻擊。通過對(duì)數(shù)據(jù)包流的事務(wù)執(zhí)行DFA, 狀態(tài)檢查引擎28確定事務(wù)是否呈現(xiàn)攻擊。通常,DFA包括多個(gè)狀態(tài)、輸入字母表以及基于特定輸入字符定義的從第一狀態(tài)到 第二狀態(tài)的多個(gè)轉(zhuǎn)變。狀態(tài)檢查引擎28的一些實(shí)施例利用非確定性有限自動(dòng)機(jī)(NFA),其 能夠進(jìn)行狀態(tài)之間的lambda轉(zhuǎn)變,即,能夠進(jìn)行第一狀態(tài)和第二狀態(tài)之間的轉(zhuǎn)變而不需要 輸入字符。通常,當(dāng)從初始開始狀態(tài)開始時(shí),DFA (或NFA) “接受”輸入序列,則DFA處理使 DFA轉(zhuǎn)變并結(jié)束于一個(gè)或多個(gè)接受狀態(tài)中的令牌序列。在一些實(shí)施例中,DFA的特定接受狀 態(tài)被定義為攻擊狀態(tài),并且當(dāng)DFA接受攻擊狀態(tài)下的輸入序列時(shí),狀態(tài)檢查引擎28確定包 括一個(gè)或多個(gè)數(shù)據(jù)包的數(shù)據(jù)包流為惡意的,而其他接受狀態(tài)被定義為非惡意接受狀態(tài)。當(dāng)狀態(tài)檢查引擎28根據(jù)攻擊定義44確定數(shù)據(jù)包流的一個(gè)或多個(gè)數(shù)據(jù)包呈現(xiàn)網(wǎng)絡(luò) 攻擊時(shí),狀態(tài)檢查引擎28執(zhí)行一個(gè)或多個(gè)編程響應(yīng)。例如,編程響應(yīng)可包括丟棄攻擊數(shù)據(jù) 包、限制數(shù)據(jù)包流的速率、關(guān)閉與數(shù)據(jù)包流相關(guān)聯(lián)的網(wǎng)絡(luò)會(huì)話、向網(wǎng)絡(luò)會(huì)話的客戶端或服務(wù) 器(或兩者)發(fā)送關(guān)閉會(huì)話消息、阻擋通過客戶端或服務(wù)器的以后的網(wǎng)絡(luò)連接請(qǐng)求(永久 或限定的時(shí)間段)、或者將客戶端或服務(wù)器的一個(gè)或兩者的IP地址通知給其他網(wǎng)絡(luò)設(shè)備以 使這些網(wǎng)絡(luò)設(shè)備阻擋客戶端或服務(wù)器的網(wǎng)絡(luò)會(huì)話和/或關(guān)閉客戶端或服務(wù)器的當(dāng)前網(wǎng)絡(luò) 會(huì)話。當(dāng)攻擊檢測(cè)模塊32確定數(shù)據(jù)包流的數(shù)據(jù)包未呈現(xiàn)網(wǎng)絡(luò)攻擊時(shí),攻擊檢測(cè)模塊32將 數(shù)據(jù)包傳送至轉(zhuǎn)發(fā)組件31,并且向數(shù)據(jù)包流的目的地傳送數(shù)據(jù)包。此外,編程響應(yīng)對(duì)應(yīng)于數(shù)據(jù)包流事件,即“阻擋”事件。因此,流管理模塊34生成 表示相應(yīng)數(shù)據(jù)包流、阻擋事件已經(jīng)發(fā)生和進(jìn)行編程響應(yīng)的狀態(tài)更新消息。以這種方式,在切 換或故障切換之后,備份IDP設(shè)備20能夠繼續(xù)對(duì)數(shù)據(jù)包流實(shí)施編程響應(yīng)。圖3是進(jìn)一步詳細(xì)示出主IDP設(shè)備16的狀態(tài)檢查引擎28的實(shí)施例的框圖。在該 實(shí)施例中,狀態(tài)檢查引擎28包括重組模塊50、應(yīng)用識(shí)別模塊51、攻擊檢測(cè)模塊52、模式表 54、數(shù)據(jù)緩沖器55、異常表56和攻擊定義44。重組模塊50接收入站網(wǎng)絡(luò)通信量25,并通過去除任何下層傳輸信息(例如,層四 (L4)以下的信息)將來自數(shù)據(jù)包流的應(yīng)用層通信33重組。重組模塊50將重組的應(yīng)用層通 信33發(fā)送到應(yīng)用層識(shí)別模塊51,應(yīng)用層識(shí)別模塊確定用于網(wǎng)絡(luò)會(huì)話的應(yīng)用,然后將重組的 數(shù)據(jù)發(fā)送到合適的協(xié)議解碼器36以進(jìn)行處理。狀態(tài)檢查引擎28存儲(chǔ)從安全管理模塊45接收到的攻擊定義44。例如,攻擊定義 44可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,諸如隨機(jī)存取存儲(chǔ)器(RAM)。每個(gè)攻擊定義44均指定在 模式表54內(nèi)指定的一個(gè)或多個(gè)模式以及在異常表56內(nèi)指定的一個(gè)或多個(gè)特定協(xié)議異常的組合。當(dāng)狀態(tài)檢查引擎28接收到作為數(shù)據(jù)包流的一部分的數(shù)據(jù)包時(shí),重組模塊50將該 數(shù)據(jù)包在數(shù)據(jù)緩沖器55中緩存。在一個(gè)實(shí)施例中,數(shù)據(jù)緩沖器55存儲(chǔ)數(shù)據(jù)作為滑動(dòng)窗。即, 數(shù)據(jù)緩沖器55存儲(chǔ)數(shù)據(jù),直到變滿或達(dá)到識(shí)別所指定要求的數(shù)據(jù)的最小量。當(dāng)存滿時(shí),數(shù) 據(jù)緩沖器55丟棄一些數(shù)據(jù),以為存儲(chǔ)新數(shù)據(jù)留出空間。在一個(gè)實(shí)施例中,數(shù)據(jù)緩沖器55根據(jù)其中所存儲(chǔ)的第一數(shù)據(jù)是在數(shù)據(jù)緩沖器55變滿時(shí)要丟棄的第一數(shù)據(jù)的先入先出(FIFO) 協(xié)議存儲(chǔ)和丟棄數(shù)據(jù)。在另一實(shí)施例中,數(shù)據(jù)緩沖器55根據(jù)其中在數(shù)據(jù)緩沖器55變滿時(shí)將 丟棄最近使用最少的數(shù)據(jù)包流以為新數(shù)據(jù)的存儲(chǔ)留出空間的最近使用最少協(xié)議丟棄數(shù)據(jù)。在一個(gè)實(shí)施例中,重組模塊50根據(jù)5元組{源IP地址、目的IP地址、協(xié)議、源端 口、目的端口 }使網(wǎng)絡(luò)會(huì)話的數(shù)據(jù)包流中的數(shù)據(jù)包相關(guān)聯(lián)。其他實(shí)施例使用其他方法來使 數(shù)據(jù)包與特定的數(shù)據(jù)包流或壓縮數(shù)據(jù)包流相關(guān)聯(lián)。在一個(gè)實(shí)施例中,主IDP設(shè)備16包括利 用虛擬局域網(wǎng)(VLAN)的網(wǎng)絡(luò)的一部分。因此,重組模塊50可以根據(jù)VLAN標(biāo)識(shí)符、源地址 和目的地址使數(shù)據(jù)包流中的數(shù)據(jù)包相關(guān)聯(lián)。應(yīng)用識(shí)別模塊51試圖識(shí)別與每個(gè)被攔截的通信會(huì)話相關(guān)聯(lián)的應(yīng)用。在一個(gè)實(shí)施 方式中,當(dāng)狀態(tài)檢查引擎28接收作為數(shù)據(jù)包流的一部分的數(shù)據(jù)包時(shí),重組模塊50將數(shù)據(jù)包 在數(shù)據(jù)緩沖器55中緩存。重組模塊50試圖根據(jù)數(shù)據(jù)緩沖器55中的數(shù)據(jù)包重新構(gòu)建應(yīng)用 層數(shù)據(jù)。然后,應(yīng)用識(shí)別模塊51根據(jù)該重新構(gòu)建的數(shù)據(jù)試圖識(shí)別與數(shù)據(jù)包相關(guān)聯(lián)的應(yīng)用。 在其他實(shí)施方式中,應(yīng)用識(shí)別模塊51可以使用其他技術(shù)來試圖識(shí)別與通信會(huì)話相關(guān)聯(lián)的 應(yīng)用。應(yīng)用識(shí)別模塊51將來自數(shù)據(jù)包的數(shù)據(jù)發(fā)送至協(xié)議解碼器36。當(dāng)應(yīng)用識(shí)別模塊51 能夠確定與通信會(huì)話相關(guān)聯(lián)的應(yīng)用時(shí),應(yīng)用識(shí)別模塊51將來自通信會(huì)話的數(shù)據(jù)發(fā)送至相 應(yīng)的一個(gè)協(xié)議解碼器36。當(dāng)應(yīng)用識(shí)別模塊51不能夠識(shí)別對(duì)應(yīng)于通信會(huì)話的應(yīng)用時(shí),應(yīng)用識(shí) 別模塊51將來自通信會(huì)話的數(shù)據(jù)發(fā)送至協(xié)議解碼器36的默認(rèn)協(xié)議解碼器。協(xié)議解碼器36包括用于各種應(yīng)用層協(xié)議的解碼器,該各種應(yīng)用層協(xié)議用于提取 事務(wù)數(shù)據(jù)39、應(yīng)用層元素35和協(xié)議異常數(shù)據(jù)37。在一些實(shí)施例中,協(xié)議解碼器36使用定 界符或限定長(zhǎng)度的事務(wù),來確定對(duì)應(yīng)于各個(gè)事務(wù)的重新組合應(yīng)用層數(shù)據(jù)的部分。此外,當(dāng)協(xié) 議解碼器36針對(duì)限定事務(wù)長(zhǎng)度的長(zhǎng)度編碼協(xié)議檢測(cè)到新事務(wù)的開始時(shí),協(xié)議解碼器36信 號(hào)通知流管理模塊34已經(jīng)檢測(cè)到新事務(wù)以及檢測(cè)到其中新事務(wù)開始的數(shù)據(jù)包。因此,流管 理模塊34計(jì)算與包括用于下一新事務(wù)的開始的數(shù)據(jù)的數(shù)據(jù)包相對(duì)應(yīng)的序列號(hào),并將算得 的序列號(hào)以狀態(tài)更新消息發(fā)送到備份IDP設(shè)備20。攻擊檢測(cè)模塊52向從包括各個(gè)應(yīng)用層事務(wù)的協(xié)議解碼器36接收到的應(yīng)用層元素 35和協(xié)議異常數(shù)據(jù)37應(yīng)用攻擊定義44。應(yīng)用層元素35可包括未壓縮數(shù)據(jù)包流或壓縮數(shù)據(jù) 包流(例如,使用層七應(yīng)用層協(xié)議來壓縮另一應(yīng)用層協(xié)議的通信會(huì)話)的應(yīng)用層元素。艮口, 攻擊檢測(cè)模塊52可檢測(cè)正常、非壓縮網(wǎng)絡(luò)通信量或壓縮數(shù)據(jù)包流中的網(wǎng)絡(luò)攻擊。對(duì)于每個(gè) 組合攻擊定義44,攻擊檢測(cè)模塊52選擇模式表52內(nèi)由組合攻擊定義指定的一個(gè)或多個(gè)模 式,并確定應(yīng)用層元素35的任意一個(gè)是否與所定義模式相匹配。每個(gè)模式均可被定義為相 應(yīng)的“正則表達(dá)式”,其通常是指用于匹配數(shù)據(jù)內(nèi)模式的公式。除確定是否存在所定義的模式之外,攻擊檢測(cè)模塊52還可以確定由協(xié)議解碼器 36檢測(cè)的任何協(xié)議異常是否與由攻擊定義44指定的協(xié)議異常相匹配。當(dāng)在給定的通信會(huì) 話內(nèi)檢測(cè)到由攻擊定義指定的模式和協(xié)議異常時(shí),攻擊檢測(cè)模塊52確定相應(yīng)的數(shù)據(jù)包流 與一個(gè)攻擊定義44相匹配。此外,每個(gè)攻擊定義44均可以基于每個(gè)事務(wù)或在通信會(huì)話的 存在期期間指定是否應(yīng)用模式匹配和協(xié)議異常。在檢測(cè)到安全性危險(xiǎn)的情況下,狀態(tài)檢查引擎28向安全管理模塊45(圖2)輸出 警報(bào)41以進(jìn)行存入和進(jìn)一步分析。狀態(tài)檢查引擎28還可以指示轉(zhuǎn)發(fā)組件31執(zhí)行對(duì)安全危險(xiǎn)的編程響應(yīng)。編程響應(yīng)可包括自動(dòng)丟棄與其中檢測(cè)到網(wǎng)絡(luò)攻擊的應(yīng)用層通信相關(guān)聯(lián)的 數(shù)據(jù)包流的數(shù)據(jù)包。狀態(tài)檢查引擎28還可以使轉(zhuǎn)發(fā)組件31向惡意網(wǎng)絡(luò)會(huì)話的一個(gè)或多個(gè) 參與者發(fā)送關(guān)閉會(huì)話消息作為編程響應(yīng)。圖4是示出流表40的示例性流表項(xiàng)60A和流管理模塊34的示例性子組件的框圖。 在圖4的實(shí)施例中,流管理模塊34包括數(shù)據(jù)包解析器61。當(dāng)流管理模塊34首先接收數(shù)據(jù) 包時(shí),數(shù)據(jù)包解析器61解析數(shù)據(jù)包,以確定該數(shù)據(jù)包是否屬于現(xiàn)有的數(shù)據(jù)包流或者該數(shù)據(jù) 包是否表示新的數(shù)據(jù)包流。數(shù)據(jù)包解析器61確定SYN數(shù)據(jù)包和SYN-ACK數(shù)據(jù)包表示新的 數(shù)據(jù)包流。即,數(shù)據(jù)包解析器61檢查數(shù)據(jù)包的TCP報(bào)頭的SYN標(biāo)記,以確定數(shù)據(jù)包是否表 示新的數(shù)據(jù)包流。在一些實(shí)施例中,數(shù)據(jù)包解析器61確定不與流表40的任何項(xiàng)相匹配的、 具有5元組{源IP地址、目的IP地址、源端口、目的端口、協(xié)議}的數(shù)據(jù)包也表示新(即, 未識(shí)別)的數(shù)據(jù)包流。當(dāng)數(shù)據(jù)包表示新的數(shù)據(jù)包流時(shí),數(shù)據(jù)包解析器61提取關(guān)于新的數(shù)據(jù)包流的信息。 流管理模塊34在流表40中為新的數(shù)據(jù)包流創(chuàng)建新項(xiàng),并在新項(xiàng)中存儲(chǔ)所提取的信息。通 常,流表40包括多個(gè)流表項(xiàng)60,但是出于解釋的目的在圖4中僅示出了一個(gè)項(xiàng)(流表項(xiàng) 60A)。流表項(xiàng)60A包括代表相應(yīng)數(shù)據(jù)包流的數(shù)據(jù)。在該實(shí)施例中,流表項(xiàng)60A包括源IP地 址62A、目的IP地址64A、源端口 66A、目的端口 68A、協(xié)議70A、識(shí)別應(yīng)用72A、DFA狀態(tài)74A、 事務(wù)結(jié)束標(biāo)識(shí)符76A和應(yīng)用層IDP狀態(tài)78A的值。數(shù)據(jù)包解析器61從新網(wǎng)絡(luò)會(huì)話的初始數(shù)據(jù)包(例如,形成三次握手以發(fā)起新TCP 會(huì)話的SYN、SYN-ACK和ACK數(shù)據(jù)包)中提取源IP地址、目的IP地址、源端口、目的端口和協(xié) 議值。在流表40中創(chuàng)建了表示新的數(shù)據(jù)包流的新項(xiàng)并將新項(xiàng)的應(yīng)用層IDP狀態(tài)78設(shè)定為 “創(chuàng)建”之后,流管理模塊34向備份IDP設(shè)備20發(fā)送一個(gè)或多個(gè)消息以指示已經(jīng)識(shí)別出新 的數(shù)據(jù)包流。該消息還包括用于創(chuàng)建新流表項(xiàng)的數(shù)據(jù)。因此,備份IDP設(shè)備20在備份IDP 設(shè)備20本地的流表中創(chuàng)建表示新的數(shù)據(jù)包流的項(xiàng)。當(dāng)被組合為形成五元組時(shí),源IP地址62A、目的IP地址64A、源端口 66A、目的端口 68A和協(xié)議70A的值識(shí)別對(duì)應(yīng)于流表項(xiàng)60A的數(shù)據(jù)包流。因此,當(dāng)流管理模塊34接收數(shù)據(jù) 包時(shí),數(shù)據(jù)包解析器61提取數(shù)據(jù)包的源IP地址、目的IP地址、源端口、目的端口和協(xié)議,以 確定該數(shù)據(jù)包對(duì)應(yīng)于流表40的哪個(gè)項(xiàng)。一旦為該數(shù)據(jù)包識(shí)別出流表40中的現(xiàn)有項(xiàng),狀態(tài) 檢查引擎28就從流表40的對(duì)應(yīng)項(xiàng)60中提取DFA狀態(tài)74,使用數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)(通過 協(xié)議解碼器36從數(shù)據(jù)包提取)執(zhí)行DFA,并相應(yīng)地更新DFA狀態(tài)74的值。協(xié)議解碼器36檢查每個(gè)接收到的數(shù)據(jù)包,以確定數(shù)據(jù)包是否表示特定事務(wù)(例 如,當(dāng)前事務(wù)或新事務(wù)或者事務(wù)之間的定界符)的一部分。在定界符表示事務(wù)之間的分開 的實(shí)施例中,協(xié)議解碼器36確定定界符之后的數(shù)據(jù)包對(duì)應(yīng)于新事務(wù)的數(shù)據(jù)包。同樣地,協(xié) 議解碼器36確定定界符之前的數(shù)據(jù)包對(duì)應(yīng)于事務(wù)的最后一個(gè)數(shù)據(jù)包。在事務(wù)由特定的長(zhǎng) 度(例如,字節(jié)的組合數(shù))限定的實(shí)施例中,協(xié)議解碼器36確定具有比先前事務(wù)的開始的 序列號(hào)大一個(gè)事務(wù)長(zhǎng)度的序列號(hào)的數(shù)據(jù)包對(duì)應(yīng)于新事務(wù)。在一些實(shí)施例中,協(xié)議解碼器36 還確定新事務(wù)開始處的應(yīng)用層元素對(duì)于網(wǎng)絡(luò)會(huì)話的應(yīng)用協(xié)議是否有效。例如,對(duì)于HTTP, 除了查找換行/回車字符之外,協(xié)議解碼器36還可以確保新事務(wù)的開始為GET、P0ST、HEAD 或其他HTTP事務(wù),以確認(rèn)定界符確實(shí)要將事務(wù)分開,并且不是先前事務(wù)內(nèi)容的一部分。在 使用限定長(zhǎng)度的事務(wù)的實(shí)施例中,一旦檢測(cè)到新事務(wù),流管理模塊34就計(jì)算下一事務(wù)的序
19列號(hào),生成包括下一事務(wù)的序列號(hào)的狀態(tài)更新消息,并向備份IDP設(shè)備20發(fā)送該狀態(tài)更新 消息。如上所討論的,DFA包括多個(gè)狀態(tài)和基于輸入字符的狀態(tài)之間的轉(zhuǎn)變。狀態(tài)檢查 引擎28(圖2)將用于當(dāng)前事務(wù)的當(dāng)前DFA狀態(tài)記錄在DFA狀態(tài)74A中。因此,在當(dāng)前事務(wù) 的隨后數(shù)據(jù)包被接收和處理時(shí),狀態(tài)檢查引擎28處理該數(shù)據(jù)包的數(shù)據(jù)并相應(yīng)地更新DFA狀 態(tài)74A的值。在一些實(shí)施例中,狀態(tài)檢查引擎28識(shí)別多個(gè)不同的DFA。在這種實(shí)施例中, 狀態(tài)檢查引擎28還在DFA狀態(tài)74A中記錄當(dāng)前事務(wù)所對(duì)應(yīng)的DFA的標(biāo)識(shí)符,例如,作為由 {DFA_identifier, DFA_state}表示的元組。當(dāng)所接收到的數(shù)據(jù)包為現(xiàn)有(即,被識(shí)別的)數(shù)據(jù)包流的一部分時(shí),協(xié)議解碼器36 從數(shù)據(jù)包的應(yīng)用層凈荷中提取一個(gè)或多個(gè)字符,并將字符傳送至狀態(tài)檢查引擎28 (圖2)。 狀態(tài)檢查引擎28從DFA狀態(tài)74檢索當(dāng)前DFA和當(dāng)前DFA狀態(tài)。然后,狀態(tài)檢查引擎28處 理從協(xié)議解碼器36接收到的輸入字符,以確定相應(yīng)DFA中所得的狀態(tài),并將DFA狀態(tài)記錄 在DFA狀態(tài)74中。當(dāng)數(shù)據(jù)包為事務(wù)的最后一個(gè)數(shù)據(jù)包(例如,由協(xié)議解碼器36確定)時(shí), 狀態(tài)檢查引擎28確定最后一個(gè)DFA狀態(tài)是否為“接受”狀態(tài)(例如,以確定事務(wù)是否表示 攻擊、錯(cuò)誤或可接受的輸入序列),并更新DFA狀態(tài)74以反映DFA開始狀態(tài)。當(dāng)事務(wù)被確定為表示攻擊時(shí),流管理模塊34將流表40的相應(yīng)項(xiàng)60的應(yīng)用層IDP 狀態(tài)78的值設(shè)定為“阻擋”,并且在一些實(shí)施例中,還將對(duì)于數(shù)據(jù)包流、數(shù)據(jù)包流的源和/或 目的所做出的一個(gè)或多個(gè)編程響應(yīng)記錄在流表40的對(duì)應(yīng)流表項(xiàng)60的應(yīng)用層IDP狀態(tài)78 中。如上所討論的,流管理模塊34還生成表示數(shù)據(jù)包流已經(jīng)被阻擋的狀態(tài)更新消息,以及 已經(jīng)對(duì)于數(shù)據(jù)包流、源和/或目的做出的一個(gè)或多個(gè)編程響應(yīng)。圖5是示出用于在接收到新的數(shù)據(jù)包流時(shí)創(chuàng)建新流表項(xiàng)的示例性方法的流程圖。 首先,主IDP設(shè)備16接收表示新的數(shù)據(jù)包流的數(shù)據(jù)包(100)。通常,主IDP設(shè)備16在接收 到從客戶端(例如,一個(gè)源設(shè)備12(圖1))去往服務(wù)器(例如,一個(gè)目的設(shè)備24 (圖1))的 數(shù)據(jù)包流的SYN數(shù)據(jù)包時(shí),確定該數(shù)據(jù)包流為新的數(shù)據(jù)包流。主IDP設(shè)備16還響應(yīng)于SYN 數(shù)據(jù)包從服務(wù)器接收SYN-ACK數(shù)據(jù)包,并響應(yīng)于SYN-ACK數(shù)據(jù)包從客戶端接收ACK數(shù)據(jù)包。 通常,SYN、SYN-ACK和ACK數(shù)據(jù)包被稱為三次握手?jǐn)?shù)據(jù)包。應(yīng)當(dāng)注意,SYN數(shù)據(jù)包和SYN-ACK 數(shù)據(jù)包屬于不同的數(shù)據(jù)包流,但屬于同一網(wǎng)絡(luò)會(huì)話。主IDP設(shè)備16使用每個(gè)數(shù)據(jù)包流的源 和目的IP地址、源和目的端口號(hào)以及協(xié)議將兩個(gè)數(shù)據(jù)包流與同一網(wǎng)絡(luò)會(huì)話相關(guān)聯(lián)。具體地,數(shù)據(jù)包解析器61解析所接收到的數(shù)據(jù)包,以確定是否設(shè)定了這些數(shù)據(jù)包 的SYN和/或ACK標(biāo)記。數(shù)據(jù)包解析器61確定具有SYN和/或ACK標(biāo)記組的數(shù)據(jù)包為新 網(wǎng)絡(luò)會(huì)話的各個(gè)新的數(shù)據(jù)包流的三次握手?jǐn)?shù)據(jù)包。數(shù)據(jù)包解析器61解析三次握手?jǐn)?shù)據(jù)包, 以為與三次握手?jǐn)?shù)據(jù)包相關(guān)聯(lián)的數(shù)據(jù)包流確定包括源IP地址和源端口的數(shù)據(jù)包流的源、 包括目的IP地址和目的端口的數(shù)據(jù)包流的目的地以及數(shù)據(jù)包流的識(shí)別協(xié)議(102)。在識(shí) 別出新的數(shù)據(jù)包流的該信息之后,流管理模塊34構(gòu)建流表40的新項(xiàng)60,以記錄所識(shí)別的5 元組并將應(yīng)用層IDP狀態(tài)設(shè)定為“創(chuàng)建”(104)。流管理模塊34還構(gòu)建包括5元組的狀態(tài) 更新消息,并將狀態(tài)更新消息發(fā)送到備份IDP設(shè)備20 (106),備份IDP設(shè)備在備份IDP設(shè)備 20的本地流表中構(gòu)建類似的新項(xiàng)。接下來,主IDP設(shè)備16執(zhí)行應(yīng)用識(shí)別處理,以為數(shù)據(jù)包流確定應(yīng)用層協(xié)議(108)。 在一些實(shí)施例中,確定應(yīng)用層協(xié)議還包括執(zhí)行應(yīng)用識(shí)別以識(shí)別對(duì)應(yīng)于該數(shù)據(jù)包流的應(yīng)用,
20例如網(wǎng)絡(luò)瀏覽器、電子郵件客戶、FTP(文件傳輸協(xié)議)客戶、對(duì)等文件共享客戶或其他網(wǎng)絡(luò) 應(yīng)用。主IDP設(shè)備16還確定如何區(qū)分該數(shù)據(jù)包流的事務(wù)(110)。在一些實(shí)施例中,所確定 的應(yīng)用層協(xié)議本身定義了如何區(qū)分事務(wù),例如,事務(wù)是否是使用換行、移行和/或回車字符 來定界的,還是該事務(wù)是否為限定的長(zhǎng)度的,例如對(duì)于二進(jìn)制協(xié)議。事務(wù)區(qū)分類型對(duì)應(yīng)于定界符或事務(wù)長(zhǎng)度中的至少一個(gè),并且被確定為應(yīng)用層協(xié)議 的因數(shù)以及對(duì)應(yīng)于數(shù)據(jù)包流的被識(shí)別的應(yīng)用,該應(yīng)用層協(xié)議被確定為對(duì)應(yīng)于數(shù)據(jù)包流。當(dāng) 事務(wù)區(qū)分類型對(duì)應(yīng)于定界符時(shí),流管理模塊34還確定使用何定界符(例如換行字符、回車 字符等)來分開事務(wù)。當(dāng)事務(wù)區(qū)分類型對(duì)應(yīng)于事務(wù)長(zhǎng)度時(shí),流管理模塊34還確定事務(wù)的長(zhǎng) 度,例如字節(jié)數(shù)。在一些實(shí)施例中,每個(gè)事務(wù)具有相同的長(zhǎng)度,而在其他實(shí)施例中,每個(gè)事務(wù) 的長(zhǎng)度都是動(dòng)態(tài)的且是具有信號(hào)的,如具有事務(wù)報(bào)頭。在任何情況下,在識(shí)別出應(yīng)用層協(xié)議 和事務(wù)區(qū)分類型之后,流管理模塊34為數(shù)據(jù)包流更新流表40中的相應(yīng)流表項(xiàng)60,以指示所 識(shí)別的應(yīng)用層協(xié)議和事務(wù)區(qū)分類型(112)。流管理模塊34還為備份IDP設(shè)備20創(chuàng)建包括所識(shí)別的應(yīng)用層協(xié)議和事務(wù)區(qū)分類 型的狀態(tài)更新消息,并通過數(shù)據(jù)鏈路18經(jīng)由備份設(shè)備網(wǎng)絡(luò)接口 42將該狀態(tài)更新消息發(fā)送 到備份IDP設(shè)備20(114)。然后,協(xié)議解碼器36開始檢查新的數(shù)據(jù)包流的數(shù)據(jù)包的應(yīng)用層 數(shù)據(jù)(116)。圖6是示出對(duì)于具有長(zhǎng)度編碼應(yīng)用層協(xié)議的數(shù)據(jù)包流從主IDP設(shè)備16向備份IDP 設(shè)備20發(fā)送狀態(tài)更新的示例性方法的流程圖。首先,主IDP設(shè)備16接收現(xiàn)有(識(shí)別)數(shù) 據(jù)包流的數(shù)據(jù)包(120)。然后,流管理模塊34檢查該數(shù)據(jù)包以檢索TCP信息,并基于從該數(shù)據(jù)包中檢索到的信息更新流表40中對(duì)應(yīng)于該 數(shù)據(jù)包流的流表項(xiàng)(122)。例如,數(shù)據(jù)包解析器61提取當(dāng)前序列號(hào),并且流管理模塊34更 新流表40的對(duì)應(yīng)流表項(xiàng)60中的事務(wù)結(jié)束標(biāo)識(shí)符值76的值,以反映當(dāng)前序列號(hào)值。然后,協(xié)議解碼器36確定數(shù)據(jù)包是否表示當(dāng)前事務(wù)已經(jīng)完成(124)。S卩,協(xié)議解碼 器36通過確定數(shù)據(jù)包的序列號(hào)是否與先前確定的對(duì)應(yīng)于下一事務(wù)的第一數(shù)據(jù)包的序列號(hào) 相匹配來確定數(shù)據(jù)包是否對(duì)應(yīng)于下一事務(wù)的第一數(shù)據(jù)包。當(dāng)流管理模塊34確定事務(wù)長(zhǎng)度值是可用(例如,可以被確定或已經(jīng)明確定義)時(shí) (124的“是”分支),流管理模塊34為數(shù)據(jù)包流構(gòu)建包括下一事務(wù)的序列號(hào)的狀態(tài)更新消 息,并通過數(shù)據(jù)鏈路18經(jīng)由備份設(shè)備網(wǎng)絡(luò)接口 42將該狀態(tài)更新消息發(fā)送到備份IDP設(shè)備 20(126)。具體地,主IDP設(shè)備16基于當(dāng)前序列號(hào)和當(dāng)前事務(wù)的長(zhǎng)度計(jì)算對(duì)應(yīng)于該數(shù)據(jù)包 流的下一事務(wù)的序列號(hào)。狀態(tài)更新消息包括與下一事務(wù)的第一數(shù)據(jù)包的更新(例如,數(shù)據(jù) 包流的5元組{源IP地址、目的IP地址、源端口、目的端口、協(xié)議})和序列號(hào)相關(guān)聯(lián)的數(shù) 據(jù)包流的識(shí)別。在從主IDP設(shè)備16接收到序列號(hào)更新之后(128),備份IDP設(shè)備20更新與數(shù)據(jù)包 流相關(guān)聯(lián)的TCP信息(130)。當(dāng)備份IDP設(shè)備20接收到更新消息時(shí),備份IDP設(shè)備20識(shí) 別備份IDP設(shè)備20的本地流表中對(duì)應(yīng)于與更新消息(例如,使用5元組{源IP地址、目的 IP地址、源端口、目的端口、協(xié)議})相關(guān)聯(lián)的數(shù)據(jù)包流的項(xiàng),并更新本地流表項(xiàng)的信息。具 體地,備份IDP設(shè)備20更新本地流表中用于下一事務(wù)的序列號(hào)。主IDP設(shè)備16還檢查數(shù) 據(jù)包以確定該數(shù)據(jù)包是否表示網(wǎng)絡(luò)攻擊(132)。在一些實(shí)施例中,在檢查是否完成事務(wù)之前 發(fā)生數(shù)據(jù)包檢查。
當(dāng)沒有發(fā)生切換或故障切換時(shí)(134的“否”分支),主IDP設(shè)備16等待另一數(shù)據(jù) 包,然后重復(fù)上述步驟。然而,當(dāng)發(fā)生切換或故障切換時(shí),備份IDP設(shè)備20變得主動(dòng)來作為 主IDP設(shè)備。然后,備份IDP設(shè)備20等待新事務(wù)的開始,掃描數(shù)據(jù)包流的數(shù)據(jù)包,直到識(shí)別 出新事務(wù)(136)。具體地,由于圖6的方法對(duì)應(yīng)于使用限定長(zhǎng)度的事務(wù)的實(shí)施例,所以備份 IDP設(shè)備20確定當(dāng)前數(shù)據(jù)包的序列號(hào)是否等于從主IDP設(shè)備16接收到的最后狀態(tài)更新消 息中的序列號(hào)。當(dāng)所接收到數(shù)據(jù)包的序列號(hào)等于最后的狀態(tài)更新消息時(shí),用作主IDP設(shè)備 的備份IDP設(shè)備20開始檢查數(shù)據(jù)包流(138)。圖7是示出當(dāng)使用定界符來區(qū)分事務(wù)時(shí)在從主IDP設(shè)備16切換或故障切換之后, 備份IDP設(shè)備20開始數(shù)據(jù)包流的有狀態(tài)檢查的示例性方法的流程圖。首先,作為切換的結(jié) 果,備份IDP設(shè)備20變?yōu)橹鲃?dòng)(150)。備份IDP設(shè)備20可以按照多種方式確定已經(jīng)發(fā)生 切換或故障切換。在各個(gè)實(shí)施例中,在來自主IDP設(shè)備16使其變?yōu)橹鲃?dòng)的指令之后或者當(dāng) 備份IDP設(shè)備20在預(yù)期的時(shí)間段內(nèi)未接收到來自主IDP設(shè)備16的保持運(yùn)行消息時(shí),備份 IDP設(shè)備20就變?yōu)橹鲃?dòng)。在任何情況下,在備份IDP設(shè)備20變?yōu)橹鲃?dòng)之后,備份IDP設(shè)備20開始接收先前 由主IDP設(shè)備16檢查的數(shù)據(jù)包流的數(shù)據(jù)包(152)。對(duì)于所接收到的數(shù)據(jù)包流的數(shù)據(jù)包,備 份IDP設(shè)備20確定該數(shù)據(jù)包是否包括定界符(例如,換行字符或回車字符)(154)。當(dāng)該 數(shù)據(jù)包不包括定界符時(shí)(154的“否”分支),備份IDP設(shè)備20傳送數(shù)據(jù)包(156),并接收數(shù) 據(jù)包流的下一數(shù)據(jù)包(158)。然后,備份IDP設(shè)備20再次確定下一數(shù)據(jù)包是否包括定界符 (154)。備份IDP設(shè)備20繼續(xù)步驟154-158表示的循環(huán),直到所接收到的數(shù)據(jù)包含有定界 符(154的“是”分支)。在一些實(shí)施例中,備份IDP設(shè)備20還執(zhí)行檢查以確認(rèn)定界符之后 的應(yīng)用層元素與新事務(wù)一致,確認(rèn)定界符不是意指先前事務(wù)的一部分而是確實(shí)要表示事務(wù) 的結(jié)束和新事務(wù)的開始。一旦接收到這種數(shù)據(jù)包,備份IDP設(shè)備20就在表示新事務(wù)的開始 狀態(tài)處開始數(shù)據(jù)包流的新事務(wù)的狀態(tài)檢查(160)。具體地,備份IDP設(shè)備20基于由來自主 IDP設(shè)備16的狀態(tài)更新消息表示的識(shí)別的應(yīng)用或應(yīng)用層協(xié)議選擇DFA,并在新事務(wù)的開始 處錨定DFA。然后,備份IDP設(shè)備20開始數(shù)據(jù)包流的數(shù)據(jù)包的應(yīng)用層檢查(162)。圖8是示出當(dāng)事務(wù)具有限定長(zhǎng)度來區(qū)分事務(wù)時(shí),在從主IDP設(shè)備16的切換或故障 切換之后,備份IDP設(shè)備20開始數(shù)據(jù)包流的有狀態(tài)檢查的另一示例性方法的流程圖。首先, 作為切換的結(jié)果,備份IDP設(shè)備20變?yōu)橹鲃?dòng)(180)。如上所述,備份IDP設(shè)備20可以按照 多種方式確定已經(jīng)發(fā)生切換或故障切換。在備份IDP設(shè)備20變?yōu)橹鲃?dòng)之后,備份IDP設(shè)備20開始接收先前由主IDP設(shè)備 16檢查的數(shù)據(jù)包流的數(shù)據(jù)包(182)。假設(shè)備份IDP設(shè)備20已經(jīng)預(yù)先接收到來自主IDP設(shè) 備16的表示數(shù)據(jù)包流的下一事務(wù)的第一數(shù)據(jù)包的序列號(hào)的狀態(tài)更新消息。因此,備份IDP 設(shè)備20檢查數(shù)據(jù)包流的每個(gè)數(shù)據(jù)包的序列號(hào),以確定該序列號(hào)是否與所接收到的下一事 務(wù)的序列號(hào)相匹配(184)。如果為否(184的“否”分支),則備份IDP設(shè)備20傳送數(shù)據(jù)包 (186),并等待數(shù)據(jù)包流的下一數(shù)據(jù)包的接收(188)。備份IDP設(shè)備20繼續(xù)步驟184-188表示的循環(huán),直到所接收的數(shù)據(jù)包具有的序 列號(hào)等于下一事務(wù)的第一數(shù)據(jù)包的序列號(hào)(186的“是”分支)。一旦接收到這種數(shù)據(jù)包, 備份IDP設(shè)備20就在表示新事務(wù)的開始狀態(tài)處開始對(duì)數(shù)據(jù)包流的新事務(wù)進(jìn)行有狀態(tài)檢查(190)。具體地,備份IDP設(shè)備20基于由來自主IDP設(shè)備16的狀態(tài)更新消息所指示的被識(shí) 別的應(yīng)用或應(yīng)用層協(xié)議選擇DFA,并在新事務(wù)的開始處錨定DFA。然后,備份IDP設(shè)備20開 始數(shù)據(jù)包流的數(shù)據(jù)包的有狀態(tài)檢查(192)。盡管出于示例性目的,大體上是針對(duì)入侵檢測(cè)與防御設(shè)備進(jìn)行了描述,但應(yīng)當(dāng)理 解,本公開的技術(shù)可以在高可用性機(jī)群中的任何有狀態(tài)主和備份設(shè)備對(duì)(g卩,以機(jī)群模式 配置的了解會(huì)話狀態(tài)的任意兩個(gè)網(wǎng)絡(luò)設(shè)備)中實(shí)施。例如,其他有狀態(tài)安全設(shè)備(例如,防 火墻、入侵檢測(cè)系統(tǒng)、入侵防御系統(tǒng)、數(shù)據(jù)丟失防止(DLP)系統(tǒng)、網(wǎng)絡(luò)安全網(wǎng)關(guān)和包括執(zhí)行 有狀態(tài)數(shù)據(jù)包檢查的安全卡的可擴(kuò)展設(shè)備(諸如路由器和網(wǎng)關(guān)))可以被配置為執(zhí)行本公 開的技術(shù)。此外,高可用性環(huán)境中的非安全設(shè)備也可以被配置為執(zhí)行本公開的技術(shù)。例如, 以機(jī)群模式配置的用于提供高可用性的URL過濾設(shè)備可以被配置為實(shí)施本公開的技術(shù)。非 安全設(shè)備的其他實(shí)施例包括通信量監(jiān)控系統(tǒng)、應(yīng)用性能管理系統(tǒng)和合法攔截系統(tǒng)。作為“主”和“備份”(或“主動(dòng)”和“被動(dòng)”)的設(shè)備的描述應(yīng)當(dāng)被理解為表示特定 設(shè)備是主動(dòng)地還是被動(dòng)地監(jiān)控特定數(shù)據(jù)包流的通信量。被指定為“主”或“備份”的設(shè)備不 是必須表示該設(shè)備對(duì)于所有數(shù)據(jù)包流都是“主”或“備份”的。在一些布置中,被稱為“主動(dòng) /被動(dòng)”布置,相對(duì)于所有數(shù)據(jù)包流,一個(gè)設(shè)備為主動(dòng)的或主要的,而另一設(shè)備是被動(dòng)或備份 的,并且在故障切換之后,被動(dòng)設(shè)備變?yōu)橹鲃?dòng)。另一方面,在其他布置中,被稱為“主動(dòng)/主 動(dòng)”布置,第一設(shè)備相對(duì)于第一多個(gè)數(shù)據(jù)包流是主動(dòng)的,第二設(shè)備相對(duì)于第二多個(gè)數(shù)據(jù)包流 是主動(dòng)的,第一設(shè)備相對(duì)于第二多個(gè)數(shù)據(jù)包流是被動(dòng)的,以及第二設(shè)備相對(duì)于第一多個(gè)數(shù) 據(jù)包流是被動(dòng)的。以這種方式,第一設(shè)備和第二設(shè)備均相對(duì)于至少一個(gè)數(shù)據(jù)包流為主動(dòng),相 對(duì)于至少一個(gè)數(shù)據(jù)包流為被動(dòng),并且第一設(shè)備和第二設(shè)備為彼此提供備份。本公開的技術(shù) 通??蓱?yīng)用于主動(dòng)/被動(dòng)布置和主動(dòng)/主動(dòng)布置。本公開中所描述的技術(shù)至少部分可在硬件、軟件、固件或它們的任意組合中實(shí)施。 例如,所描述的技術(shù)的多個(gè)方面可以在一個(gè)或多個(gè)處理器(包括一個(gè)或多個(gè)微處理器、數(shù) 字信號(hào)處理器(DSP)、特定用途集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、或任何其他等 效集成或分立邏輯電路,以及這些組件的任何組合)中實(shí)施。術(shù)語“處理器”或“處理電路” 通常是指前述邏輯電路單獨(dú)的或與其他邏輯電路組合、或者任何其他等效電路中的任意一 種。包括硬件的控制單元也可以執(zhí)行本公開的一項(xiàng)或多項(xiàng)技術(shù)。這種硬件、軟件或固件可以實(shí)現(xiàn)在同一設(shè)備內(nèi)或不同設(shè)備內(nèi),以支持本公開所描 述的各種操作和功能。此外,任何所描述的單元、模塊或組件可以組合實(shí)施或者作為分立但 能共同操作的邏輯設(shè)備而獨(dú)立實(shí)施。作為模塊或單元的不同部件的描述意指強(qiáng)調(diào)不同的功 能方面,但是不是必須表示這種模塊或單元必須通過獨(dú)立的硬件或軟件組件來實(shí)現(xiàn)。更確 切地,與一個(gè)或多個(gè)模塊或單元相關(guān)聯(lián)的功能可以通過獨(dú)立的硬件或軟件組件來執(zhí)行,或 者集成在共用的或獨(dú)立的硬件或軟件組件中。本公開所描述的技術(shù)還可以并入或編碼到包含指令的計(jì)算機(jī)可讀介質(zhì)中,諸如計(jì) 算機(jī)可讀存儲(chǔ)介質(zhì)。并入或編碼到計(jì)算機(jī)可讀介質(zhì)中的指令可以使可編程處理器或其他 處理器執(zhí)行該方法(例如,在執(zhí)行指令時(shí))。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可包括隨機(jī)存取存儲(chǔ)器 (RAM)、只讀存儲(chǔ)器(ROM)、可編程只讀存儲(chǔ)器(PR0M)、可擦除可編程只讀存儲(chǔ)器(EPROM)、 電可擦除可編程只讀存儲(chǔ)器(EEPROM)、閃存、硬盤驅(qū)動(dòng)器、⑶-ROM、軟盤、磁帶、磁性介質(zhì)、光 學(xué)介質(zhì)或其他計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。應(yīng)當(dāng)理解,術(shù)語“計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)”是指物理存儲(chǔ)介質(zhì),而不是信號(hào)或載波,但是術(shù)語“計(jì)算機(jī)可讀介質(zhì)”可包括除物理存儲(chǔ)介質(zhì)之外的諸如 信號(hào)的瞬時(shí)介質(zhì)。 已經(jīng)描述了多個(gè)實(shí)施例。這些和其他實(shí)施例都落在以下權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種方法,包括利用高可用性機(jī)群的備份網(wǎng)絡(luò)設(shè)備接收來自所述高可用性機(jī)群的主網(wǎng)絡(luò)設(shè)備的狀態(tài) 更新消息,其中,所述狀態(tài)更新消息表示被所述主網(wǎng)絡(luò)設(shè)備檢查的網(wǎng)絡(luò)會(huì)話以及用于所述 網(wǎng)絡(luò)會(huì)話的被識(shí)別的應(yīng)用層協(xié)議;利用所述備份網(wǎng)絡(luò)設(shè)備接收所述主設(shè)備已經(jīng)切換或故障切換到所述備份網(wǎng)絡(luò)設(shè)備的 指示;在接收到所述指示之后,利用所述備份網(wǎng)絡(luò)設(shè)備接收所述網(wǎng)絡(luò)會(huì)話的多個(gè)數(shù)據(jù)包,所 述多個(gè)數(shù)據(jù)包中的每一個(gè)數(shù)據(jù)包均包括包含應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷;根據(jù)所述多個(gè)數(shù)據(jù)包中的一個(gè)數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)檢測(cè)新事務(wù)的開始;以及處理包括所述新事務(wù)的開始以及在所述新事務(wù)的開始之后的所述網(wǎng)絡(luò)會(huì)話的應(yīng)用層 數(shù)據(jù),而不對(duì)所述新事務(wù)的開始之前的應(yīng)用層數(shù)據(jù)執(zhí)行有狀態(tài)處理。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述檢測(cè)新事務(wù)的開始包括確定所述應(yīng)用層數(shù) 據(jù)包括緊接在所述新事務(wù)的開始之前的定界符值。
3.根據(jù)權(quán)利要求2所述的方法,其中,所述定界符值包括換行字符、移行字符和回車字 符中的至少一個(gè)。
4.根據(jù)權(quán)利要求1所述的方法,還包括在所述主設(shè)備已經(jīng)切換或故障切換的所述指 示之前,利用所述備份網(wǎng)絡(luò)設(shè)備接收表示所述網(wǎng)絡(luò)會(huì)話的下一事務(wù)的序列號(hào)的狀態(tài)更新消 息,其中,所述檢測(cè)新事務(wù)的開始包括確定所述多個(gè)數(shù)據(jù)包中的一個(gè)數(shù)據(jù)包的序列號(hào);將所述多個(gè)數(shù)據(jù)包中的所述一個(gè)數(shù)據(jù)包的序列號(hào)與來自所述狀態(tài)更新消息的下一事 務(wù)的序列號(hào)進(jìn)行比較;以及當(dāng)所述多個(gè)數(shù)據(jù)包中的所述一個(gè)數(shù)據(jù)包的序列號(hào)與來自所述狀態(tài)更新消息的下一事 務(wù)的序列號(hào)相匹配時(shí),確定所述多個(gè)數(shù)據(jù)包中的所述一個(gè)數(shù)據(jù)包包括所述新事務(wù)的開始。
5.根據(jù)權(quán)利要求1所述的方法,其中,處理所述數(shù)據(jù)包包括檢查所述網(wǎng)絡(luò)會(huì)話的應(yīng)用 層數(shù)據(jù),以確定所述應(yīng)用層數(shù)據(jù)的任意部分是否對(duì)應(yīng)于網(wǎng)絡(luò)攻擊。
6.一種高可用性機(jī)群的備份網(wǎng)絡(luò)設(shè)備,所述備份網(wǎng)絡(luò)設(shè)備被配置為以機(jī)群模式運(yùn)行, 所述備份網(wǎng)絡(luò)設(shè)備包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口,用于接收來自所述備份網(wǎng)絡(luò)設(shè)備的高可用性機(jī)群的主網(wǎng)絡(luò)設(shè)備 的狀態(tài)更新消息,其中,所述狀態(tài)更新消息表示正被所述主網(wǎng)絡(luò)設(shè)備檢查的網(wǎng)絡(luò)會(huì)話以及 用于所述網(wǎng)絡(luò)會(huì)話的被識(shí)別的應(yīng)用層協(xié)議,所述一個(gè)或多個(gè)網(wǎng)絡(luò)接口用于接收所述主設(shè)備 已經(jīng)切換或故障切換到所述備份網(wǎng)絡(luò)設(shè)備的指示,以及所述一個(gè)或多個(gè)網(wǎng)絡(luò)接口用于在接 收到所述指示之后接收所述網(wǎng)絡(luò)會(huì)話的多個(gè)數(shù)據(jù)包,所述多個(gè)數(shù)據(jù)包中的每一個(gè)數(shù)據(jù)包均 包括包含應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷;協(xié)議解碼器,用于根據(jù)所述多個(gè)數(shù)據(jù)包中的一個(gè)數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)檢測(cè)新事務(wù)的開 始·’以及控制單元,處理包括所述新事務(wù)的開始以及所述新事物的開始之后的網(wǎng)絡(luò)會(huì)話的應(yīng)用 層數(shù)據(jù),而不對(duì)所述新事務(wù)的開始之前的應(yīng)用層數(shù)據(jù)執(zhí)行有狀態(tài)處理。
7.根據(jù)權(quán)利要求6所述的備份網(wǎng)絡(luò)設(shè)備,其中,為了檢測(cè)所述新事務(wù)的開始,所述協(xié)議 解碼器確定所述應(yīng)用層數(shù)據(jù)是否包括緊接在所述新事務(wù)的開始之前的定界符值。
8.根據(jù)權(quán)利要求7所述的備份網(wǎng)絡(luò)設(shè)備,其中,所述定界符值包括換行字符、移行字符 和回車字符中的至少一個(gè)。
9.根據(jù)權(quán)利要求6所述的備份網(wǎng)絡(luò)設(shè)備,其中,在所述主設(shè)備已經(jīng)切換或故障切換的所述指示之前,所述一個(gè)或多個(gè)網(wǎng)絡(luò)接口 接收表示所述網(wǎng)絡(luò)會(huì)話的下一事務(wù)的序列號(hào)的狀態(tài)更新消息,以及其中,為了檢測(cè)新事務(wù)的開始,所述協(xié)議解碼器確定所述多個(gè)數(shù)據(jù)包中的一個(gè)數(shù)據(jù)包 的序列號(hào),將所述多個(gè)數(shù)據(jù)包中的所述一個(gè)數(shù)據(jù)包的序列號(hào)與來自所述狀態(tài)更新消息中的 下一事務(wù)的序列號(hào)進(jìn)行比較,并且當(dāng)所述多個(gè)數(shù)據(jù)包中的所述一個(gè)數(shù)據(jù)包的序列號(hào)與來自 所述狀態(tài)更新消息中的下一事務(wù)的序列號(hào)相匹配時(shí),確定所述多個(gè)數(shù)據(jù)包中的所述一個(gè)數(shù) 據(jù)包包括新事務(wù)。
10.根據(jù)權(quán)利要求6所述的備份網(wǎng)絡(luò)設(shè)備,還包括攻擊檢測(cè)模塊,用于處理所述數(shù)據(jù) 包,其中,所述攻擊檢測(cè)模塊檢查所述網(wǎng)絡(luò)會(huì)話的所述應(yīng)用層數(shù)據(jù),以確定所述應(yīng)用層數(shù)據(jù) 的任意部分是否對(duì)應(yīng)于網(wǎng)絡(luò)攻擊。
11.一種方法,包括利用高可用性環(huán)境中的主網(wǎng)絡(luò)設(shè)備接收網(wǎng)絡(luò)會(huì)話的多個(gè)數(shù)據(jù)包,所述多個(gè)數(shù)據(jù)包中的 每一個(gè)數(shù)據(jù)包均包括包含應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷;根據(jù)所述多個(gè)數(shù)據(jù)包中的一個(gè)數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)檢測(cè)新事務(wù)的開始; 計(jì)算對(duì)應(yīng)于所述網(wǎng)絡(luò)會(huì)話的下一事務(wù)的第一數(shù)據(jù)包的序列號(hào),其中,所述下一事務(wù)在 所述新事務(wù)之后;構(gòu)建包括所算出的序列號(hào)的狀態(tài)更新消息;以及向用于所述高可用性環(huán)境中的所述主網(wǎng)絡(luò)設(shè)備的備份網(wǎng)絡(luò)設(shè)備發(fā)送狀態(tài)同步消息。
12.根據(jù)權(quán)利要求11所述的方法,其中,確定所述多個(gè)數(shù)據(jù)包中的一個(gè)數(shù)據(jù)包對(duì)應(yīng)于 當(dāng)前事務(wù)的第一數(shù)據(jù)包包括在接收所述新事務(wù)的第一數(shù)據(jù)包之前,計(jì)算所述新事務(wù)的第一數(shù)據(jù)包的序列號(hào); 將所述多個(gè)數(shù)據(jù)包中的一個(gè)數(shù)據(jù)包的序列號(hào)與為所述新事務(wù)的第一數(shù)據(jù)包所算出的 序列號(hào)進(jìn)行比較;以及確定所述多個(gè)數(shù)據(jù)包中的一個(gè)數(shù)據(jù)包的序列號(hào)與為所述新事務(wù)的第一數(shù)據(jù)包所算出 的序列號(hào)相匹配。
13.根據(jù)權(quán)利要求11所述的方法,還包括利用所述主網(wǎng)絡(luò)設(shè)備檢查所述網(wǎng)絡(luò)會(huì)話的所述應(yīng)用層數(shù)據(jù),以確定所述應(yīng)用層數(shù)據(jù)的 任意部分是否表示網(wǎng)絡(luò)攻擊;以及從所述主網(wǎng)絡(luò)設(shè)備切換或故障切換到所述備份網(wǎng)絡(luò)設(shè)備。
14.一種高可用性機(jī)群的主網(wǎng)絡(luò)設(shè)備,所述主網(wǎng)絡(luò)設(shè)備被配置為以機(jī)群模式運(yùn)行,所述 主網(wǎng)絡(luò)設(shè)備包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口,用于接收網(wǎng)絡(luò)會(huì)話的多個(gè)數(shù)據(jù)包,所述多個(gè)數(shù)據(jù)包中的每一個(gè) 數(shù)據(jù)包均包括包含應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷,以及所述一個(gè)或多個(gè)網(wǎng)絡(luò)接口向用于所述高可 用性機(jī)群中所述主網(wǎng)絡(luò)設(shè)備的備份網(wǎng)絡(luò)設(shè)備發(fā)送狀態(tài)同步消息;協(xié)議解碼器模塊,根據(jù)第二多個(gè)數(shù)據(jù)包的一個(gè)數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)檢測(cè)新事務(wù)的開 始;以及流管理模塊,計(jì)算對(duì)應(yīng)于所述網(wǎng)絡(luò)會(huì)話的下一事務(wù)的第一數(shù)據(jù)包的序列號(hào),并構(gòu)建包 括所算出的序列號(hào)的狀態(tài)更新消息,其中,所述下一事務(wù)在所述新事務(wù)之后。
15.根據(jù)權(quán)利要求14所述的主網(wǎng)絡(luò)設(shè)備,其中,所述主網(wǎng)絡(luò)設(shè)備包括主入侵檢測(cè)與防 御(IDP)設(shè)備。
16.一種高可用性機(jī)群系統(tǒng),包括主網(wǎng)絡(luò)設(shè)備;以及備份網(wǎng)絡(luò)設(shè)備,其中,所述主網(wǎng)絡(luò)設(shè)備包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口,接收網(wǎng)絡(luò)會(huì)話的第一多個(gè)數(shù)據(jù)包,并向所述備份網(wǎng)絡(luò)設(shè)備發(fā)送 狀態(tài)同步消息,其中,所述第一多個(gè)數(shù)據(jù)包中的每一個(gè)數(shù)據(jù)包均包括包含應(yīng)用層數(shù)據(jù)的相 應(yīng)凈荷;以及流管理模塊,根據(jù)所述第一多個(gè)數(shù)據(jù)包中的一個(gè)數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)檢測(cè)新事務(wù)的開 始,計(jì)算對(duì)應(yīng)于所述網(wǎng)絡(luò)會(huì)話的下一事務(wù)的第一數(shù)據(jù)包的序列號(hào),以及構(gòu)建包括所算出的 序列號(hào)的狀態(tài)更新消息,其中,所述下一事務(wù)在所述當(dāng)前事務(wù)之后;以及其中,所述備份網(wǎng)絡(luò)設(shè)備包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口,接收來自所述主網(wǎng)絡(luò)設(shè)備的狀態(tài)更新消息,接收所述主設(shè)備已 經(jīng)切換或故障切換到所述備份網(wǎng)絡(luò)設(shè)備的指示,以及接收所述網(wǎng)絡(luò)會(huì)話的第二多個(gè)數(shù)據(jù) 包,所述第二多個(gè)數(shù)據(jù)包中的每一個(gè)數(shù)據(jù)包均包括包含應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷;協(xié)議解碼器模塊,根據(jù)所述第二多個(gè)數(shù)據(jù)包中的一個(gè)數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)檢測(cè)新事務(wù) 的開始;以及控制單元,處理包括所述下一事務(wù)的開始以及在所述下一事務(wù)的開始之后的所述網(wǎng)絡(luò) 會(huì)話的所述第二多個(gè)數(shù)據(jù)包的應(yīng)用層數(shù)據(jù),而不對(duì)所述下一事務(wù)的開始之前的所述第二多 個(gè)數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)執(zhí)行有狀態(tài)處理。
17.根據(jù)權(quán)利要求16所述的高可用性機(jī)群系統(tǒng),其中所述主網(wǎng)絡(luò)設(shè)備包括第一入侵檢 測(cè)與防御(IDP)設(shè)備,其中所述備份網(wǎng)絡(luò)設(shè)備包括第二 IDP設(shè)備。
全文摘要
本發(fā)明提供了網(wǎng)絡(luò)安全設(shè)備的高可用性方法、設(shè)備及系統(tǒng)。在一個(gè)實(shí)施例中,備份入侵檢測(cè)與防御(IDP)設(shè)備包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口,接收來自主IDP設(shè)備的狀態(tài)更新消息,其中,狀態(tài)更新消息表示被主IDP設(shè)備檢查的網(wǎng)絡(luò)會(huì)話以及用于設(shè)備的被識(shí)別的應(yīng)用層協(xié)議,該一個(gè)或多個(gè)網(wǎng)絡(luò)接口接收主設(shè)備已經(jīng)切換或故障切換到備份網(wǎng)絡(luò)設(shè)備的指示,以及該一個(gè)或多個(gè)網(wǎng)絡(luò)接口在接收到指示之后接收網(wǎng)絡(luò)會(huì)話的多個(gè)數(shù)據(jù)包,多個(gè)數(shù)據(jù)包的每一個(gè)均包括包含應(yīng)用層數(shù)據(jù)的相應(yīng)凈荷;協(xié)議解碼器,根據(jù)多個(gè)數(shù)據(jù)包中的一個(gè)的應(yīng)用層數(shù)據(jù)檢測(cè)新事務(wù)的開始;以及控制單元,僅對(duì)在所述新事務(wù)的開始之后并包括所述新事務(wù)的開始的網(wǎng)絡(luò)會(huì)話的多個(gè)數(shù)據(jù)包的應(yīng)用層數(shù)據(jù)進(jìn)行有狀態(tài)處理。
文檔編號(hào)H04L12/56GK102123076SQ20101050315
公開日2011年7月13日 申請(qǐng)日期2010年10月9日 優(yōu)先權(quán)日2010年1月8日
發(fā)明者克里希納·納拉亞納斯瓦米, 拉杰夫·蘭詹 申請(qǐng)人:叢林網(wǎng)絡(luò)公司