羅 新, 王會林, 朱映輝
(韓山師范學院數學與信息技術系,廣東潮州 521041)
移動Agent本質上是實現某種功能的代碼塊,它最大的特點就是移動性,即它可以在不同主機間進行遷移。相對于 RPC(Remote Procedure Call),移動Agent可以把在一臺主機上的當前執行狀態保存下來,到了新的主機后再把狀態恢復,從而可以方便地完成一些需要在不同主機間連續作業的任務。另外,它還具有一定的智能,具有自主性,能夠根據外界的信息控制自己的決策。與傳統的 C/S模式相比,移動Agent具有無需與服務器端建立持續連接,能夠以一種離線的方式在不同的客戶端進行任務處理,同時又具有自主遷移特點。另外,Agent之間有專門的通信機制,所以它們具有協同工作的能力。由于移動Agent技術本身具有的特點,它在很多方面得到了應用[1-3],如分布式信息檢索,并行任務,電子商務等。
具體應用時,為了節省開發時間,通常會使用一些第三方提供的移動Agent開發及運行平臺,包括基于java語言的Aglets、JADE等,基于 C/C++的Mobile-C等,用戶只需按照自己的應用需求,編寫各種功能的Agent,然后在應用環境中的各個主機中安裝移動Agent的運行平臺,就可以利用移動 Agent的各種功能。
目前高校的公共機房[4-8]由于向學生開放,為了保證系統的穩定性,一般都會在電腦上安裝基于硬件或軟件的還原系統[9-10]。通常還原模式是每次啟動還原,即電腦重啟后,系統就會恢復到一個還原點,用戶新增加的數據全部丟失。對于從網絡或U盤感染的大部分木馬或病毒,每次重啟后,系統可以恢復到正常狀態。但是,目前已經出現過多種可以突破保護系統的保護機制的病毒,如幾年前的熊貓燒香病毒等,這些病毒基本上都具有蠕蟲病毒的特征,即只要有一臺機器被感染,機房的其它的機器也不能幸免。通常情況下,這些病毒還會自動從網上下載大量的木馬程序存貯在硬盤上,并進行轉儲。最終造成機器性能低下,或者是網絡癱瘓,嚴重影響了機房的正常使用。
對于公共機房的電腦,本身有還原系統,能抵御大部分的病毒入侵。另外,通常公共機房電腦的硬件配置不會太高,運行占用大量系統資源的安全防范軟件效果也不好。所以可以從另一種實時防范及檢測的角度進行解決,對機房電腦的文件系統及機房網絡狀況等進行監控,就可以獲知還原系統是否被破壞,是否運行著惡意的進程以及網絡中是否存在惡意的攻擊行為等。機房管理員在獲知這些信息后,就可以采取相應的解決措施,從而確保機房電腦處于良好使用狀態。
將Agent技術應用于機房安全檢測[11-12],具有下面幾個優點:① 移動Agent天生具有分布式計算的特性,可以把各種安全檢測及處理功能的代碼模塊以移動Agent的形式派遣到各個主機上,然后執行相應的任務。在這個過程中,工作Agent與擔當主控服務器角色的Agent不會一直進行通信,只有當需要數據交換時,才會以消息(message)的形式進行。公共機房的機器數量一般都很大,如果能夠以移動Agent的技術對各臺機器進行檢測,對服務器的性能及網絡性能都不會造成太大的影響。② 移動Agent可以較好解決安全檢測功能模塊的升級問題。機房安全檢測可以涉及到多個方面,開發人員應不斷開發新的功能模塊。這些新模塊以工作Agent形式,發送到各個主機上完成特定的任務,所以不存在功能更新模塊在被檢測主機上進行安裝的必要性。③ 多個移動Agent之間的協作性。移動Agent技術提供了Agent間的協作機制,以消息或本體知識形式進行交流。這個特性應用于機房安全檢測可以用來提高安全檢測的準確度,一個工作Agent在檢測一臺主機時候,如果遇到一些不確定的情況,就可以與其他Agent進行交流,從而為自己的判斷決策提供參照。對于一些網絡蠕蟲類病毒,Agent間的協作性能大幅提高檢測的準確度。
系統由多Agent構成,包括擔當主控端角色的Agent以及完成各種檢測功能,在主機間移動或駐留的任務Agent。每個Agent的生存都必須依賴運行在主機上的Agent平臺,所以必須先在每臺主機上安裝Agent平臺,并永久轉儲起來。Agent平臺可使用第三方開發的開源或商業軟件,Agent應用程序開發人員主要關注Agent的功能、調度及協作的設計與實現。系統的架構圖如圖1所示。

圖1 系統架構圖
在系統的架構圖上,實線表示移動Agent的遷移方向,虛線表示 Agent間的通信。如圖所示,移動Agent由服務器上主控Agent控制生成,然后可以遷移到各個機房電腦。遷移的方向可以按照一定的線路,依次訪問線路上的每臺主機;也可以并發的方式,同時向每一臺主機發送一個移運Agent,由于服務器與機房電腦的連接網絡是全連通的,所以主控端Agent可以直接訪問每一臺主機。從Agent間的通信線路看,包括了移動Agent與主控Agent,移動Agent與主機上的靜態Agent,以及移動Agent間的三種通信。第一種通信主要是傳遞控制信息或匯總處理結果,第二種通信是移動Agent與靜態Agent間相互功能調用或信息交換,第三種通信主要實現移動Agent間的協作。
機房安全檢測系統的主要實現思路如下:把各種安全檢測功能模塊編寫成Agent,然后由服務器上運行的主控Agent負責調度生成各個檢測Agent,再派遣到機房內的各個主機上執行相應的任務。主控端Agent根據機房網絡及電腦的使用狀況,選擇合適的時間及合適的Agent個數派遣到主機上執行檢測掃描任務。移動Agent的遷移路線既可按照主控Agent安排的路線,也可根據自身對網絡環境及主機環境實際狀況的感知,自主選擇下一個遷移目的地。移動Agent在處理安全測試任務時,如果遇到無法確定的狀況,可以跟主控Agent或其他移動Agent進行通信,從而請求主控Agent派遣特定功能Agent到來處理或者與其他移動Agent對相同狀況的處理方法進行協商。靜態Agent作為常駐主機的Agent,主要提供如系統信息收集等固定功能,這些信息可供移動Agent使用。
具有安全檢測功能的Agent可以不斷開發出來并加入本系統。根據公共機房電腦安裝有還原系統這個特點,檢測范圍包括:還原系統是否被破壞,這個可以通過檢測機房電腦系統文件夾下的文件個數,文件大小,文件最后修改日期等信息是否與歷史記錄信息相符來進行判斷;系統運行狀態的監測,包括運行進程列表,內存及CPU等系統資源的使用情況;主機網絡狀態的監測,包括進出數據包的速率,內外連接的數目,各種類型的數據包統計,主機開放端口個數等信息。
機房安全檢測系統采用JADE[13]作為Agent的運行平臺。JADE(Java Agent Development Framework)是由意大利電信于1998年依照FIPA(The Foundation for Intelligent Physical Agents)規格開發而成,并于2000年開放源代碼。它是一個由Java語言實現的軟件平臺,提供了獨立于具體應用的基本中間件功能,并設計出了軟件Agent的各種抽象功能,從而可以簡化基于Agent的分布式應用程序的開發過程。JADE提供了Agent賴以生存的運行時環境,開發Agent應用的運行時庫,以及一系列圖形化界面的工具,以幫助用戶管理和監控Agent的運行狀態。
系統開發工具是 Eclipse+JDK1.6+JADE4.1類庫。管理服務器及被檢測機房電腦的操作系統均為Windows XP,在服務器及機房電腦都預先安裝JADE運行平臺。在服務器上以主容器(Main-Container)的形式啟動平臺,在被檢測機器上則以輔助容器(Secondary-Container)的形式啟動并向主容器進行注冊。為了能區分各個輔助容器所對應的被檢測機器,必須給容器定義一個標識符,可采用機器的主機名作為標識符。例如,假設一臺被檢測電腦的主機名為A1,而主容器所在的主機名為A2,則在啟用平臺時可采用如下命令行:java jade.Boot-container-containername A1-host A2。
主控端的界面分為三部分,分別為系統參數設置,掃描設置,掃描結果顯示。系統參數設置主要包括被檢測電腦的基準狀態的獲取,如果想監測機房電腦的還原系統是否遭到破壞,就必須先把電腦在某一時間的正常狀態獲取并保存下來,以后需要檢測時就根據這個基準文件進行判斷;還需要定義一個網絡安全規則文件,里面定義了一些安全規則,例如充許的端口號,一定時間內最大連接數,某種類型的數據包個數等,移動Agent在進行網絡安全檢測時,根據這些規則文件進行判斷,如果發現違反規則的現象,則向主控端發送報警信息。掃描設置主要對需要進行安全掃描的主機進行選擇,另外對派遣Agent的個數進行設置,如果Agent個數小于被掃描主機數,系統會自動為每個Agent生成一個掃描主機列表,此時,Agent以一種串行的方式對列表中的主機進行掃描。最后可以對安全掃描的類型進行選擇;掃描結果顯示功能模塊給出了出現安全問題的主機列表及詳細的信息。主控端界面如圖2所示。

圖2 主控端界面
被檢測端可以運行一些實現監測系統狀態功能的Agent,它們是長駐在一臺機器上的,所以稱為靜態Agent,例如對網絡進行抓包及統計的 Agent。移動Agent的主要作用包括攜帶安全基準文件與靜態Agent進行交互,以及當出現新功能的安全檢測模塊時,可以遷移到被檢測機器上運行。另外,由于Java對操作系統底層功能調用不強,如果需要獲取一些系統屬性,可以采用JNI(Java Native Interface)的形式進行調用。可以用其它高級語言把一些功能模塊編譯成DLL文件,然后由Java進行調用。
模擬測試采用10臺及30臺機器分兩批次進行。主要進行還原功能是否破壞檢測,以及機器ARP病毒檢測。還原功能檢測模擬比較容易,只需要在幾臺機器中的系統目錄下新建幾個文件,或者對文件的內容進行修改,或者運行一個新的進程。實驗表明,主控端均能收到了相應主機發來的報警信息,表明還原檢測功能是有效的;ARP病毒[14-15]的檢測實驗是由VC++編寫的一段代碼模擬ARP攻擊,具體思路就是在一臺攻擊的機器上向其他主機發送的虛假的ARP數據包,這些數據包的源IP地址是局域網內主機的真實IP地址,但是源MAC地址已經被替換成攻擊機器的MAC地址。這些虛假的ARP數據包會更改被攻擊機器的ARP表,從而使被攻擊機器間通信都要指向發起攻擊的機器。攻擊造成的后果包括局域網機器上網斷線,數據被篡改等。網絡狀況監測Agent進行判斷的條件就是一臺主機在一定時間內發出/接收到的具有相同源MAC地址的ARP數據包個數是否超過一個閥值,如果滿足條件說明就可能是該主機在發起或受到ARP攻擊。另外,為了提高檢測的準確率,運行于各臺主機的檢測Agent可以通過消息發起協商,對結果進行統計,最后得出判斷,通過消息告之主控端。實驗結果表明,通過運行模擬ARP攻擊代碼,運行10臺及30臺機器兩批次的實驗都可以檢測到ARP攻擊,運行30臺機器的得到的報警信息的時間稍長,這應該與Agent間的協商所花時間更長有關。最后,對系統的可擴展性能進行測試,判斷的依據就對系統資源的占用情況進行比較,在10臺及30被檢測機的條件下,在一定時間間隔內,主控端程序占用的平均CPU使用率及內存大小的差值都在2%之內,這也證明了在基于Agent分布式的工作模式下,主要的計算是分布在各個主機上的,說明系統的可擴展性良好。
針對公共實驗機房使用過程中遇到安全問題,提出基于Agent的解決方案,并開發出一個原型系統,實驗結果表明初步實現了安全檢測的效果,但是機房面臨的安全威脅是多種多樣的,如何利用多Agent系統的協同性,智能性,使之對未知的安全威脅也具有檢測能力;另外,將系統部署到于大規模的實際應用環境中,必須對通信及檢測速度進行改善,這都是下一步的努力的方向。
(References):
[1] 歐立勇,杜樹新.基于多智能體的公共檢測資源協調方法[J].浙江大學學報(工學版),2010,44(1):81-86.
[2] 張 發,趙巧霞.基于多Agent的交通流仿真平臺[J].計算機工程,2010,36(1):9-11.
[3] 張 衡,陳 超,曾 磊.P2P網絡中移動agent的搜索資源分配研究[J].西南師范大學學報(自然科學版),2010,35(1):164-167.
[4] 徐 寧,邊 津.高校計算機機房的病毒防護[J].實驗室科學,2007(4):168-169.
[5] 許克勤.公共網絡機房病毒的綜合防治[J].嘉興學院學報,2008,20(3):71-74.
[6] 李 明,李祥和.局域網通信中的安全問題及解決方案[J].微計算機信息,2006,22(23):17-19.
[7] 鄒修明,張岳新.高校計算機實驗室安全管理探討[J].現代電子技術,2001(12):12-14.
[8] 屈艷華,高振波,韓 坤.計算機房網絡系統安全與管理[J].實驗室科學,2007(4):170-171.
[9] 張景龍,張春生,實驗室網絡還原系統軟件的研究[J].內蒙古民族大學學報(自然科學版),2011,26(6):661-662.
[10] 杜厚祥,計算機公共機房軟件系統備份與還原[J].實驗科學與技術,2010(10):70-73.
[11] 湯方澄,楊小虎.基于智能Agent的網絡安全監控系統的研究[J].計算機工程,2002(12):63-65.
[12] 胡麗娜,須文波.一個基于移動Agent的分布式入侵檢測系統模型[J].微計算機信息,2006(21):139-141.
[13] Fabio Bellifemine, Developing Multi-Agent Systems with JADE[M].Wiley,2007.
[14] 王思思,楊 仝.ARP病毒攻擊模擬與防范措施[J].計算機仿真,2010(3):119-122.
[15] 蘇 威.計算機輔助工程中心安全管理及局域網ARP病毒防治[J].實驗技術與管理,2009,26(3):246-250.