摘 要: 針對電力應用系統(tǒng)對嵌入式操作系統(tǒng)的實時性" title="實時性">實時性和安全性要求,以μC/OS-II" title="C/OS-II">C/OS-II內核為基礎,提出了一種入侵檢測" title="入侵檢測">入侵檢測模塊的設計及實現(xiàn)。
關鍵詞: 嵌入式系統(tǒng)" title="嵌入式系統(tǒng)">嵌入式系統(tǒng) 審計跟蹤 入侵檢測
隨著通信技術和電子技術的不斷發(fā)展,嵌入式系統(tǒng)在電力系統(tǒng)中得到越來越廣泛的應用,電力嵌入式系統(tǒng)連接Internet將成為一大發(fā)展趨勢。但是Internet是一個不確定的網(wǎng)絡,存在著許多安全隱患,這是一個突出的、急待解決的問題。因此要求嵌入式操作系統(tǒng)設計時,除了考慮實時性,還必須考慮其安全性設計。
目前,比較流行的嵌入式操作系統(tǒng)有QNX、VxWorks、Widow CE、μC/OS-II等。其中,μC/OS-II內核以穩(wěn)定、簡短、源代碼公開等特性得到了人們的青睞。但μC/OS-II只是一個微內核,并沒有安全方面的設計。為了更加適合應用在電力系統(tǒng)中,這部分功能必須增強。
本文將針對電力系統(tǒng)的需求,基于一個改寫的μC/OS-II說明該嵌入式操作系統(tǒng)中入侵檢測模塊的設計與實現(xiàn)。
1 針對電力系統(tǒng)的安全威脅分析
嵌入式系統(tǒng)在電力系統(tǒng)中主要應用于數(shù)據(jù)采集和遠程監(jiān)控,所以它面臨的最大威脅是數(shù)據(jù)(指令也認為是一種數(shù)據(jù))的保密性和完整性問題。通過現(xiàn)有的保密技術和網(wǎng)絡安全措施可以基本上保證數(shù)據(jù)的安全,但并不能絕對保證。入侵檢測模塊可以認為是整個系統(tǒng)的最后一道防線,在系統(tǒng)遭受威脅或被攻擊后,可以分析攻擊行為,有效保護系統(tǒng)免受同樣的攻擊。針對電力系統(tǒng),可以歸納出三個主要的安全威脅,這些威脅不能通過常規(guī)的數(shù)據(jù)保密技術和網(wǎng)絡安全措施得到絕對有效的解決。
(1)內部人員的違規(guī)行為。通常,數(shù)據(jù)保密技術和賬戶安全管理手段,只能防止外來人員的攻擊,而對于內部人員則束手無策。若內部人員濫用權限也會使系統(tǒng)面臨很大的威脅。小則造成設備損壞,大則危害公共安全和經濟生產。
(2)非授權用戶登錄操作。一個電力監(jiān)控系統(tǒng)不僅可以遠程采集電力終端設備的數(shù)據(jù),同時也可以進行設備故障診斷、實時控制等操作。非授權用戶通過盜取密碼等非法手段登錄嵌入式系統(tǒng)并進行非法的設備控制是監(jiān)控系統(tǒng)面臨的最大安全威脅。
(3)對系統(tǒng)資源的非法訪問。這里所謂的系統(tǒng)資源主要包括存儲器中的數(shù)據(jù)、系統(tǒng)的運行參數(shù)以及用于控制電力設備的硬件。當攻擊者繞過正常的操作順序獲取數(shù)據(jù)或是硬件的控制權時,系統(tǒng)的所有安全措施形同虛設。
通過上述分析可知,為了進一步加強系統(tǒng)的安全性,必須使系統(tǒng)具有個人行為監(jiān)控、事件重建、抵御網(wǎng)絡攻擊和故障分析能力。這些都將在入侵檢測模塊中實現(xiàn)。
2 基于主機的入侵檢測模塊設計
2.1 檢測技術
考慮到嵌入式系統(tǒng)資源的有限性,入侵檢測模塊將采用濫用檢測技術。所謂濫用檢測是直接對入侵行為進行特征化描述,建立某種或某類入侵的特征行為模式庫。如果發(fā)現(xiàn)當前行為與某個入侵模式一致,則表示發(fā)生了這種入侵。采用這種技術將降低判斷入侵檢測程序的復雜度,并且大大減少審計開銷,系統(tǒng)只記錄一些必要的日志信息,節(jié)省了有限的存儲器空間。
2.2 框架設計
入侵檢測模塊一般分為四部分:
(1)事件產生器。從環(huán)境中抽取感興趣的信息,并把信息轉化為標準格式供系統(tǒng)其他部件使用。
(2)事件數(shù)據(jù)庫。事件數(shù)據(jù)庫保存事件日志。
(3)事件分析器。分析輸入的格式化后的事件,進行真正意義上的入侵檢測,并產生新的警告。
(4)響應單元。響應單元按照警告進行相應的保護,反擊入侵行為。
根據(jù)電力應用的特性和嵌入式系統(tǒng)的特點,對上述入侵檢測框架進行修改如下:
(1)事件發(fā)生器產生原始日志數(shù)據(jù),為了避免對進程實時性造成太大的影響,先不做格式化處理。
(2)事件數(shù)據(jù)庫將接收的原始日志數(shù)據(jù)進行格式化處理,并進行相應的分類保存。
(3)事件分析器與響應單元合并,以減少對系統(tǒng)進程的占用。
整個入侵檢測框架如圖1所示。
3 基于主機的入侵檢測模塊的實現(xiàn)
3.1 入侵檢測模塊的實現(xiàn)流程
該操作系統(tǒng)是一個實時操作系統(tǒng),為了不影響系統(tǒng)的實時性,入侵檢測并不是實時處理,數(shù)據(jù)流在整個處理過程中可能并不是很流暢,所以在設計時采用消息隊列形式傳遞原始記錄。即每個事件產生器發(fā)送的消息都送到一個消息隊列中,事件數(shù)據(jù)庫在系統(tǒng)空閑時取出消息做統(tǒng)一的格式化處理,并保存到數(shù)據(jù)庫中。當日志記錄累積到一定程度時,由事件數(shù)據(jù)庫觸發(fā)事件分析器做分析檢測,經過檢測的日志記錄可以適當刪除,以保持事件數(shù)據(jù)庫接收新日志的能力。事件分析器作為整個入侵檢測模塊的核心,其程序流程如圖2所示。
從圖2可以看出,系統(tǒng)目前只檢測三種安全威脅,這是針對電力系統(tǒng)的威脅而確定。檢測的結果保存到威脅日志中并生成相應錯誤號,輔助響應單元完成后續(xù)操作。可以根據(jù)需求,通過修改檢測策略庫增加檢測的攻擊類型,但是為了不影響嵌入式系統(tǒng)的實時性,原則上只檢測必要的攻擊行為。
3.2 主要數(shù)據(jù)結構" title="數(shù)據(jù)結構">數(shù)據(jù)結構和方法
大型入侵檢測系統(tǒng)采用標準的日志數(shù)據(jù)結構,以方便系統(tǒng)之間的數(shù)據(jù)交流。但作為一個嵌入式的應用,目前并沒有做分布式架構的設計。若采用標準數(shù)據(jù)結構,則會使日志記錄的數(shù)據(jù)量大大增加,占用大量有限的存儲器空間。因此系統(tǒng)自定義了一個日志記錄的數(shù)據(jù)結構,而事件數(shù)據(jù)庫以一個結構體數(shù)組形式存在,并通過一個結構體控制數(shù)組使其成為一個循環(huán)區(qū)域。日志記錄和控制循環(huán)區(qū)域的結構體數(shù)據(jù)格式如下:
struct log {
unsigned char tp; //說明日志文件類型
unsigned char action; //說明操作類型
unsigned long time; //說明操作時間
unsigned long ip; //說明操作地點
long backup; //供擴展用
}
日志記錄是整個模塊中最占用存儲器的部分,為了盡量減少占用存儲區(qū)域,各個字段都做了優(yōu)化處理。在時間上并不采用傳統(tǒng)標準的年/月/日/時/分/秒表示,而是以一個無符號的長整型表示時間差來計算時間。這樣不僅節(jié)省了存儲空間,還簡化了檢測過程中時間差計算的復雜度。具體操作類型通過char tp與char action確定,用每一個bit位表示一個操作,這樣可以表示64個具體操作類型。
struct logchain {
struct log* start; //緩存區(qū)開始的地址
struct log* end; //緩存區(qū)結束的地址
unsigned short lpoint//上次入侵檢測提取的最后一條記錄
unsigned short ttsize//整個緩存區(qū)的大小
unsigned short entries//目前被占用的記錄數(shù)目
unsigned short curpoint//指向當前可以寫入的緩存區(qū)點
};
上述數(shù)據(jù)結構將控制整個事件數(shù)據(jù)庫日志的存儲管理。事件數(shù)據(jù)庫以一個循環(huán)的結構體數(shù)組表示,可以避免數(shù)據(jù)緩沖區(qū)的溢出。
整個入侵檢測模塊主要有以下幾個功能函數(shù)。為了保證通用性,所有函數(shù)都是以標準C語言編寫。
(1)入侵檢測模塊的啟動:unsigned char audit_init(void)。該功能函數(shù)將完成事件數(shù)據(jù)庫存儲區(qū)域的初始化、消息隊列的初始化和常駐任務的建立。
(2)常駐任務:void audittrail_thread(void*arg)。當系統(tǒng)啟動入侵檢測服務后,該任務將作為常駐任務運行在系統(tǒng)中。常駐任務是接收事件產生器發(fā)送的消息,經格式化處理保存在事件數(shù)據(jù)庫中,并根據(jù)事件數(shù)據(jù)庫的情況觸發(fā)事件分析器。
(3)檢測函數(shù)
密碼猜測攻擊:void check_countguess(void)
異常操作行為:void check_abnormalaction(void)
資源訪問情況:void check_resoucestatus(void)
這三個功能函數(shù)用來分析用戶登錄日志記錄,檢測是否存在惡意攻擊。
(4)響應單元主函數(shù):void response_main(unsigned char alarm)。該函數(shù)根據(jù)分析器得出的警告,調用響應策略庫中的相關策略,實施保護或者反擊措施。
本文提出的基于改進的μC/OS-II入侵檢測模塊的設計已基本實現(xiàn)。并且,作者修改了本實驗室已實現(xiàn)的智能脫扣器項目的軟件,并把它加載到修改后的嵌入式操作系統(tǒng)上進行初步測試。測試結果表明:系統(tǒng)的實時性和安全性均能滿足要求。在本論文的基礎上,作者將對入侵檢測的策略進行進一步改進和擴充,增強其穩(wěn)定性和實時性,以使其能更適應實際的電力應用領域。
參考文獻
1 韓東海,王 超.入侵檢測系統(tǒng)實例剖析[M].北京:清華大學出版社,2002
2 劉美蘭.基于審計的入侵檢測系統(tǒng).cernet學術會議論文集[C],2000
3 Jean J Labrosse.MicroC/OS-II The Real-Time Kernel Second Edition[M].2002
4 CIDF specification documents[S].The common intrusion detec-tion framework architecture,1999