摘要:主動知識庫和主動數據庫系統采用領域專家知識和推理機制,具有一定的智能性,能夠在某些事件發生時,主動地執行由用戶預先指定的動作或動作序列,準確地表示入侵特征。同時,網絡中存在的、大量和入侵無關的信息和事件在分析之前都將被拋棄,因此大大地提高了系統的分析效率。
關鍵詞:入侵檢測系統;主動知識庫;網絡安全;ECA規則
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)29-0286-03
Design of Intrusion Detection Systems Based on Active Knowledge Bases and Databases
ZHANG Fang-jin
(Anhui Communications Technology Institute,Hefei 230051,China)
Abstract: The active knowledge bases and active databases system use the domain expert knowledge and the inference mechanism, have certain intelligence, can occur when certain events, on own initiative carry out the movement or the sequence of action which assigns in advance by the users, express the invasion characteristic accurately. At the same time, the invasion irrelevant information and the event in the network before the analysis all is gotten rid, therefore the system analysis efficiency is enhanced greatly.
Key words: IDS;active knowledge base;network security;ECA rule
1 前言
近年來,入侵技術無論規模還是方法都發生了變化,入侵技術主要是向著綜合化與復雜化、規模化、分布化以及入侵主體對象的間接化發展,入侵檢測系統也相應地朝著分布式、自適應性、智能化及技術綜合化發展[1]。在系統功能不斷豐富的同時,系統運行效率也不可避免地降低了。
入侵檢測系統檢測能力的提高往往是以檢測效率的降低為代價的。目前,針對檢測能力的提高開展了大量的研究,但忽視了系統的效率問題。而入侵檢測系統是一個實時處理系統,效率的降低將直接影響到系統的實用性。知識庫用來存儲和管理檢測分析所需的各種知識,數據庫用來存儲和管理所獲取的各種信息和檢測結果,兩者在入侵檢測系統中有著舉足輕重的作用。但是,當所需分析的信息量比較大時,從數據庫中讀取數據以及從知識庫中查找知識會消耗大量的時間,從而大大降低了系統的整體效率。
傳統的知識庫是被動的,只能根據用戶的命令被動地提供服務[2]。不能靈活地根據知識庫和數據庫的外部環境或內部狀態等情況主動適應。因此,傳統知識庫和數據庫在入侵檢測系統中顯示出明顯的不足,難以達到入侵檢測系統的檢測性能需求。主動知識庫和主動數據庫系統能夠在某些事件發生時,主動地執行由用戶預先指定的動作或動作序列。因此,主動知識庫和數據庫系統的出現,為解決入侵檢測性能問題提供了思路。
2 基于主動知識庫和數據庫的入侵檢測系統
將主動知識庫和數據庫系統應用于入侵檢測系統中,利用主動功能,可以豐富系統功能,提高系統運行效率。
2.1 系統結構
在同一個局域網內,如果有多臺主機需要防護,此時一臺分析機就須對應多個信息獲取子系統。因此,在短時間內,甚至同一個時刻,會有大量的數據傳給分析機,而分析機需花費一定的時間對每一數據進行分析處理,這樣就會造成分析機處理不過來的局面,從而丟失一定的數據。為解決這個問題,分析機可將接收到的數據首先保存到數據庫中,然后再進行分析。可是,這樣會產生另一個問題,即在每次對數據庫存、取數據的過程中,會無端浪費一些時間,從而影響到系統的實時性。另外,入侵檢測系統的分析效率也是影響系統性能的重要因素。
將主動數據庫系統應用到入侵檢測系統中,取代原來的事件數據庫,利用其具有的主動功能,在分析機進行分析處理的同時,把待分析的數據準備好,從而節省從數據庫讀取數據的時間[3]。同樣,用主動知識庫系統代替傳統的知識庫系統,將所需的檢測知識提前準備好,縮短檢測分析所需的時間。另外,還可以利用數據庫和知識庫的主動性能來完成入侵檢測系統所需的其他工作,提高系統的整體性能。
所以,基于主動知識庫和主動數據庫系統的入侵檢測系統,除了包含主動知識庫,還包括主動數據庫。系統結構如圖1所示。
在圖1中,系統主要分為兩層:網絡層和分析層。網絡層主要負責獲取被保護網絡或主機的信息,分析層則對信息進行分析處理。采用兩層結構可以使網絡層和分析層相對獨立工作,互不影響。而主動數據庫作為網絡層和分析層之間的接口,將兩者很好地結合起來。
2.2 分析層工作流程
利用主動數據庫和主動知識庫的主動功能對“黑板”進行管理,使得系統分析層的工作流程與一般入侵檢測系統分析流程不同。本系統分析層采用并行工作流程,即數據庫和知識庫的主動功能和分析機分析處理功能可同時執行,它們通過“黑板”進行數據和知識的交互,如圖2所示。
在系統運行過程中,推理分析模塊不斷地從“黑板”中讀取數據和相關知識,并進行分析;各主動功能模塊則由特定事件觸發,當滿足一定條件時執行,從數據庫中讀取數據,進行一定處理(如對數據進行關聯和統計等),并將處理結果放入數據緩沖區;并從知識庫中搜索分析所需的知識,并放入知識緩沖區。由此可以看出,對“黑板”內容的存入和讀取獨立進行,并行工作,從而提高系統的分析性能。
3 主動數據庫的ECA規則實現
主動數據庫的實現依賴于ECA規則系統,因此,要實現上述主動功能,需制定相應的ECA規則。制定ECA規則,首先應確定規則的觸發事件,然后明確規則的激活條件及規則的執行動作[4]。
3.1 “黑板”管理
在入侵檢測系統中,“黑板”的作用非常重要,很多模塊都要頻繁地與“黑板”打交道,因此,對黑板的設計與管理策略是否合理,對系統的整體運行性能影響很大。“黑板”分為兩部分:數據緩沖區和知識緩沖區。數據緩沖區存放臨時數據,進行推理分析;知識緩沖區中存放推理所需的各種知識。而“推理”模塊進行推理分析時,只需從“黑板”中獲取數據和知識,而不再從數據庫和知識庫中查找和讀取,因而能夠提高系統的檢測分析性能。
“管理控制”模塊對“黑板”進行監督,對其中的數據進行管理,并對知識進行調度和管理。
在檢測過程中,數據緩沖區內應時刻保持一定數量的待檢數據,并不斷去除無用數據,加入新的數據。對于所要制定的EAC規則,觸發事件為數據緩沖區內的數據量;規則的激活條件為數據庫內是否有待檢數據;規則的執行動作為從數據庫讀取數據,并放入緩沖區內。
設數據緩沖區內容量為N,當前緩沖區內數據量為n,當n≤N/2時,事件產生器生成一事件E_DataBuffer_N,進而觸發ECA規則Rule_DataBufferM,此規則表示如下:
RULE Rule_DataBufferMWHEN E_DataBuffer_N
IF
THEN<從數據表中讀取數據(N-n)個;將數據放入緩沖區>
END RULE
“推理”模塊是專家系統的思維機構,其利用知識對問題進行求解。在入侵檢測系統中,“推理”模塊就是根據檢測知識,判斷所獲得的信息是否為入侵行為。由于檢測知識一般采用產生式規則表示,因此,推理過程就是將數據緩沖區中的數據與知識<條件>部分進行匹配的過程,如匹配成功則認為有入侵行為發生。
知識緩沖區中的內容,應隨著數據緩沖區中的數據作相應的調整。當數據緩沖區中添加新的數據時,主動知識庫則根據這些數據自動搜索相應的知識,并將這些知識放入知識緩沖區中。在制定ECA規則時,觸發事件為向數據緩沖區內插入或增加數據的事件,即E_DataBuffer_Insert或E_DataBuffer_AddNew;規則的激活條件為緩沖區內無相應知識;規則的執行動作為從知識庫中搜索知識,并放入知識緩沖區內。此ECA規則描述如下:
RULE Rule_KbufferM
WHEN E_DataBuffer_Insert | E_DataBuffer_AddNew
IF< NOT 知識緩沖區內存在相應知識>
THEN<運行搜索算法,查找相應知識;放入知識緩沖區,替換舊知識>
END RULE
3.2 推理指導
用ECA規則表示元知識,通過知識庫主動功能來實現對推理過程的指導,可以實時地對推理過程進行監視,以達到動態指導推理過程的目的。由于根據需要,本系統只采用了正向推理策略。因此,推理指導主要實現沖突消解和知識選擇功能。
沖突消解的任務就是解決沖突,對正向推理來說,它將決定選擇哪一組已知事實來激活哪一條產生式規則,使它用于當前的推理,產生其后件指出的結論或執行相應的操作。
目前,解決沖突消解的策略很多,基本思想都是按照某種原則對知識進行排序,常用的有:重要度優先、詳細程度優先、特殊優先、新知識優先、差異性優先、并行實行等。
本系統解決沖突消解的方法為:首先按照匹配程度排序,選用匹配度高的規則;當匹配程度相同時,則選用最新的規則。其基本算法描述如下:
Void Conflict _ Resolve(R:沖突規則集合,data:待分析數據)
{按匹配度進行消解;
if 匹配度消解不成功then 按知識新鮮度消解;
}
用主動功能實現沖突消解,事件監視器對推理過程進行監視,當規則沖突事件E_RuleConflict發生時,則調用沖突消解算法。制定ECA規則,觸發事件為E_RuleConflict;條件可為空,即永為真;規則的動作為調用Conflict_Resolve。規則描述如下:
RULE RuleConflict_Resolve
WHEN E_RuleConflict THEN Conflict_Resolve(R,data);
END RULE
網絡攻擊各種各樣,新的攻擊層出不窮,因此,檢測知識庫中必須有足夠的知識,且不斷增加新的知識,才能保證檢測的準確性。知識的增多,在一定程度上會降低系統的分析性能,因此,本系統對知識進行分類管理和存儲。
將知識分為淺層知識和深層知識,檢測分析時,首先利用淺層知識確定所需知識的類別,然后再利用深層知識進行具體分析。因此,相應的推理過程也就分為兩步,第一步,將獲取的網絡信息與淺層知識匹配,以確定深層知識范圍;第二步,利用深層知識對網絡信息進行具體推理分析,以確定是否有入侵行為發生,以及是何種入侵行為發生。利用主動功能,通過對推理過程監視,當有新的網絡信息時,就進行第一步推理;當第一步成功后,則進行第二步推理。
3.3 知識庫維護
由于新的攻擊不斷出現,同時對老的攻擊認識不斷深入,檢測知識庫的知識需不斷增加和更新,因此,對知識庫進行維護就很重要,以保證知識的完整性和一致性。對于知識庫的一致性和完整性校驗,一般都是在知識庫增加新知識或更新知識時完成的。用主動功能來實現時,事件監視器對用戶和入侵檢測系統其他模塊訪問知識庫的操作進行監視,當執行Insert或Update時,則調用完整性和一致性算法模塊。
制定ECA規則時,觸發事件為E_KbInsert或 E_KbUpdate(知識庫進行Insert或Update操作),而條件和動作都可包含在完整性和一致性校驗模塊中。用ECA規則描述為:
RULE Rule_KbChecking
WHEN E_KbInsert | E_KbUpdate
<調用完成性校驗模塊;
調用一致性校驗模塊>
END RULE
下面用對知識進行完整性中的非法屬性值校驗為例,ECA規則可表示為:
RULE Rule_KbChecking
WHEN E_KbInsert | E_KbUpdate
IF < 規則前件= NULL > THEN <放棄該規則,并執行事務回滾Rollback>
END RULE
3.4 數據預處理
數據預處理在入侵檢測系統中是很必要的,一方面它能減輕分析層的工作負擔,提高系統分析性能;另一方面,通過信息關聯,提高系統檢測能力。下面以數據統計為例來說明如何利用主動功能來實現數據預處理。
比如,對于SYN Flooding 攻擊,其特點是在時間段TD內,發送大量SYN數據包,占用目標主機過多的服務資源,致使服務超載,無法響應其他的請求。因此,在進行分析前,需對此用戶信息進行統計。
用主動功能來實現,事件監視器對時間進行監視,每隔一段時間TD就產生一事件E_Timer(TD)。ECA規則表示為:
RULE Rule_SYN_Static
WHEN E_Timer(TD)
IF SYN 數據包 THEN 統計計算
END RULE
3.5 數據庫維護
對數據庫進行維護,清除那些與入侵無關的信息,減少數據庫中的信息量,以提高數據庫系統的運行效率。用主動功能實現,其觸發事件為一定時器事件,即每隔一時間段TD產生一事件,其ECA規則表示為:
RULE Rule_DbM
WHEN E_Timer(TD)
IF 已檢測信息與入侵無關 THEN 刪除
END RULE
4 總結
基于主動知識庫和數據庫的入侵檢測系統,采用領域專家知識和推理機制,具有一定的智能性,克服了簡單模式匹配的一些弱點。ECA規則是一種“事件驅動”規則,將其應用于入侵檢測系統中,系統只有檢測到某些特定的、和入侵有關的事件發生后,才觸發ECA規則,進而通過判斷相應條件,以確定是否有入侵發生。這樣,網絡中存在的、大量和入侵無關的信息和事件在分析之前都將被拋棄,因此大大地提高了系統的分析效率和檢測能力。
參考文獻:
[1] 高秀峰,胡昌振.主動知識庫系統在IDS中的應用研究[J].科技導報,2005,23(3):28-31.
[2] 莫再峰,楊群.一種基于主動專家系統的分布式入侵檢測開放模型[J].中國西部科技,2008,7(6): 4-7.
[3] 梁雯.主動數據庫及在DSS中的應用研究[J].微機發展,2004,14(8):105-107.
[4] 周偉,李志蜀.基于ECA規則的動態數據交換技術[J].計算機工程.2008,34(5):119-121.