SNMP
SNMP(Simple Network Management Protocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)的前身是簡(jiǎn)單網(wǎng)關(guān)監(jiān)控協(xié)議(SGMP),用來(lái)對(duì)通信線(xiàn)路進(jìn)行管理。隨后,人們對(duì)SGMP進(jìn)行了很大的修改,特別是加入了符合Internet定義的SMI和MIB:體系結(jié)構(gòu),改進(jìn)后的協(xié)議就是著名的SNMP。SNMP的目標(biāo)是管理互聯(lián)網(wǎng)Internet上眾多廠(chǎng)家生產(chǎn)的軟硬件平臺(tái),因此SNMP受Internet標(biāo)準(zhǔn)網(wǎng)絡(luò)管理框架的影響也很大?,F(xiàn)在SNMP已經(jīng)出到第三個(gè)版本的協(xié)議,其功能較以前已經(jīng)大大地加強(qiáng)和改進(jìn)了。
目錄
基本簡(jiǎn)介
【SNMP風(fēng)險(xiǎn)】
【SNMP數(shù)據(jù)】
【SNMP發(fā)展】
【管理信息庫(kù)】
【SNMP的運(yùn)行過(guò)程】
【SNMP的常用程序開(kāi)發(fā)】
基本簡(jiǎn)介
SNMP的體系結(jié)構(gòu)是圍繞著以下四個(gè)概念和目標(biāo)進(jìn)行設(shè)計(jì)的:保持管理代理(agent)的軟件成本盡可能低;最大限度地保持遠(yuǎn)程管理的功能,以便充分SNMP工作原理利用Internet的網(wǎng)絡(luò)資源;體系結(jié)構(gòu)必須有擴(kuò)充的余地;保持SNMP的獨(dú)立性,不依賴(lài)于具體的計(jì)算機(jī)、網(wǎng)關(guān)和網(wǎng)絡(luò)傳輸協(xié)議。在最近的改進(jìn)中,又加入了保證SNMP體系本身安全性的目標(biāo)。
【SNMP風(fēng)險(xiǎn)】
接入Internet的網(wǎng)絡(luò)面臨許多風(fēng)險(xiǎn),Web服務(wù)器可能面臨攻擊,郵件服務(wù)器的安全也令人擔(dān)憂(yōu)。但除 此之外,網(wǎng)絡(luò)上可能還存在一些隱性的漏洞。大多數(shù)網(wǎng)絡(luò)總有一些設(shè)備運(yùn)行著SNMP服務(wù),許多時(shí)候這些SNMP服務(wù)是不必要的,但卻沒(méi)有引起網(wǎng)絡(luò)管理員的重視。
根據(jù)SANS協(xié)會(huì)的報(bào)告,對(duì)于接入Internet的主機(jī),SNMP是威脅安全的十大首要因素之一;同時(shí),SNMP還是Internet主機(jī)上最常見(jiàn)的服務(wù)之一。特別地,SNMP服務(wù)通常在位于網(wǎng)絡(luò)邊緣的設(shè)備(防火墻保護(hù)圈之外的設(shè)備)上運(yùn)行,進(jìn)一步加劇了SNMP帶來(lái)的風(fēng)險(xiǎn)。這一切聽(tīng)起來(lái)出人意料,但其實(shí)事情不應(yīng)該是這樣的。
〖一、背景知識(shí)〗
SNMP開(kāi)發(fā)于九十年代早期,其目的是簡(jiǎn)化大型網(wǎng)絡(luò)中設(shè)備的管理和數(shù)據(jù)的獲取。許多與網(wǎng)絡(luò)有關(guān)的軟件包,如HP的OpenView和Nortel Networks的Optivity Network Management System,還有Multi Router Traffic Grapher(MRTG)之類(lèi)的免費(fèi)軟件,都用SNMP服務(wù)來(lái)簡(jiǎn)化網(wǎng)絡(luò)的管理和維護(hù)。
由于SNMP的效果實(shí)在太好了,所以網(wǎng)絡(luò)硬件廠(chǎng)商開(kāi)始把SNMP加入到它們制造的每一臺(tái)設(shè)備。今天,各種網(wǎng)絡(luò)設(shè)備上都可以看到默認(rèn)啟用的SNMP服務(wù),從交換機(jī)到路由器,從防火墻到網(wǎng)絡(luò)打印機(jī),無(wú)一例外。僅僅是分布廣泛還不足以造成威脅,問(wèn)題是許多廠(chǎng)商安裝的SNMP都采用了默認(rèn)的通信字符串(例如密碼),這些通信字符串是程序獲取設(shè)備信息和修改配置必不可少的。采用默認(rèn)通信字符串的好處是網(wǎng)絡(luò)上的軟件可以直接訪(fǎng)問(wèn)設(shè)備,無(wú)需經(jīng)過(guò)復(fù)雜的配置。
通信字符串主要包含兩類(lèi)命令:GET命令,SET命令。GET命令從設(shè)備讀取數(shù)據(jù),這些數(shù)據(jù)通常是操作參數(shù),例如連接狀態(tài)、接口名稱(chēng)等。SET命令允許設(shè)置設(shè)備的某些參數(shù),這類(lèi)功能一般有限制,例如關(guān)閉某個(gè)網(wǎng)絡(luò)接口、修改路由器參數(shù)等功能。但很顯然,GET、SET命令都可能被用于拒絕服務(wù)攻擊(DoS)和惡意修改網(wǎng)絡(luò)參數(shù)。
最常見(jiàn)的默認(rèn)通信字符串是public(只讀)和private(讀/寫(xiě)),除此之外還有許多廠(chǎng)商私有的默認(rèn)通信字符串。幾乎所有運(yùn)行SNMP的網(wǎng)絡(luò)設(shè)備上,都可以找到某種形式的默認(rèn)通信字符串。
SNMP 2.0和SNMP 1.0的安全機(jī)制比較脆弱,通信不加密,所有通信字符串和數(shù)據(jù)都以明文形式發(fā)送。攻擊者一旦捕獲了網(wǎng)絡(luò)通信,就可以利用各種嗅探工具直接獲取通信字符串,即使用戶(hù)改變了通信字符串的默認(rèn)值也無(wú)濟(jì)于事。
近幾年才出現(xiàn)的SNMP 3.0解決了一部分問(wèn)題。為保護(hù)通信字符串,SNMP 3.0使用DES(Data Encryption Standard)算法加密數(shù)據(jù)通信;另外,SNMP 3.0還能夠用MD5和SHA(Secure Hash Algorithm)技術(shù)驗(yàn)證節(jié)點(diǎn)的標(biāo)識(shí)符,從而防止攻擊者冒充管理節(jié)點(diǎn)的身份操作網(wǎng)絡(luò)。
雖然SNMP 3.0出現(xiàn)已經(jīng)有一段時(shí)間了,但目前還沒(méi)有廣泛應(yīng)用。如果設(shè)備是2、3年前的產(chǎn)品,很可能根本不支持SNMP 3.0;甚至有些較新的設(shè)備也只有SNMP 2.0或SNMP 1.0。即使設(shè)備已經(jīng)支持SNMP 3.0,許多廠(chǎng)商使用的還是標(biāo)準(zhǔn)的通信字符串,這些字符串對(duì)黑客組織來(lái)說(shuō)根本不是秘密。因此,雖然SNMP 3.0比以前的版本提供了更多的安全特性,如果配置不當(dāng),其實(shí)際效果仍舊有限。
〖二、禁用SNMP〗
要避免SNMP服務(wù)帶來(lái)的安全風(fēng)險(xiǎn),最徹底的辦法是禁用SNMP。如果你沒(méi)有用SNMP來(lái)管理網(wǎng)絡(luò),那就沒(méi)有必要運(yùn)行它;如果你不清楚是否有必要運(yùn)行SNMP,很可能實(shí)際上不需要。即使你打算以后使用SNMP,只要現(xiàn)在沒(méi)有用,也應(yīng)該先禁用SNMP,直到確實(shí)需要使用SNMP時(shí)才啟用它。
下面列出了如何在常見(jiàn)的平臺(tái)上禁用SNMP服務(wù)。
■ Windows XP和Windows 2000 在XP和Win 2K中,右擊“我的電腦”,選擇“管理”。展開(kāi)“服務(wù)和應(yīng)用程序”、“服務(wù)”,從服務(wù)的清單中選擇SNMP服務(wù),停止該服務(wù)。然后打開(kāi)服務(wù)的“屬性”對(duì)話(huà)框,將啟動(dòng)類(lèi)型該為“禁用”(按照微軟的默認(rèn)設(shè)置,Win 2K/XP默認(rèn)不安裝SNMP服務(wù),但許多軟件會(huì)自動(dòng)安裝該服務(wù))。
■ Windows NT 4.0 選擇“開(kāi)始”→“設(shè)置”,打開(kāi)服務(wù)設(shè)置程序,在服務(wù)清單中選擇SNMP服務(wù),停止該服務(wù),然后將它的啟動(dòng)類(lèi)型該為禁用。
■ Windows 9x 打開(kāi)控制面板的網(wǎng)絡(luò)設(shè)置程序,在“配置”頁(yè)中,從已安裝的組件清單中選擇“Microsoft SNMP代理”,點(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í)行“no SNMP-server”命令禁用SNMP服務(wù)。如果要檢查SNMP是否關(guān)閉,可執(zhí)行“show SNMP”命令。這些命令只適用于運(yùn)行Cisco IOS的平臺(tái);對(duì)于非IOS的Cisco設(shè)備,請(qǐng)參考隨機(jī)文檔。
■ HP硬件 對(duì)于所有使用JetDirect卡(絕大部分HP網(wǎng)絡(luò)打印機(jī)都使用它)的HP網(wǎng)絡(luò)設(shè)備,用telnet連接到JetDirect卡的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ī)制。
■ Red Hat Linux 對(duì)于Red Hat Linux,可以用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ù),否則的話(huà),很有可能遺漏一、二個(gè)SNMP服務(wù)。特別需要注意的是,網(wǎng)絡(luò)交換機(jī)、打印機(jī)之類(lèi)的設(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è)備文檔的說(shuō)明,逐一檢查、修改各個(gè)標(biāo)準(zhǔn)的、非標(biāo)準(zhǔn)的通信字符串,不要遺漏任何一項(xiàng),必要時(shí)可以聯(lián)系制造商獲取詳細(xì)的說(shuō)明。
■ 過(guò)濾SNMP
另一個(gè)可以采用的保護(hù)措施是在網(wǎng)絡(luò)邊界上過(guò)濾SNMP通信和請(qǐng)求,即在防火墻或邊界路由器上,阻塞SNMP請(qǐng)求使用的端口。標(biāo)準(zhǔn)的SNMP服務(wù)使用161和162端口,廠(chǎng)商私有的實(shí)現(xiàn)一般使用199、391、705和1993端口。禁用這些端口通信后,外部網(wǎng)絡(luò)訪(fǎng)問(wèn)內(nèi)部網(wǎng)絡(luò)的能力就受到了限制;另外,在內(nèi)部網(wǎng)絡(luò)的路由器上,應(yīng)該編寫(xiě)一個(gè)ACL,只允許某個(gè)特定的可信任的SNMP管理系統(tǒng)操作SNMP。例如,下面的ACL只允許來(lái)自(或者走向)SNMP管理系統(tǒng)的SNMP通信,限制網(wǎng)絡(luò)上的所有其他SNMP通信:access-list 100 permit ip host w.x.y any access-list 100 deny udp any any eq snmp access-list 100 deny udp any any eq snmptrap access-list 100 permit ip any any 這個(gè)ACL的第一行定義了可信任管理系統(tǒng)(w.x.y)。利用下面的命令可以將上述ACL應(yīng)用到所有網(wǎng)絡(luò)接口:interface serial 0 ip access-group 100 in
總之,SNMP的發(fā)明代表著網(wǎng)絡(luò)管理的一大進(jìn)步,現(xiàn)在它仍是高效管理大型網(wǎng)絡(luò)的有力工具。然而,SNMP的早期版本天生缺乏安全性,即使最新的版本同樣也存在問(wèn)題。就象網(wǎng)絡(luò)上運(yùn)行的其他服務(wù)一樣,SNMP服務(wù)的安全性也是不可忽視的。不要盲目地肯定網(wǎng)絡(luò)上沒(méi)有運(yùn)行SNMP服務(wù),也許它就躲藏在某個(gè)設(shè)備上。那些必不可少的網(wǎng)絡(luò)服務(wù)已經(jīng)有太多讓人擔(dān)憂(yōu)的安全問(wèn)題,所以最好關(guān)閉SNMP之類(lèi)并非必需的服務(wù)——至少盡量設(shè)法保障其安全。
【SNMP數(shù)據(jù)】
SNMP 1.0規(guī)定了5種協(xié)議數(shù)據(jù)單元PDU(也就是SNMP報(bào)文),用來(lái)在管理進(jìn)程和代理之間的交換。
get-request操作:從代理進(jìn)程處提取一個(gè)或多個(gè)參數(shù)值get-next-request操作:從代理進(jìn)程處提取緊跟當(dāng)前參數(shù)值的下一個(gè)參數(shù)值set-request操作:設(shè)置代理進(jìn)程的一個(gè)或多個(gè)參數(shù)值get-response操作:返回的一個(gè)或多個(gè)參數(shù)值。這個(gè)操作是由代理進(jìn)程發(fā)出的,它是前面三種操作的響應(yīng)操作。trap操作:代理進(jìn)程主動(dòng)發(fā)出的報(bào)文,通知管理進(jìn)程有某些事情發(fā)生。
圖1 SNMP的5種報(bào)文操作
前面的3種操作是由管理進(jìn)程向代理進(jìn)程發(fā)出的,后面的2個(gè)操作是代理進(jìn)程發(fā)給管理進(jìn)程的,為了簡(jiǎn)化起見(jiàn),前面3個(gè)操作今后叫做get、get-next和set操作。圖1描述了SNMP的這5種圖2 SNMP報(bào)文格式報(bào)文操作。請(qǐng)注意,在代理進(jìn)程端是用熟知端口161來(lái)接收get或set報(bào)文,而在管理進(jìn)程端是用熟知端口162來(lái)接收trap報(bào)文。
圖2是封裝成UDP數(shù)據(jù)報(bào)的5種操作的SNMP報(bào)文格式。
可見(jiàn)一個(gè)SNMP報(bào)文共有三個(gè)部分組成,即公共SNMP首部、get/set首部trap首部、變量綁定。
〖公共SNMP首部〗
■ 版本
寫(xiě)入版本字段的是版本號(hào)減1,對(duì)于SNMP(即SNMPV1)則應(yīng)寫(xiě)入0。
■共同體(community)
共同體就是一個(gè)字符串,作為管理進(jìn)程和代理進(jìn)程之間的明文口令,常用的是6個(gè)字符“public”。
表1 PDU類(lèi)型
〖PDU類(lèi)型〗 根據(jù)PDU的類(lèi)型,填入0~4中的一個(gè)數(shù)字,其對(duì)應(yīng)關(guān)系如表1所示意圖。
〖get/set首部〗
■請(qǐng)求標(biāo)識(shí)符(request ID)
這是由管理進(jìn)程設(shè)置的一個(gè)整數(shù)值。代理進(jìn)程在發(fā)送get-response報(bào)文時(shí)也要返回此請(qǐng)求標(biāo)識(shí)符。管理進(jìn)程可同時(shí)向許多代理發(fā)出get報(bào)文,這些報(bào)文都使用UDP傳送,先發(fā)送的有可能后到達(dá)。設(shè)置了請(qǐng)求標(biāo)識(shí)符可使管理進(jìn)程能夠識(shí)別返回的響應(yīng)報(bào)文對(duì)于哪一個(gè)請(qǐng)求報(bào)文。
表2 差錯(cuò)狀態(tài)描述
■差錯(cuò)狀態(tài)(error status)
由代理進(jìn)程回答時(shí)填入0~5中的一個(gè)數(shù)字,見(jiàn)表2的描述。
■ 差錯(cuò)索引(error index)
當(dāng)出現(xiàn)noSuchName、badValue或readOnly的差錯(cuò)時(shí),由代理進(jìn)程在回答時(shí)設(shè)置的一個(gè)整數(shù),它指明有差錯(cuò)的變量在變量列表中的偏移。
〖trap首部〗
■企業(yè)(enterprise)
填入trap報(bào)文的網(wǎng)絡(luò)設(shè)備的對(duì)象標(biāo)識(shí)符。此對(duì)象標(biāo)識(shí)符肯定是在圖3的對(duì)象命名樹(shù)上的enterprise結(jié)點(diǎn){1.3.6.1.4.1}下面的一棵子表3 trap類(lèi)型樹(shù)上。
表3 trap類(lèi)型
〖trap類(lèi)型〗
此字段正式的名稱(chēng)是generic-trap,共分為表3中的7種。
類(lèi)型2、3、5時(shí),在報(bào)文后面變量部分的第一個(gè)變量應(yīng)標(biāo)識(shí)響應(yīng)的接口。
■特定代碼(specific-code) 指明代理自定義的時(shí)間(若trap類(lèi)型為6),否則為0。
■ 時(shí)間戳(timestamp) 指明自代理進(jìn)程初始化到trap報(bào)告的事件發(fā)生所經(jīng)歷的時(shí)間,單位為ms。例如時(shí)間戳為1908表明在代理初始化后1908ms發(fā)生了該事件。
■變量綁定(variable-bindings) 指明一個(gè)或多個(gè)變量的名和對(duì)應(yīng)的值。在get或get-next報(bào)文中,變量的值應(yīng)忽略。
【SNMP發(fā)展】
簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)是目前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ù)類(lèi)型、可以實(shí)現(xiàn)大量數(shù)據(jù)的同時(shí)傳輸,提高了效率和性能、豐富了故障處理能力、增加了集合處理功能、加強(qiáng)了數(shù)據(jù)定義語(yǔ)言。
【管理信息庫(kù)】
圖3 管理信息庫(kù)的對(duì)象命名舉例
管理信息庫(kù)MIB指明了網(wǎng)絡(luò)元素所維持的變量(即能夠被管理進(jìn)程查詢(xún)和設(shè)置的信息)。MIB給出了一個(gè)網(wǎng)絡(luò)中所有可能的被管理對(duì)象的集合的數(shù)據(jù)結(jié)構(gòu)。SNMP的管理信息庫(kù)采用和域名系統(tǒng)DNS相似的樹(shù)型結(jié)構(gòu),它的根在最上面,根沒(méi)有名字。圖3畫(huà)的是管理信息庫(kù)的一部分,它又稱(chēng)為對(duì)象命名(objectnamingtree)。
對(duì)象命名樹(shù)的頂級(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è)美國(guó)國(guó)防部(Department of Defense)的子樹(shù)(標(biāo)號(hào)是6),再下面就是Internet(標(biāo)號(hào)是1)。在只討論Internet中的對(duì)象時(shí),可只畫(huà)出Internet以下的子樹(shù)(圖中帶陰影的虛線(xiàn)方框),并在Internet結(jié)點(diǎn)旁邊標(biāo)注上{1.3.6.1}即可。表4 最初的結(jié)點(diǎn)mib管理的信息類(lèi)別 在Internet結(jié)點(diǎn)下面的第二個(gè)結(jié)點(diǎn)是mgmt(管理),標(biāo)號(hào)是2。再下面是管理信息庫(kù),原先的結(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í)符。
表4 最初的結(jié)點(diǎn)mib管理的信息類(lèi)別
最初的結(jié)點(diǎn)mib將其所管理的信息分為8個(gè)類(lèi)別,見(jiàn)表4。現(xiàn)在de mib-2所包含的信息類(lèi)別已超過(guò)40個(gè)。應(yīng)當(dāng)指出,MIB的定義與具體的網(wǎng)絡(luò)管理協(xié)議無(wú)關(guān),這對(duì)于廠(chǎng)商和用戶(hù)都有利。廠(chǎng)商可以在產(chǎn)品(如路由器)中包含SNMP代理軟件,并保證在定義新的MIB項(xiàng)目后該軟件仍遵守標(biāo)準(zhǔn)。用戶(hù)可以使用同一網(wǎng)絡(luò)管理客戶(hù)軟件來(lái)管理具有不同版本的MIB的多個(gè)路由器。當(dāng)然,一個(gè)沒(méi)有新的MIB項(xiàng)目的路由器不能提供這些項(xiàng)目的信息。這里要提一下MIB中的對(duì)象{1.3.6.1.4.1},即enterprises(企業(yè)),其所屬結(jié)點(diǎn)數(shù)已超過(guò)3000。例如IBM為11.3.6.1.4.1.2},Cisco為{1.3.6.1.4.1.9},Novell為{1.3.6.1.4.1.23}等。
【SNMP的運(yùn)行過(guò)程】
駐留在被管設(shè)備上的AGENT從UDP端口161接受來(lái)自網(wǎng)管站的串行化報(bào)文,經(jīng)解碼、團(tuán)體名驗(yàn)證、分析得到管理變量在MIB樹(shù)中對(duì)應(yīng)的節(jié)點(diǎn),從相應(yīng)的模塊中得到管理變量的值,再形成響應(yīng)報(bào)文,編碼發(fā)送回網(wǎng)管站。網(wǎng)管站得到響應(yīng)報(bào)文后,再經(jīng)同樣的處理,最終顯示結(jié)果。
下面根據(jù)RFC1157詳細(xì)介紹Agent接受到報(bào)文后采取的動(dòng)作:首先解碼生成用內(nèi)部數(shù)據(jù)結(jié)構(gòu)表示的報(bào)文,解碼依據(jù)ASN.1的基本編碼規(guī)則,如果在此過(guò)程中出現(xiàn)錯(cuò)誤導(dǎo)致解碼失敗則丟棄該報(bào)文,不做進(jìn)一步處理。第二步:將報(bào)文中的版本號(hào)取出,如果與本Agent支持的SNMP版本不一致,則丟棄該報(bào)文,不做進(jìn)一步處理。當(dāng)前北研的數(shù)據(jù)通信產(chǎn)品只支持SNMP版本1。第三步:將報(bào)文中的團(tuán)體名取出,此團(tuán)體名由發(fā)出請(qǐng)求的網(wǎng)管站填寫(xiě)。如與本設(shè)備認(rèn)可的團(tuán)體名不符,則丟棄該報(bào)文,不做進(jìn)一步處理,同時(shí)產(chǎn)生一個(gè)陷阱報(bào)文。SNMPv1只提供了較弱的安全措施,在版本3中這一功能將大大加強(qiáng)。第四步:從通過(guò)驗(yàn)證的ASN.1對(duì)象中提出協(xié)議數(shù)據(jù)單元PDU,如果失敗,丟棄報(bào)文,不做進(jìn)一步處理。否則處理PDU,結(jié)果將產(chǎn)生一個(gè)報(bào)文,該報(bào)文的發(fā)送目的地址應(yīng)同收到報(bào)文的源地址一致。
【SNMP的常用程序開(kāi)發(fā)】
Agent:NetSNMP 、Agent++ 、 MG-soft、solarwind 管理端: winsnmp—windows自帶的SNMP庫(kù);
snmp4j— JAVA版本的SNMP協(xié)議棧;
ObjectSNMP—面向?qū)ο蟮膉ava snmp開(kāi)發(fā)包;O/M Mapping技術(shù)。
Linux/Unix下的Snmp工具包:net-snmp
內(nèi)容來(lái)自百科網(wǎng)