- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
一、什么是SNMP?
SNMP是 “Simple Network Management Protocol” 的縮寫,中文意思是簡單網絡管理協議,它是由互聯網工作小組在RFC1157中定義的應用層協議,用于在網絡實體或節點之間交換管理或監控信息。
二、為什么需要SNMP?
作為運維人員,我們很大一部分的工作就是為了保證我們的網絡能夠正常、穩定的運行。因此監控,控制,管理各種網絡設備成了我們日常的工作。在網絡興起的早期,維護方式就是運維人員蹲在近端對設備進行各?操作,當網絡設備越來越多,網絡規模越來越大時,管理工作會變得越來越單調乏味,這樣的近端維護方式也近乎不可能。因此,遠程管理網絡的需求日益迫切,SNMP應運而生。使用SNMP,一個運行網管軟件的工作站就能對成千上萬的網絡設備進行監控和信息采集,這些信息可以用來構建網絡或者定位網絡中的問題。
三、SNMP的優點
如其名字所述,這個協議簡單易懂,部署的開銷成本也小。正因為它足夠簡單,所以被廣泛的接受,事實上它已經成為了主要的網絡管理標準。在一個網絡設備上實現SNMP的管理比絕大部分其他管理方式都簡單直接。
使用SNMP將帶來如下好處:
標準化的協議:SNMP是TCP/IP網絡的標準網絡管理協議。互聯網標準協議是由互聯網組織志愿貢獻的開放、非專利性的,SNMP的維護及將來所有的增強都將基于現有的協議標準。
廣泛認可:所有主流供應商都支持SNMP。所有SNMP管理的設備使用相同的管理接口以支持通用的管理消息集合。
可移植性:SNMP獨立于操作系統和編程語言。SNMP的功能設計同樣是可移植的。同時它定義了一套核心操作集,所有支持SNMP的設備都需要支持這套操作。
輕量級:SNMP增強對設備的管理能力的同時不會對設備的操作方式或性能產生沖擊。網絡?備可以以極小的資源消耗和些微的負載作為代價增加SNMP的管理支持。
可擴展性:在所有SNMP管理的設備上都會支持相同的一套核心操作集。SNMP也支持計算機網絡設備中各種類型的設備信息的交互,設備加入網絡也變得簡單。
廣泛部署:SNMP是最流行的管理協議,最為受設備供應商關注,被廣泛部署在各種各樣的設備上。
四、SNMP的關鍵特征
SNMP一般主要由三個組件構成,這三個組件分別是:
網絡設備:一般是指網絡中需要監控和管理的設備或管理對象。
Agent:agent是網絡設備和管理組件的中間件,是駐留在網絡設備中的程序進程,它收集設備的管理信息并與管理組件交互。
一個典型的agent應有如下特征:
●支持完整的SNMP協議
●保存與檢索定義在MIB中的管理信息
●收集與維護本地設備的信息
●發送事件給管理組件
●作為某些非SNMP可管理的節點上的代理
管理組件:一個管理組件或者說管理系統是一個遠程部署的獨立實體(區別于agent部署于被管理設備上)。一般典型可視為一臺部署了管理組件的計算機,并且可能從地理位置上都與網絡設備相隔甚遠,管理者只需要通過這臺計算機就能夠對設備進行各種監控與管理操作。
一個典型的管理組件應有如下特征:
●實現網絡管理系統
●支持完整的SNMP協議
●查詢agent,獲取agent 的響應消息,設置agent的變量,告知agent異步事件已收到等
通訊:管理組件與agent之間以協議數據單元進行通訊( Protocol Data Units,PDUs),數據在進行網絡傳輸前必須進行分塊和封裝,SNMP傳輸的過程中,數據首先會被封裝成PDU,PDU再被UDP協議封裝進行傳輸。
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))進行編碼。
五、SNMP的基本操作
SNMP是一個請求-響應式的協議,它的基本操作可以分類如下:
●檢索數據
●修改變量
●接收主動上報消息
檢索數據:管理組件向agent發送請求以獲取數據,有如下操作類型:
●GET:GET請求用以從agent上獲取指定OID對應的一條或多條值。
●GETNEXT:與GET請求類似,最明顯的區別是GETNEXT獲取指定OID在系統樹種所處位置的下一個OID。
●GETBULK:用于從agent上獲取大表中的大量數據。
修改變量:管理組件有時會希望能夠修改設備上的一些變量:
●SET:管理組件使用這個命令來修改設備的一些配置值。
接收主動上報消息:
●TRAP: 當agent遇到數據傳輸問題,或設備出現故障希望上層管理組件知曉時,使用TRAP操作上報此信息。
六、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——增強遠程配置與管理的訪問控制。
七、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配置與開發,
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP