SNMP協(xié)議 - 簡單網(wǎng)絡(luò)管理協(xié)議
簡單網(wǎng)絡(luò)管理協(xié)議(SNMP),由一組網(wǎng)絡(luò)管理的標(biāo)準(zhǔn)組成,包含一個(gè)應(yīng)用層協(xié)議(application layer protocol)、數(shù)據(jù)庫模型(database schema)和一組資源對(duì)象。該協(xié)議能夠支持網(wǎng)絡(luò)管理系統(tǒng),用以監(jiān)測(cè)連接到網(wǎng)絡(luò)上的設(shè)備是否有任何引起管理上關(guān)注的情況。該協(xié)議是互聯(lián)網(wǎng)工程工作小組(IETF,Internet Engineering Task Force)定義的internet協(xié)議簇的一部分。SNMP的目標(biāo)是管理互聯(lián)網(wǎng)Internet上眾多廠家生產(chǎn)的軟硬件平臺(tái),因此SNMP受Internet標(biāo)準(zhǔn)網(wǎng)絡(luò)管理框架的影響也很大。SNMP已經(jīng)出到第三個(gè)版本的協(xié)議,其功能較以前已經(jīng)大大地加強(qiáng)和改進(jìn)了。
簡介
SNMP是專門設(shè)計(jì)用于在IP網(wǎng)絡(luò)管理網(wǎng)絡(luò)節(jié)點(diǎn)(服務(wù)器、工作站、路由器、交換機(jī)及HUBS等)的一種標(biāo)準(zhǔn)協(xié)議,它是一種應(yīng)用層協(xié)議。SNMP使網(wǎng)絡(luò)管理員能夠管理網(wǎng)絡(luò)效能,發(fā)現(xiàn)并解決網(wǎng)絡(luò)問題以及規(guī)劃網(wǎng)絡(luò)增長。通過SNMP接收隨機(jī)消息(及事件報(bào)告)網(wǎng)絡(luò)管理系統(tǒng)獲知網(wǎng)絡(luò)出現(xiàn)問題。
SNMP的前身是簡單網(wǎng)關(guān)監(jiān)控協(xié)議(SGMP),用來對(duì)通信線路進(jìn)行管理。隨后,人們對(duì)SGMP進(jìn)行了很大的修改,特別是加入了符合Internet定義的SMI和MIB,改進(jìn)后的協(xié)議就是著名的SNMP?;赥CP/IP的SNMP網(wǎng)絡(luò)管理框架是工業(yè)上的現(xiàn)行標(biāo)準(zhǔn),由3個(gè)主要部分組成,分別是管理信息結(jié)構(gòu)SMI(Structure?ofManagement?Information)、管理信息庫MIB和管理協(xié)議SNMP。
SMI定義了SNMP框架所用信息的組織和標(biāo)識(shí),為MIB定義管理對(duì)象及使用管理對(duì)象提供模板。
MIB定義了可以通過SNMP進(jìn)行訪問的管理對(duì)象的集合。
SNMP協(xié)議是應(yīng)用層協(xié)議,定義了網(wǎng)絡(luò)管理者如何對(duì)代理進(jìn)程的MIB對(duì)象進(jìn)行讀寫操作。
SNMP中的MIB是一種樹狀數(shù)據(jù)庫,MIB管理的對(duì)象,就是樹的端節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都有唯一位置和唯一名字.IETF規(guī)定管理信息庫對(duì)象識(shí)別符(OID,Object?Identifier)唯一指定,其命名規(guī)則就是父節(jié)點(diǎn)的名字作為子節(jié)點(diǎn)名字的前綴。
工作原理
在典型的SNMP用法中,有許多系統(tǒng)被管理,而且是有一或多個(gè)系統(tǒng)在管理它們。每一個(gè)被管理的系統(tǒng)上又運(yùn)行一個(gè)叫做代理者(agent)的軟件元件,且通過SNMP對(duì)管理系統(tǒng)報(bào)告資訊。
基本上,SNMP代理者以變量呈現(xiàn)管理資料。管理系統(tǒng)透過GET,GETNEXT和GETBULK協(xié)定指令取回資訊,或是代理者在沒有被詢問的情況下,使用TRAP或INFORM傳送資料。管理系統(tǒng)也可以傳送配置更新或控制的請(qǐng)求,透過SET協(xié)定指令達(dá)到主動(dòng)管理系統(tǒng)的目的。配置和控制指令只有當(dāng)網(wǎng)絡(luò)基本結(jié)構(gòu)需要改變的時(shí)候使用,而監(jiān)控指令則通常是常態(tài)性的工作。
可透過SNMP存取的變量以階層的方式結(jié)合。這些分層和其他元數(shù)據(jù)(例如變量的類型和描述)以管理信息庫(MIBs)的方式描述。
應(yīng)用模型
SNMP是基于TCP/IP協(xié)議族的網(wǎng)絡(luò)管理標(biāo)準(zhǔn),是一種在IP網(wǎng)絡(luò)中管理網(wǎng)絡(luò)節(jié)點(diǎn)(如服務(wù)器、工作站、路由器、交換機(jī)等)的標(biāo)準(zhǔn)協(xié)議。SNMP能夠使網(wǎng)絡(luò)管理員提高網(wǎng)絡(luò)管理效能,及時(shí)發(fā)現(xiàn)并解決網(wǎng)絡(luò)問題以及規(guī)劃網(wǎng)絡(luò)的增長。網(wǎng)絡(luò)管理員還可以通過SNMP接收網(wǎng)絡(luò)節(jié)點(diǎn)的通知消息以及告警事件報(bào)告等來獲知網(wǎng)絡(luò)出現(xiàn)的問題。
SNMP管理的網(wǎng)絡(luò)主要由三部分組成:
被管理的設(shè)備
SNMP代理
網(wǎng)絡(luò)管理系統(tǒng)(NMS)
網(wǎng)絡(luò)中被管理的每一個(gè)設(shè)備都存在一個(gè)管理信息庫(MIB)用于收集并儲(chǔ)存管理信息。通過SNMP協(xié)議,NMS能獲取這些信息。被管理設(shè)備,又稱為網(wǎng)絡(luò)單元或網(wǎng)絡(luò)節(jié)點(diǎn),可以是支持SNMP協(xié)議的路由器、交換機(jī)、服務(wù)器或者主機(jī)等等。
SNMP代理是被管理設(shè)備上的一個(gè)網(wǎng)絡(luò)管理軟件模塊,擁有本地設(shè)備的相關(guān)管理信息,并用于將它們轉(zhuǎn)換成與SNMP兼容的格式,傳遞給NMS。
NMS運(yùn)行應(yīng)用程序來實(shí)現(xiàn)監(jiān)控被管理設(shè)備的功能。另外,NMS還為網(wǎng)絡(luò)管理提供大量的處理程序及必須的儲(chǔ)存資源。
協(xié)議發(fā)展
第一版
SNMP第一版和SMI規(guī)格的資料型態(tài)SNMP第一版SMI指定許多SMI規(guī)格的資料型態(tài),它們被分為兩大類:
簡單資料型態(tài)
泛應(yīng)用資料型態(tài)
SNMPv1使用基于團(tuán)體名進(jìn)行報(bào)文認(rèn)證
第二版
SNMP第二版和管理資訊結(jié)構(gòu)SNMP第二版SMI在RFC2578之中描述,它在SNMP第一版的SMI規(guī)格資料型態(tài)上進(jìn)行增加和強(qiáng)化,例如位元串(bit?strings)、網(wǎng)絡(luò)地址(network?addresses)和計(jì)數(shù)器(counters)。
SNMP協(xié)定在OSI模型的應(yīng)用層(第七層)運(yùn)作,在第一版中指定五種核心PDU:
GET?REQUEST
GET?NEXT?REQUEST
GET?RESPONSE
SET?REQUEST
TRAP
其他PDU在SNMP第二版加入,包含:
GETBULK?REQUEST
INFORM
SNMP第二版SMI資訊模塊SNMP第二版SMI也指定了資訊模塊來詳細(xì)說明一群相關(guān)連的定義。有三種SMI資訊模塊:MIB模塊、回應(yīng)狀態(tài)、能力狀態(tài)。
第三版
SNMP第三版SNMP第三版由RFC?3411-RFC?3418定義,主要增加SNMP在安全性和遠(yuǎn)端配置方面的強(qiáng)化。
SNMP第三版提供重要的安全性功能:
信息完整性:保證封包在傳送中沒有被篡改。
認(rèn)證:檢驗(yàn)信息來自正確的來源。
封包加密:避免被未授權(quán)的來源窺探。
SNMPv3定義了基于用戶的安全模型,使用共享密鑰進(jìn)行報(bào)文認(rèn)證。
SNMPv3中引入了下列三個(gè)安全級(jí)別。
noAuthNoPriv:不需要認(rèn)證,不提供隱私性(加密)。
authNoPriv:基于HMAC-MD5或HMAC-SHA的認(rèn)證,不提供加密。
authPriv:除了認(rèn)證之外,還將CBC-DES加密算法用作隱私性協(xié)議。
信息
MIB,Management?Information?Base:管理信息庫,由網(wǎng)絡(luò)管理協(xié)議訪問的管理對(duì)象數(shù)據(jù)庫,它包括SNMP可以通過網(wǎng)絡(luò)設(shè)備的SNMP管理代理進(jìn)行設(shè)置的變量。SMI,Structure?of?Management?Information:管理信息結(jié)構(gòu),用于定義通過網(wǎng)絡(luò)管理協(xié)議可訪問的對(duì)象的規(guī)則。SMI定義在MIB中使用的數(shù)據(jù)類型及網(wǎng)絡(luò)資源在MIB中的名稱或表示。
使用SNMP進(jìn)行網(wǎng)絡(luò)管理需要下面幾個(gè)重要部分:管理基站,管理代理,管理信息庫和網(wǎng)絡(luò)管理工具。
管理基站通常是一個(gè)獨(dú)立的設(shè)備,它用作網(wǎng)絡(luò)管理者進(jìn)行網(wǎng)絡(luò)管理的用戶接口?;旧媳仨氀b備有管理軟件,管理員可以使用的用戶接口和從MIB取得信息的數(shù)據(jù)庫,同時(shí)為了進(jìn)行網(wǎng)絡(luò)管理它應(yīng)該具備將管理命令發(fā)出基站的能力。
管理代理是一種網(wǎng)絡(luò)設(shè)備,如主機(jī),網(wǎng)橋,路由器和集線器等,這些設(shè)備都必須能夠接收管理基站發(fā)來的信息,它們的狀態(tài)也必須可以由管理基站監(jiān)視。管理代理響應(yīng)基站的請(qǐng)求進(jìn)行相應(yīng)的操作,也可以在沒有請(qǐng)求的情況下向基站發(fā)送信息。
MIB是對(duì)象的集合,它代表網(wǎng)絡(luò)中可以管理的資源和設(shè)備。每個(gè)對(duì)象基本上是一個(gè)數(shù)據(jù)變量,它代表被管理的對(duì)象的一方面的信息。
最后一個(gè)方面是管理協(xié)議,也就是SNMP,SNMP的基本功能是:取得,設(shè)置和接收代理發(fā)送的意外信息。取得指的是基站發(fā)送請(qǐng)求,代理根據(jù)這個(gè)請(qǐng)求回送相應(yīng)的數(shù)據(jù),設(shè)置是基站設(shè)置管理對(duì)象 - 也就是代理的值,接收代理發(fā)送的意外信息是指代理可以在基站未請(qǐng)求的狀態(tài)下向基站報(bào)告發(fā)生的意外情況。
SNMP為應(yīng)用層協(xié)議,是TCP/IP協(xié)議族的一部分。它通過用戶數(shù)據(jù)報(bào)協(xié)議 - UDP來操作。在分立的管理站中,管理者進(jìn)程對(duì)位于管理站中心的MIB的訪問進(jìn)行控制,并提供網(wǎng)絡(luò)管理員接口。管理者進(jìn)程通過SNMP完成網(wǎng)絡(luò)管理。SNMP在UDP、IP及有關(guān)的特殊網(wǎng)絡(luò)協(xié)議 - 如,Ethernet,FDDI,X.25之上實(shí)現(xiàn)。
風(fēng)險(xiǎn)
接入Internet的網(wǎng)絡(luò)面臨許多風(fēng)險(xiǎn),Web服務(wù)器可能面臨攻擊,郵件服務(wù)器的安全也令人擔(dān)憂。但除此之外,網(wǎng)絡(luò)上可能還存在一些隱性的漏洞。大多數(shù)網(wǎng)絡(luò)總有一些設(shè)備運(yùn)行著SNMP服務(wù),許多時(shí)候這些SNMP服務(wù)是不必要的,但卻沒有引起網(wǎng)絡(luò)管理員的重視。
根據(jù)SANS協(xié)會(huì)的報(bào)告,對(duì)于接入Internet的主機(jī),SNMP是威脅安全的十大首要因素之一;同時(shí),SNMP還是Internet主機(jī)上最常見的服務(wù)之一。特別地,SNMP服務(wù)通常在位于網(wǎng)絡(luò)邊緣的設(shè)備(防火墻保護(hù)圈之外的設(shè)備)上運(yùn)行,進(jìn)一步加劇了SNMP帶來的風(fēng)險(xiǎn)。這一切聽起來出人意料,但其實(shí)事情不應(yīng)該是這樣的。
背景知識(shí)
SNMP開發(fā)于九十年代早期,其目的是簡化大型網(wǎng)絡(luò)中設(shè)備的管理和數(shù)據(jù)的獲取。許多與網(wǎng)絡(luò)有關(guān)的軟件包,如HP的Open?View和Nortel?Networks的Optivity?Network?Management?System,還有Multi?Router?Traffic?Grapher(MRTG)之類的免費(fèi)軟件,都用SNMP服務(wù)來簡化網(wǎng)絡(luò)的管理和維護(hù)。
由于SNMP的效果實(shí)在太好了,所以網(wǎng)絡(luò)硬件廠商開始把SNMP加入到它們制造的每一臺(tái)設(shè)備。今天,各種網(wǎng)絡(luò)設(shè)備上都可以看到默認(rèn)啟用的SNMP服務(wù),從交換機(jī)到路由器,從防火墻到網(wǎng)絡(luò)打印機(jī),無一例外。
僅僅是分布廣泛還不足以造成威脅,問題是許多廠商安裝的SNMP都采用了默認(rèn)的通信字符串(例如密碼),這些通信字符串是程序獲取設(shè)備信息和修改配置必不可少的。采用默認(rèn)通信字符串的好處是網(wǎng)絡(luò)上的軟件可以直接訪問設(shè)備,無需經(jīng)過復(fù)雜的配置。
通信字符串主要包含兩類命令:GET命令,SET命令。GET命令從設(shè)備讀取數(shù)據(jù),這些數(shù)據(jù)通常是操作參數(shù),例如連接狀態(tài)、接口名稱等。SET命令允許設(shè)置設(shè)備的某些參數(shù),這類功能一般有限制,例如關(guān)閉某個(gè)網(wǎng)絡(luò)接口、修改路由器參數(shù)等功能。但很顯然,GET、SET命令都可能被用于拒絕服務(wù)攻擊(DoS)和惡意修改網(wǎng)絡(luò)參數(shù)。
最常見的默認(rèn)通信字符串是public(只讀)和private(讀/寫),除此之外還有許多廠商私有的默認(rèn)通信字符串。幾乎所有運(yùn)行SNMP的網(wǎng)絡(luò)設(shè)備上,都可以找到某種形式的默認(rèn)通信字符串。
SNMP2.0和SNMP1.0的安全機(jī)制比較脆弱,通信不加密,所有通信字符串和數(shù)據(jù)都以明文形式發(fā)送。攻擊者一旦捕獲了網(wǎng)絡(luò)通信,就可以利用各種嗅探工具直接獲取通信字符串,即使用戶改變了通信字符串的默認(rèn)值也無濟(jì)于事。
近幾年才出現(xiàn)的SNMP3.0解決了一部分問題。為保護(hù)通信字符串,SNMP3.0使用DES(DataEncryptionStandard)算法加密數(shù)據(jù)通信;另外,SNMP3.0還能夠用MD5和SHA(SecureHashAlgorithm)技術(shù)驗(yàn)證節(jié)點(diǎn)的標(biāo)識(shí)符,從而防止攻擊者冒充管理節(jié)點(diǎn)的身份操作網(wǎng)絡(luò)。
雖然SNMP3.0出現(xiàn)已經(jīng)有一段時(shí)間了,但自從發(fā)布以來還沒有廣泛應(yīng)用。如果設(shè)備是2012年以前的產(chǎn)品,很可能根本不支持SNMP3.0;甚至有些較新的設(shè)備也只有SNMP2.0或SNMP1.0。
即使設(shè)備已經(jīng)支持SNMP3.0,許多廠商使用的還是標(biāo)準(zhǔn)的通信字符串,這些字符串對(duì)黑客組織來說根本不是秘密。因此,雖然SNMP3.0比以前的版本提供了更多的安全特性,如果配置不當(dāng),其實(shí)際效果仍舊有限。
禁用SNMP
要避免SNMP服務(wù)帶來的安全風(fēng)險(xiǎn),最徹底的辦法是禁用SNMP。如果你沒有用SNMP來管理網(wǎng)絡(luò),那就沒有必要運(yùn)行它;如果你不清楚是否有必要運(yùn)行SNMP,很可能實(shí)際上不需要。即使你打算以后使用SNMP,只要現(xiàn)在沒有用,也應(yīng)該先禁用SNMP,直到確實(shí)需要使用SNMP時(shí)才啟用它。
下面列出了如何在常見的平臺(tái)上禁用SNMP服務(wù)。
WindowsXP和Windows2000
在XP和Win2K中,右擊“我的電腦”,選擇“管理”。展開“服務(wù)和應(yīng)用程序”、“服務(wù)”,從服務(wù)的清單中選擇SNMP服務(wù),停止該服務(wù)。然后打開服務(wù)的“屬性”對(duì)話框,將啟動(dòng)類型改為“禁用”(按照微軟的默認(rèn)設(shè)置,Win2K/XP默認(rèn)不安裝SNMP服務(wù),但許多軟件會(huì)自動(dòng)安裝該服務(wù))。
WindowsNT4.0
選擇“開始”→“設(shè)置”,打開服務(wù)設(shè)置程序,在服務(wù)清單中選擇SNMP服務(wù),停止該服務(wù),然后將它的啟動(dòng)類型改為禁用。
Windows9x
打開控制面板的網(wǎng)絡(luò)設(shè)置程序,在“配置”頁中,從已安裝的組件清單中選擇“MicrosoftSNMP代理”,點(diǎn)擊“刪除”。檢查HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//RunServices和HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Run注冊(cè)鍵,確認(rèn)不存在snmp.exe。
Cisco?Systems硬件
對(duì)于Cisco的網(wǎng)絡(luò)硬件,執(zhí)行“noSNMP-server”命令禁用SNMP服務(wù)。如果要檢查SNMP是否關(guān)閉,可執(zhí)行“showSNMP”命令。這些命令只適用于運(yùn)行CiscoIOS的平臺(tái);對(duì)于非IOS的Cisco設(shè)備,請(qǐng)參考隨機(jī)文檔。
HP硬件
對(duì)于所有使用Jet?Direct卡(絕大部分HP網(wǎng)絡(luò)打印機(jī)都使用它)的HP網(wǎng)絡(luò)設(shè)備,用telnet連接到Jet?Direct卡的IP地址,然后執(zhí)行下面的命令:
SNMP-config:0
quit
這些命令將關(guān)閉設(shè)備的SNMP服務(wù)。但必須注意的是,禁用SNMP服務(wù)會(huì)影響服務(wù)的發(fā)現(xiàn)操作以及利用SNMP獲取設(shè)備狀態(tài)的端口監(jiān)視機(jī)制。
RedHatLinux
對(duì)于RedHatLinux,可以用Linuxconf工具從自動(dòng)啟動(dòng)的服務(wù)清單中刪除SNMP,或者直接從/etc/services文件刪除啟動(dòng)SNMP的行。對(duì)于其他Linux系統(tǒng),操作方法應(yīng)該也相似。
保障SNMP的安全
如果某些設(shè)備確實(shí)有必要運(yùn)行SNMP,則必須保障這些設(shè)備的安全。首先要做的是確定哪些設(shè)備正在運(yùn)行SNMP服務(wù)。除非定期對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行端口掃描,全面掌握各臺(tái)機(jī)器、設(shè)備上運(yùn)行的服務(wù),否則的話,很有可能遺漏一、二個(gè)SNMP服務(wù)。特別需要注意的是,網(wǎng)絡(luò)交換機(jī)、打印機(jī)之類的設(shè)備同樣也會(huì)運(yùn)行SNMP服務(wù)。確定SNMP服務(wù)的運(yùn)行情況后,再采取下面的措施保障服務(wù)安全。
加載SNMP服務(wù)的補(bǔ)丁
安裝SNMP服務(wù)的補(bǔ)丁,將SNMP服務(wù)升級(jí)到2.0或更高的版本。聯(lián)系設(shè)備的制造商,了解有關(guān)安全漏洞和升級(jí)補(bǔ)丁的情況。
保護(hù)SNMP通信字符串
一個(gè)很重要的保護(hù)措施是修改所有默認(rèn)的通信字符串。根據(jù)設(shè)備文檔的說明,逐一檢查、修改各個(gè)標(biāo)準(zhǔn)的、非標(biāo)準(zhǔn)的通信字符串,不要遺漏任何一項(xiàng),必要時(shí)可以聯(lián)系制造商獲取詳細(xì)的說明。
過濾SNMP
另一個(gè)可以采用的保護(hù)措施是在網(wǎng)絡(luò)邊界上過濾SNMP通信和請(qǐng)求,即在防火墻或邊界路由器上,阻塞SNMP請(qǐng)求使用的端口。標(biāo)準(zhǔn)的SNMP服務(wù)使用161和162端口,廠商私有的實(shí)現(xiàn)一般使用199、391、705和1993端口。禁用這些端口通信后,外部網(wǎng)絡(luò)訪問內(nèi)部網(wǎng)絡(luò)的能力就受到了限制;另外,在內(nèi)部網(wǎng)絡(luò)的路由器上,應(yīng)該編寫一個(gè)ACL,只允許某個(gè)特定的可信任的SNMP管理系統(tǒng)操作SNMP。例如,下面的ACL只允許來自(或者走向)SNMP管理系統(tǒng)的SNMP通信,限制網(wǎng)絡(luò)上的所有其他SNMP通信:
access-list?100?permit?iphost?w.x.y?any
access-list?100?deny?udp?any?any?eq?snmp
access-list?100?deny?udp?any?any?eq?snmp?trap
access-list?100?permit?ip?any?any
這個(gè)ACL的第一行定義了可信任管理系統(tǒng)(w.x.y)。利用下面的命令可以將上述ACL應(yīng)用到所有網(wǎng)絡(luò)接口:
interface?serial0
ip?access-group?100?in
總之,SNMP的發(fā)明代表著網(wǎng)絡(luò)管理的一大進(jìn)步,現(xiàn)在它仍是高效管理大型網(wǎng)絡(luò)的有力工具。然而,SNMP的早期版本天生缺乏安全性,即使最新的版本同樣也存在問題。就象網(wǎng)絡(luò)上運(yùn)行的其他服務(wù)一樣,SNMP服務(wù)的安全性也是不可忽視的。不要盲目地肯定網(wǎng)絡(luò)上沒有運(yùn)行SNMP服務(wù),也許它就躲藏在某個(gè)設(shè)備上。那些必不可少的網(wǎng)絡(luò)服務(wù)已經(jīng)有太多讓人擔(dān)憂的安全問題,所以最好關(guān)閉SNMP之類并非必需的服務(wù)——至少盡量設(shè)法保障其安全。
數(shù)據(jù)
簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)是1990年之后TCP/IP網(wǎng)絡(luò)中應(yīng)用最為廣泛的網(wǎng)絡(luò)管理協(xié)議。1990年5月,RFC1157定義了SNMP(simplenetworkmanagementprotocol)的第一個(gè)版本SNMPv1。RFC1157和另一個(gè)關(guān)于管理信息的文件RFC1155一起,提供了一種監(jiān)控和管理計(jì)算機(jī)網(wǎng)絡(luò)的系統(tǒng)方法。因此,SNMP得到了廣泛應(yīng)用,并成為網(wǎng)絡(luò)管理的事實(shí)上的標(biāo)準(zhǔn)。
SNMP在90年代初得到了迅猛發(fā)展,同時(shí)也暴露出了明顯的不足,如,難以實(shí)現(xiàn)大量的數(shù)據(jù)傳輸,缺少身份驗(yàn)證(Authentication)和加密(Privacy)機(jī)制。因此,1993年發(fā)布了SNMPv2,具有以下特點(diǎn):
支持分布式網(wǎng)絡(luò)管理
擴(kuò)展了數(shù)據(jù)類型
可以實(shí)現(xiàn)大量數(shù)據(jù)的同時(shí)傳輸,提高了效率和性能
豐富了故障處理能力
增加了集合處理功能
加強(qiáng)了數(shù)據(jù)定義語言
信息庫
管理信息庫MIB指明了網(wǎng)絡(luò)元素所維持的變量(即能夠被管理進(jìn)程查詢和設(shè)置的信息)。MIB給出了一個(gè)網(wǎng)絡(luò)中所有可能的被管理對(duì)象的集合的數(shù)據(jù)結(jié)構(gòu)。SNMP的管理信息庫采用和域名系統(tǒng)DNS相似的樹型結(jié)構(gòu),它的根在最上面,根沒有名字。圖1畫的是管理信息庫的一部分,它又稱為對(duì)象命名樹(objectnamingtree)。
對(duì)象命名樹的頂級(jí)對(duì)象有三個(gè),即ISO、ITU-T和這兩個(gè)組織的聯(lián)合體。在ISO的下面有4個(gè)結(jié)點(diǎn),其中的一個(gè)(標(biāo)號(hào)3)是被標(biāo)識(shí)的組織。在其下面有一個(gè)dod的子樹(標(biāo)號(hào)是6),再下面就是Internet(標(biāo)號(hào)是1)。在只討論Internet中的對(duì)象時(shí),可只畫出Internet以下的子樹(圖中帶陰影的虛線方框),并在Internet結(jié)點(diǎn)旁邊標(biāo)注上{1.3.6.1}即可。
在Internet結(jié)點(diǎn)下面的第二個(gè)結(jié)點(diǎn)是mgmt(管理),標(biāo)號(hào)是2。再下面是管理信息庫,原先的結(jié)點(diǎn)名是mib。1991年定義了新的版本MIB-II,故結(jié)點(diǎn)名現(xiàn)改為mib-2,其標(biāo)識(shí)為{1.3.6.1.2.1},或{Internet - 1.2.1}。這種標(biāo)識(shí)為對(duì)象標(biāo)識(shí)符。
最初的結(jié)點(diǎn)mib將其所管理的信息分為8個(gè)類別,見圖2?,F(xiàn)在demib-2所包含的信息類別已超過40個(gè)。
應(yīng)當(dāng)指出,MIB的定義與具體的網(wǎng)絡(luò)管理協(xié)議無關(guān),這對(duì)于廠商和用戶都有利。廠商可以在產(chǎn)品(如路由器)中包含SNMP代理軟件,并保證在定義新的MIB項(xiàng)目后該軟件仍遵守標(biāo)準(zhǔn)。用戶可以使用同一網(wǎng)絡(luò)管理客戶軟件來管理具有不同版本的MIB的多個(gè)路由器。當(dāng)然,一個(gè)沒有新的MIB項(xiàng)目的路由器不能提供這些項(xiàng)目的信息。
這里要提一下MIB中的對(duì)象{1.3.6.1.4.1},即enterprises(企業(yè)),其所屬結(jié)點(diǎn)數(shù)已超過3000。例如IBM為{1.3.6.1.4.1.2},Cisco為{1.3.6.1.4.1.9},Novell為{1.3.6.1.4.1.23}等。
查詢
作用簡述
SNMP是"SimpleNetworkManagementProtocol"的縮寫,中文含義是"簡單網(wǎng)絡(luò)管理協(xié)議",這個(gè)協(xié)議的作用和詳細(xì)情況,各位可以參考有關(guān)資料.這里只介紹針對(duì)這個(gè)協(xié)議進(jìn)行狀態(tài)查詢的工具軟件Snmputilg.exe.也是支持工具目錄中所提供的.至于用途,不外乎是給系統(tǒng)管理員提供關(guān)于SNMP方面的信息,便于在排除故障的時(shí)候當(dāng)做參考.打開工具顯示界面之后,你就可以用來執(zhí)行諸如GET,GET-NEXT等等操作或進(jìn)行有關(guān)的設(shè)置.另外,這個(gè)工具也能將數(shù)據(jù)保存到剪貼板,或?qū)?shù)據(jù)保存為以逗號(hào)為結(jié)束符號(hào)的文本文件.在使用中應(yīng)當(dāng)注意:即使多數(shù)對(duì)象的都使用了默認(rèn)的ID標(biāo)識(shí)(數(shù)值),你也要謹(jǐn)慎地使用SNMPSET命令,因?yàn)椴徽_地使用這個(gè)命令之后,可能導(dǎo)致網(wǎng)絡(luò)名稱資源方面的問題或是在引起連通方面的問題。
使用方法
1.啟動(dòng)程序:在windows2000的環(huán)境中,點(diǎn)擊"開始->運(yùn)行",在編輯框中鍵入snmputilg然后回車或點(diǎn)擊"確定"。
2.和以前遇到的不同,Snmputilg.exe是一個(gè)圖形界面的工具,盡管執(zhí)行程序的時(shí)候可以使用命令行控制窗口打開它,但實(shí)際啟動(dòng)成功之后出現(xiàn)的界面仍然是圖形的
3.工具啟動(dòng)后,Node編輯框中顯示的是默認(rèn)的回送地址,地址值是127.0.0.1;CurrentOID指的是"當(dāng)前對(duì)象標(biāo)識(shí)符",標(biāo)識(shí)是windows系統(tǒng)中用來代表一個(gè)對(duì)象的數(shù)字,每個(gè)標(biāo)識(shí)都是整個(gè)系統(tǒng)中唯一的,也就是說,標(biāo)識(shí)不會(huì)、也不允許重復(fù).圖中顯示的值是.1.3.6.1.2.1.public是community一項(xiàng)的默認(rèn)選擇.上面所介紹的這些項(xiàng)目也可選定別的值。
4.如果選擇了別的系統(tǒng)的IP地址,則必須運(yùn)行SNMP服務(wù),而目標(biāo)系統(tǒng)必須配置好網(wǎng)絡(luò)訪問的地址,所謂配置,包括地址設(shè)置和權(quán)限打開.同時(shí),所需要的輔助工具也應(yīng)當(dāng)具備或運(yùn)行.缺省情況下,windows2000對(duì)所有另外系統(tǒng)的IP地址都是允許訪問的。
5.另一個(gè)問題是community,當(dāng)選定community的值時(shí),一要注意它所代表的對(duì)象必須存在,二要注意其"可讀"屬性只有獲準(zhǔn)許可之后才能進(jìn)行讀操作.三要注意這個(gè)項(xiàng)目在windows系列的不同版本中,對(duì)訪問地址的限制可能不一樣。
6.凡是SNMP可以執(zhí)行的功能(SNMPFunctiontoExecute),在圖中下拉組合框中都已經(jīng)列出,可供選擇.選擇好之后,請(qǐng)鼠標(biāo)點(diǎn)擊ExecuteCommand按鈕來執(zhí)行對(duì)應(yīng)的操作。
以下是這些操作的功能簡介:
GETthevalueofthecurrentobjectidentifier:得到當(dāng)前對(duì)象的ID標(biāo)識(shí)數(shù)值
GETtheNEXTvalueafterthecurrentobjectidentifier - thisisthedefault:得到緊接當(dāng)前對(duì)象之后的下一個(gè)對(duì)象的ID標(biāo)識(shí)數(shù)值(這是默認(rèn)的)
GETtheNEXT20valuesafterthecurrentobjectidentifier:得到當(dāng)前對(duì)象之后的20個(gè)對(duì)象的ID標(biāo)識(shí)數(shù)值
GETallvaluesfromobjectidentifierdown - WALKthetree:得到從當(dāng)前對(duì)象往下的所有對(duì)象的ID標(biāo)識(shí)數(shù)值
WALKthetreefromWINSvaluesdown:從WINS值往下漫游目錄
WALKthetreefromDHCPvaluesdown:從DHCP值往下漫游目錄
WALKthetreefromLANMANvaluesdown:從LANMAN值往下漫游目錄
WALKthetreefromMIB-IIdown - InternetMIB:從MIB-II往下漫游目錄
7.顯示結(jié)果含義解釋:
這些結(jié)果可以清除,也可以保存或更新,要實(shí)現(xiàn)上述功能,可以使用菜單中對(duì)應(yīng)的操作,具體地說,這些操作包括:
將一個(gè)或多個(gè)結(jié)果拷貝入剪貼板.
刪除現(xiàn)在列出的所有內(nèi)容.
清除已經(jīng)執(zhí)行過的所有的命令.
請(qǐng)求記錄當(dāng)前已經(jīng)選定的項(xiàng)目.
產(chǎn)生一個(gè)文本文件,用該文件保存所有的記錄的映像
編輯或設(shè)置某個(gè)對(duì)象的標(biāo)識(shí).在使用這個(gè)操作時(shí)要謹(jǐn)慎,因?yàn)橐坏┻M(jìn)行了不正確地設(shè)置,將可能導(dǎo)致網(wǎng)絡(luò)名稱資源方面的問題或是在引起連通方面的問題.
協(xié)議操作
SNMPv2標(biāo)準(zhǔn)的核心就是通信協(xié)議———它是一個(gè)請(qǐng)求/應(yīng)答式的協(xié)議。
這個(gè)協(xié)議提供了在manager與agent、manager與manager之間交換管理信息的直觀、基本的方法。
每條SNMPv2的報(bào)文都由一些域構(gòu)成:
如果發(fā)送方、接收方的兩個(gè)Party都采用了驗(yàn)證 - authentication機(jī)制,它就包含與驗(yàn)證有關(guān)的信息;否則它為空 - 取NULL。驗(yàn)證的過程如下:發(fā)送方和接收方的Party都分別有一個(gè)驗(yàn)證用的密鑰 - secretkey和一個(gè)驗(yàn)證用的算法。報(bào)文發(fā)送前,發(fā)送方先將密鑰值填入圖中digest域,作為報(bào)文的前綴。然后根據(jù)驗(yàn)證算法,對(duì)報(bào)文中digest域以后 - 包括digest域的報(bào)文數(shù)據(jù)進(jìn)行計(jì)算,計(jì)算出一個(gè)摘要值 - digest,再用摘要值取代密鑰,填入報(bào)文中的digest域。接收方收到報(bào)文后,先將報(bào)文中的摘要值取出來,暫存在一個(gè)位置,然后用發(fā)送方的密鑰放入報(bào)文中的digest。將這兩個(gè)摘要值進(jìn)行比較,如果一樣,就證明發(fā)送方確實(shí)是srcParty域中所指明的那個(gè)Party,報(bào)文是合法的;如果不一樣,接收方斷定發(fā)送方非法。驗(yàn)證機(jī)制可以防止非法用戶"冒充"某個(gè)合法Party來進(jìn)行破壞。
authInfo域中還包含兩個(gè)時(shí)間戳 - timestamp,用于發(fā)送方與接收方之間的同步,以防止報(bào)文被截獲和重發(fā)。
SNMPv2的另一大改進(jìn)是可以對(duì)通信報(bào)文進(jìn)行加密,以防止監(jiān)聽者竊取報(bào)文內(nèi)容。除了privDst域外,報(bào)文的其余部分可以被加密。發(fā)送方與接收方采用同樣的加密算法 - 如DES。
通信報(bào)文可以不加任何安全保護(hù),或只進(jìn)行驗(yàn)證,也可以二者都進(jìn)行。
OSI
在CLTS上的映射
在CLTS[7,8]上的SNMP映射是直通方式的。步驟原理和UDP采用的相同。注意CLTS和服務(wù)都是通過包含了全部地址信息的UDP信息傳輸包來提供的。因此,[1]中的“傳輸?shù)刂贰?,映射在CLTS上的SNMP僅僅是一個(gè)傳輸選項(xiàng)和網(wǎng)絡(luò)地址。
應(yīng)該注意到,正如[1,5]中描述的那樣,映射在面向非連接的傳輸服務(wù)上的SNMP和SNMP的結(jié)構(gòu)原理是完全一致的。然而,CLTS本身既可以采用一個(gè)面向無連接方式,又可以采用面向連接的網(wǎng)絡(luò)服務(wù)方式實(shí)現(xiàn)。在這種映射中描述的映射支持任意實(shí)現(xiàn)方式。 - 當(dāng)提供所有網(wǎng)絡(luò)服務(wù)時(shí),應(yīng)該以CLNS為實(shí)現(xiàn)基礎(chǔ)。
周知地址
不象Internet協(xié)議組,OSI沒有使用周知口。當(dāng)然,多路分解技術(shù)基于“選擇器”發(fā)生,“選擇器”是具有局部重要意義的不透明八位字串。為了照顧基于CLTS的可互操作的SNMP實(shí)現(xiàn),定義四個(gè)選擇器是必要的。當(dāng)CLTS采用無連接模式的網(wǎng)絡(luò)服務(wù)來提供反向SNMP傳輸時(shí),應(yīng)該采用由6個(gè)ASCII字符組成的“snmp-l”傳輸選擇器;按照約定,會(huì)發(fā)送一個(gè)SNMP中斷給一個(gè)正在監(jiān)聽由7個(gè)ASCII字符組成的“snmp-l”傳輸選擇器的SNMP管理器。當(dāng)CLTS采用面向連接的網(wǎng)絡(luò)服務(wù)來提供反向SNMP傳輸時(shí),應(yīng)該采用由6個(gè)ASCII字符組成“snmp-o”傳輸選擇器;按照約定,會(huì)發(fā)送一個(gè)SNMP中斷給一個(gè)正在監(jiān)聽由7個(gè)ASCII字符組成的“snmp-o”傳輸選擇器的SNMP管理器。
中斷
當(dāng)SNMP中斷在CLTS上發(fā)送時(shí),Trap-PDU中的代理地址字段包含了IP地址“0.0.0.0”。SNMP管理器可以基于由傳輸服務(wù)提供的信息 - 也就是源自T-UNIT-DATA.INDICATION基本數(shù)據(jù)單元的探知陷阱的來源。
最大消息尺寸
一個(gè)在OSI上運(yùn)行SNMP的實(shí)體應(yīng)該準(zhǔn)備好接收大小至少484個(gè)字節(jié)的消息。鼓勵(lì)應(yīng)用隨時(shí)可能發(fā)生的更大的數(shù)值。
作用
SNMP是1990年之后最常用的網(wǎng)絡(luò)管理協(xié)議。SNMP被設(shè)計(jì)成與協(xié)議無關(guān),所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的傳輸協(xié)議上被使用。SNMP是一系列協(xié)議組和規(guī)范(見下表),它們提供了一種從網(wǎng)絡(luò)上的設(shè)備中收集網(wǎng)絡(luò)管理信息的方法。SNMP也為設(shè)備向網(wǎng)絡(luò)管理工作站報(bào)告問題和錯(cuò)誤提供了一種方法。
現(xiàn)在,幾乎所有的網(wǎng)絡(luò)設(shè)備生產(chǎn)廠家都實(shí)現(xiàn)了對(duì)SNMP的支持。領(lǐng)導(dǎo)潮流的SNMP是一個(gè)從網(wǎng)絡(luò)上的設(shè)備收集管理信息的公用通信協(xié)議。設(shè)備的管理者收集這些信息并記錄在管理信息庫(MIB)中。這些信息報(bào)告設(shè)備的特性、數(shù)據(jù)吞吐量、通信超載和錯(cuò)誤等。MIB有公共的格式,所以來自多個(gè)廠商的SNMP管理工具可以收集MIB信息,在管理控制臺(tái)上呈現(xiàn)給系統(tǒng)管理員。
通過將SNMP嵌入數(shù)據(jù)通信設(shè)備,如路由器、交換機(jī)或集線器中,就可以從一個(gè)中心站管理這些設(shè)備,并以圖形方式查看信息?,F(xiàn)在可獲取的很多管理應(yīng)用程序通??稍诖蠖鄶?shù)當(dāng)前使用的操作系統(tǒng)下運(yùn)行,如Windows95、Windows98、WindowsNT和不同版本UNIX的等。
一個(gè)被管理的設(shè)備有一個(gè)管理代理,它負(fù)責(zé)向管理站請(qǐng)求信息和動(dòng)作,代理還可以借助于陷阱為管理站主動(dòng)提供信息,因此,一些關(guān)鍵的網(wǎng)絡(luò)設(shè)備(如集線器、路由器、交換機(jī)等)提供這一管理代理,又稱SNMP代理,以便通過SNMP管理站進(jìn)行管理。
協(xié)議棧
網(wǎng)絡(luò)設(shè)備agent常用庫:net-snmp——C語言編寫;snmp++——C、C++編寫
網(wǎng)管管理端snmp?manager常用庫:ObjectSNMP——Java編寫,所有平臺(tái);WinSNMP——WFC庫,Windows平臺(tái)
