上海交通大學(xué)信息安全工程學(xué)院 王 鋒 單蓉勝
中小企業(yè)的網(wǎng)絡(luò)管理員常常會面臨這樣的困境,企業(yè)由于預(yù)算等原因而不得不將內(nèi)部網(wǎng)絡(luò)置于工作組的管理模式下。眾所周知,工作組模式下主機(jī)地位平等,缺乏統(tǒng)一集中的安全管理機(jī)制。為保證企業(yè)內(nèi)部網(wǎng)絡(luò)的安全,管理員不得不在每臺主機(jī)上進(jìn)行設(shè)置,并不斷的通過人工檢查來保證所做的安全設(shè)置不會被員工誤操作、病毒感染等因素破壞,這種方式即占用了管理員的大量時間和精力,又不能保證企業(yè)內(nèi)網(wǎng)的安全水平。本文提出利用開源的內(nèi)網(wǎng)監(jiān)控解決方案zabbix解決工作組環(huán)境下的主機(jī)安全問題的方法。該方法利用監(jiān)控系統(tǒng)掃描客戶端的安全設(shè)置,當(dāng)發(fā)現(xiàn)客戶端的安全配置不符合要求時,監(jiān)控系統(tǒng)可以遠(yuǎn)程自動的更改被監(jiān)控端的配置,強(qiáng)制客戶端執(zhí)行公司的安全策略。同時監(jiān)控系統(tǒng)還實時的檢查主機(jī)行為,當(dāng)發(fā)現(xiàn)員工QQ、MSN、游戲等工作無關(guān)的軟件,或網(wǎng)絡(luò)中某臺終端濫用網(wǎng)絡(luò)資源時系統(tǒng)可以根據(jù)設(shè)定好的規(guī)則進(jìn)行自動處理。
本文所設(shè)計的方法由監(jiān)控系統(tǒng)的數(shù)據(jù)采集模塊、報警模塊以及反饋控制模塊三部分共同完成。數(shù)據(jù)采集由安裝在被監(jiān)控主機(jī)上的客戶端程序來完成,監(jiān)控服務(wù)器設(shè)置被監(jiān)控端數(shù)據(jù)采集的方式、數(shù)據(jù)采集的項目,數(shù)據(jù)采集的頻率等信息;被監(jiān)控端定期與服務(wù)器通信下載這些配置信息,并根據(jù)配置信息的設(shè)定定期發(fā)送監(jiān)控數(shù)據(jù)到服務(wù)器端。報警模塊由服務(wù)器程序完成,報警模塊的主要作用是根據(jù)監(jiān)控數(shù)據(jù)判斷客戶端的安全策略執(zhí)行情況,發(fā)現(xiàn)問題時及時預(yù)警。反饋控制模塊的主要作用是在工作組的環(huán)境下提供一種機(jī)制,由監(jiān)控系統(tǒng)根據(jù)警報在客戶端遠(yuǎn)程執(zhí)行命令或應(yīng)用程序,自動的修改客戶端的系統(tǒng)配置,保證客戶端的安全配置和主機(jī)行為符合公司的安全策略。系統(tǒng)的工作流程如圖1所示。
具體流程一般包含以下五個步驟:
(1)被監(jiān)控主機(jī)定期從服務(wù)器下載監(jiān)控配置信息,根據(jù)配置信息的要求向服務(wù)器發(fā)送監(jiān)控數(shù)據(jù)。
(2)服務(wù)器收集客戶端的監(jiān)控數(shù)據(jù),將當(dāng)采集的數(shù)據(jù)與預(yù)設(shè)的闕值進(jìn)行比較,如果比較的結(jié)果滿足預(yù)設(shè)的某種情況時監(jiān)控系統(tǒng)產(chǎn)生事件,否則就不做處理。
(3)當(dāng)事件產(chǎn)生時,服務(wù)器進(jìn)一步檢查系統(tǒng)配置中該事件對應(yīng)的動作,根據(jù)動作的設(shè)定進(jìn)行下一步操作,向遠(yuǎn)端主機(jī)的客戶端程序發(fā)出指令。
(4)被監(jiān)控主機(jī)的客戶端程序接到服務(wù)器的指令后,根據(jù)指令的內(nèi)容執(zhí)行相應(yīng)的Windows命令或應(yīng)用程序,更改主機(jī)的系統(tǒng)配置。
(5)監(jiān)控系統(tǒng)根據(jù)最新采集到的監(jiān)控數(shù)據(jù)判斷當(dāng)前被監(jiān)控主機(jī)是否符合公司的安全策略。如果符合就不做處理繼續(xù)掃描主機(jī)安全設(shè)置;如果依舊不符合就根據(jù)設(shè)置進(jìn)行下一步處理。
數(shù)據(jù)采集模塊的主要功能是自動采集內(nèi)網(wǎng)監(jiān)控管理所需要的相關(guān)數(shù)據(jù),其基本設(shè)計思想是:利用Zabbix所提供的機(jī)制作為基本的數(shù)據(jù)獲取和通信手段來實現(xiàn)監(jiān)控數(shù)據(jù)的采集。Zabbix是一個基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級的開源解決方案。Zabbix通過C/S模式采集數(shù)據(jù),通過B/S模式在Web端展示和配置。Zabbix系統(tǒng)以Zabbix Server為中心與其他組件溝通,包括Zabbix Database、Zabbix Web Frontend、Zabbix Agent、Zabbix Proxy等組件。數(shù)據(jù)采集以監(jiān)控項(Item)為基本元素,每一個監(jiān)控項對應(yīng)一個采集值;監(jiān)控項關(guān)聯(lián)到監(jiān)控主機(jī)(Host)決定對被監(jiān)控主機(jī)需要采集的數(shù)據(jù)。被監(jiān)控主機(jī)上的客戶端程序首先獲取服務(wù)器上的監(jiān)控項的列表,然后收集列表中要求的本機(jī)信息,最后發(fā)送給服務(wù)器進(jìn)行下一步處理。系統(tǒng)默認(rèn)提供了關(guān)于主機(jī)連通性、服務(wù)、性能等方面的監(jiān)控項可供使用,對主機(jī)安全性方面的檢查需要通過Zabbix提供的自定義監(jiān)控項來完成。自定義監(jiān)控的主要原理是由客戶端程序根據(jù)配置文件中的設(shè)置調(diào)用主機(jī)上的系統(tǒng)命令或是腳本程序,將運行結(jié)果作為監(jiān)控數(shù)據(jù)發(fā)送給服務(wù)器。這種方式極大的增強(qiáng)了監(jiān)控系統(tǒng)的功能,系統(tǒng)中幾乎全部的信息都可以被采集。
報警模塊的分兩個部分:一是定義事件,將客戶端的監(jiān)控數(shù)值與預(yù)設(shè)的闕值做比較來判斷事件是否發(fā)生;二是動作的設(shè)定,決定當(dāng)事件發(fā)生時系統(tǒng)如何進(jìn)行下一步動作。事件的定義使用了Zabbix的觸發(fā)器(Trigger),觸發(fā)器由一個邏輯表達(dá)式Expression定義,來反映系統(tǒng)的狀態(tài)。觸發(fā)器有三種狀態(tài):PROBLEM(當(dāng)Item采集值滿足邏輯表達(dá)式定義的觸發(fā)條件時觸發(fā)器的狀態(tài),表示系統(tǒng)中發(fā)生某個事件)、OK(這是觸發(fā)器通常的狀態(tài),表明觸發(fā)器所關(guān)聯(lián)的監(jiān)控項目正常)、UNKNOWN(通常由于邏輯表達(dá)式設(shè)定錯誤而造成的系統(tǒng)無法判別)。報警動作包括動作產(chǎn)生的條件和處理方式的設(shè)定。監(jiān)控系統(tǒng)中產(chǎn)生的事件中會有不同的級別,只有當(dāng)某類事件發(fā)生時才會引發(fā)報警;所以需要對監(jiān)控系統(tǒng)產(chǎn)生的事件進(jìn)行過濾,選出合適的事件,這種過濾通過動作產(chǎn)生條件來完成。對不同的事件類型設(shè)置相應(yīng)的處理方式,包括發(fā)送報警消息和執(zhí)行遠(yuǎn)程命令等。
反饋控制的實現(xiàn)過程中利用了報警模塊產(chǎn)生的事件和動作,當(dāng)檢查監(jiān)控數(shù)據(jù)后發(fā)現(xiàn)客戶端的安全設(shè)置出現(xiàn)問題報警模塊就會產(chǎn)生事件,反饋控制使用了Actions中的remote command自動修改客戶端的系統(tǒng)配置來保證客戶端的安全性。因為Zabbix agent在被監(jiān)控端是被注冊為服務(wù)啟動的,所以Zabbix系統(tǒng)可以在被監(jiān)控端以系統(tǒng)服務(wù)的身份運行絕大多數(shù)windows命令,也可以運行腳本,可執(zhí)行程序等。使用Run remote commands功能,必須在被監(jiān)控端的客戶端配置文件中找到Option:EnableRemoteCommands,設(shè)置EnableRemoteCommands=1,Zabbix默認(rèn)為0,表示不允許執(zhí)行遠(yuǎn)程命令。
實驗環(huán)境介紹:實驗中共有兩臺計算機(jī),一臺為Zabbix服務(wù)器安裝Linux系統(tǒng),一臺為被監(jiān)控客戶端安裝WindowsXP系統(tǒng)。在Zabbix服務(wù)器上安裝Zabbix Server、Zabbix Database、Zabbix Web Frontend;在客戶端安裝Zabbix Agent。
實驗內(nèi)容:設(shè)置Zabbix系統(tǒng)監(jiān)控Telnet服務(wù)的情況,當(dāng)系統(tǒng)遭受黑客攻擊或是管理員誤操作而打開Telnet服務(wù)時自動生成警報,并關(guān)閉Telnet服務(wù)。實驗中手動打開Telnet服務(wù),觀察監(jiān)控系統(tǒng)對這一情況如何處理。監(jiān)控系統(tǒng)的設(shè)置步驟如下:
(1)定義監(jiān)控項:在web界面選擇需要監(jiān)控的主機(jī),建立監(jiān)控項Item;監(jiān)控鍵值選擇系統(tǒng)提供的service_state[TlntSvr](tlntsvr.exe是Windows服務(wù)器程序,可以在Windows服務(wù)中的查看服務(wù)名稱)。
(2)定義警報:在相同的主機(jī)建立Trigger,Name為TelNet服務(wù)打開;Expression為{win_xp3:service_state[TlntSvr].last(0)}=0,表示當(dāng)最近一次采集的監(jiān)控值為0時引發(fā)警報。
(3)定義動作產(chǎn)生條件:在Configuration>Actions界面中,創(chuàng)建Action。動作產(chǎn)生條件為Host="hostname"、Trigger="hostname:TelNet服務(wù)打開”、Trigger value="PROBLEM";
(4)設(shè)置動作:在Action operations選框中點擊new,在彈出的對話框中選擇Operation type為Run remote commands,在Remote command中輸入:{HOSTNAME}:net stop Tlntsvr。({HOSTNAME}是Zabbix提供的宏,自動轉(zhuǎn)換為被監(jiān)控主機(jī)的名稱),net stop Tlntsvr是Windows命令。
實驗結(jié)果:客戶端Telnet服務(wù)開啟后,監(jiān)控系統(tǒng)發(fā)出警報,檢查客戶端Telnet服務(wù)狀態(tài)發(fā)現(xiàn)服務(wù)被自動關(guān)閉,達(dá)到理想的預(yù)期效果。
利用Zabbix監(jiān)控系統(tǒng)結(jié)合Windows命令的方法可以實現(xiàn)自動化、流程化、標(biāo)準(zhǔn)化的企業(yè)內(nèi)網(wǎng)管理,降低管理復(fù)雜度,使維護(hù)人員由原來的“系統(tǒng)救火員”角色變?yōu)檎嬲南到y(tǒng)管理員,變被動為主動,極大的提高了網(wǎng)絡(luò)的維護(hù)效率。解決企業(yè)網(wǎng)絡(luò)管理工作中工作組環(huán)境下安全管理薄弱的問題,增強(qiáng)了系統(tǒng)安全性,對于企業(yè)的信息化建設(shè)起到了重要作用。
[1]萬加富,張文斐,張占松.網(wǎng)絡(luò)監(jiān)控系統(tǒng)原理與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2004.1.
[2]高楊.內(nèi)網(wǎng)終端安全操作監(jiān)控方案研究[J].硅谷,2009.8.
[3]李朝陽.利用ZABBIX進(jìn)行系統(tǒng)和網(wǎng)絡(luò)管理[J].計算機(jī)時代,2008.10.