SNMP是 「Simple Network Management Protocol」 的縮寫,中文意思是簡單網絡管理協議,它是由互聯網工做小組在RFC1157中定義的應用層協議,用於在網絡實體或節點之間交換管理或監控信息。
做爲運維人員,咱們很大一部分的工做就是爲了保證咱們的網絡可以正常、穩定的運行。所以監控,控制,管理各類網絡設備成了咱們平常的工做。在網絡興起的早期,維護方式就是運維人員蹲在近端對設備進行各類操做,當網絡設備愈來愈多,網絡規模愈來愈大時,管理工做會變得愈來愈單調乏味,這樣的近端維護方式也近乎不可能。所以,遠程管理網絡的需求日益迫切,SNMP應運而生。使用SNMP,一個運行網管軟件的工做站就能對成千上萬的網絡設備進行監控和信息採集,這些信息能夠用來構建網絡或者定位網絡中的問題。
如其名字所述,這個協議簡單易懂,部署的開銷成本也小。正由於它足夠簡單,因此被普遍的接受,事實上它已經成爲了主要的網絡管理標準。在一個網絡設備上實現SNMP的管理比絕大部分其餘管理方式都簡單直接。
1.msgVersion 指定SNMP的版本
2.msgID 指定SNMP消息惟一辨識符
3.msgMaxSize 指定交互SNMP實體所能接收的最大消息大小
4.msgFlags 指定消息的安全級別
5.msgSecurityModel 指定消息所使用的安全模式.SNMPv3爲USM
6.msgAuthoritativeEngineID 此消息交互的SNMP實體的 SNMP EngineID
7.msgAuthoritativeEngineBoots 此消息交互的SNMP實體啓動的次數
8.msgAuthoritativeEngineTime 此消息交互的SNMP實體自上次啓動後所過去的時間
9.msgUserName 此消息交互的SNMP實體所使用的用戶名
10.msgAuthoritaticationParameters 認證協議的參數
11.msgPrivacyParameters 加密協議的參數
12.contextEngineID 做爲實現了某個具體管理功能上下文的惟一辨識符
13.contextName 用來標記一個上下文的名稱
14.pdu SNMP實體間通訊數據單元
管理模式:SNMP 對於管理組件和agent的實現通常可劃分爲以下三個層面:
●協議,定義SNMP的基本操做和管理組建與agent間消息交換的格式
●管理信息結構(Structure of Management Information (SMI)),定義SNMP該以何種形式訪問管理對象的規則集合
●管理信息庫(Management Information Base (MIB)),定義管理對象屬性的集合
MIB和SMI使用一種叫作
ASN.1(Abstract Syntax Notation One)的表示法來描述,這是一種以ASCII文本格式清晰描述數據的表示法。MIB的數據經過SNMP消息進行網絡傳輸,傳輸前會經過簡單編碼規則( Basic Encoding Rules (BER))進行編碼。
5、SNMP的基本操做
SNMP是一個請求-響應式的協議,它的基本操做能夠分類以下:
●檢索數據
●修改變量
●接收主動上報消息
檢索數據:管理組件向agent發送請求以獲取數據,有以下操做類型:
●GET:GET請求用以從agent上獲取指定OID對應的一條或多條值。
●GETNEXT:與GET請求相似,最明顯的區別是GETNEXT獲取指定OID在系統樹種所處位置的下一個OID。
●GETBULK:用於從agent上獲取大表中的大量數據。
修改變量:管理組件有時會但願可以修改設備上的一些變量:
●SET:管理組件使用這個命令來修改設備的一些配置值。
接收主動上報消息:
●TRAP: 當agent遇到數據傳輸問題,或設備出現故障但願上層管理組件知曉時,使用TRAP操做上報此信息。
6、SNMP的版本
SNMP發展到目前,一共經歷了三個主要版本,SNMPv1,SNMPv2c,SNMPv3。對於當今互聯網迅猛發展的今天,信息安全已是一個關乎產品命運的重要問題,曾經的SNMP因爲缺少足夠的安全性而被人詬病甚至棄用,所以SNMPv3版本作了大量關於安全性的加強,這裏咱們也主要關注於SNMPv3版本的特性。
SNMPv3的主要目的以下:
1.校驗收到的SNMP消息在網絡傳輸過程當中是否被篡改。
2.校驗收到的SNMP消息其身份證實是否已經被建立。
3.檢測收到的SNMP消息是否包含管理消息,是不是即時建立的。
4.保護每一個收到的消息的內容不會被公開。
爲實現上述目標,SNMP爲系統提供了一個安全的管理環境,涉及如下內容:
●SNMP實體的身份證實以加強SNMP實體間的通訊——每個SNMP實體都會有一個叫SNMP EngineID的身份標識符,SNMP通訊只能發生在已知身份的SNMP實體間(TRAP和Notification不受此規則限制。)
●支持安全模式——一個安全模式定義了管理域或內部網絡中的安全策略,SNMP包含USM安全模式的實現。
●定義消息安全的校驗服務規範:
○反信息篡改:保護校驗經過的實體所生成的消息在傳輸過程當中不會被未經校驗的SNMP實體所修改。
○反假裝:防止SNMP實體經過假裝成其餘實體的身份來越權執行某些操做。
○反消息流篡改:防止SNMP消息流被惡意重排序,推遲或重複從而施加未經校驗的管理操做。
○反消息泄露:防止SNMP實體通訊的信息被竊聽。
●USM的規格定義——USM通常由以下幾個通訊機制組成:
○非認證不加密通訊
○認證不加密通訊
○認證加密通訊
●定義不一樣的認證與加密協議——目前USM支持MD5和SHA認證協議,DES和AES加密協議。
●定義發現流程:能夠經過通訊地址發現SNMP實體的SNMP EngineID
●定義時間同步流程:加強遠程SNMP實體間認證通訊。
●定義SNMP 框架 MIB——加強對SNMP實體的管理和配置。
●定義USM的MIB——加強遠程配置與管理的安全模式。
●定義VACM 的MIB——加強遠程配置與管理的訪問控制。
7、SNMP的實現工具
上面講了不少關於SNMP原理的內容,瞭解完以後確定是要具體使用,纔有價值,這裏介紹一個Linux上的SNMP實現工具。
1.安裝net_snmp服務,這裏我使用yum安裝
2.檢查安裝狀況
3.啓動並檢查SNMP的運行狀態
4.驗證SNMP服務
1)安裝snmp管理工具:
2)執行SNMP命令查詢系統主機名:
5.配置SNMP服務
出於安全考慮,咱們建立SNMPv3的安全用戶
1).中止SNMP服務,並增長SNMPv3用戶,這裏建立的用戶默認是MD5認證和DES加密
2).將認證和加密協議分別修改成SHA和AES,提升安全性,而後啓動SNMP服務
3).測試該用戶的通訊消息,成功獲取。
4).一些其餘功能
查看系統內存總量OID:.1.3.6.1.4.1.2021.4.5.0
查看當前可用內存OID:.1.3.6.1.4.1.2021.4.6.0
查看當前CPU負載OID:.1.3.6.1.4.1.2021.10.1.3.1
若是是遠程查詢,將localhost修改爲目標主機的IP並指定SNMP的端口便可。
此外還有更多關於SNMP配置與開發,例如能夠配置用戶訪問的內容,訪問的權限,以及自定義MIB等,這裏就再也不一一贅述了,若是有興趣能夠去查閱相關資料進行研究。
轉:IT技術博客大學習http://blogread.cn/it/article/7478?f=wb