2017年2月28日 星期二

SNMP 自修筆記


SNMP ( Simple Network Management Protocol ) , 簡易網路管理協定
其前身為SGMP ( Simple Gateway Management Protocol ) , 簡易閘道器管理協定
用途只在管理Internet路由器 , SNMP卻可用來管理Unix 系統、Windows系統
網路管理的另一個面向是網路監控 , 也就是監控整個網路 , 而非各別的路由器、主機等;於是遠端網路監控 ( Remote Network Monitoring , 簡稱RMON)被開發來協助我們了解本身的運作狀況 , 以及網路上各別裝置對整個網路所造成的影響


SNMP的安全性建立在社群(communities)之上 , 基本有3個社群 : read-only read-write及及trap , 也就是說社群名稱就是密碼 , 再指定社群權限 , 任何設備都能取得資料
Cisco Switch會下一條指令
snmp-server community public ro
啟動SNMP服務 , 社群名稱為public , 權限read-only
當我用網管軟體去找這台Switch , public 這個字串 , 就能取得SNMPv1的資料

SNMP的世界有兩個角色
1.      管理者 : 就是安裝網管系統的主機,負責輪詢各代理者,或接收代理者資料
2.      代理者 : 小型軟體,在被管理的裝置上跑,是一支獨立的程式,Cisco IOS裡的SNMP服務


代理者會記錄每個介面狀況 , 當管理者詢問時回答 , 當代理者發現不好的事情也會回報管理者

管理資訊結構 (SMI) : 定義物件的追蹤清單 , OID樹表示路徑圖 , 最底層則可指到MIB
管理資訊庫 (MIB) : 定義物件被SNMP查詢的屬性值
MIB-IIMIB的加強版 , 主要增加了提供TCP/IP管理資訊 , 很實用 , 因此大多數設備都依MIB-II的規範製作MIB值給SNMP查詢

一個好的網管軟體 , 只是搜集設備的MIB很多而已 , 可以不用客製化之下相容很多設備
大部份新式的網管軟體,為了負責管理不同類型的裝置,會維 護一份簡潔的表單,以收納用來定義MIB。網管廠商會將MIB編譯成網管軟體可直接使用的格式,一旦載入MIB完成,管理人員便可以使用人類閱讀的方式來管理設備上的MIB屬性



RMON可以提供網管軟體在LANWAN封包層次的統計資料 , 可再深入提供網路層與應用層的統計資料 , RMONv1 RMONv2之分

SNMPUDP作為管理者個代理者之間傳送資料的傳輸協定; UDP採取了非連結的傳輸方式,它們之間共未建立端對端的連結 , 因此封包是否遺失便成為SNMP應用程式的責任,通常session time out為依據決定是否重送

SNMP管理者會使用編號161UDP埠來傳送與接收請求訊息 , 以為使用編號162UDP埠來接收來自裝置的trap訊息

SNMP將管理者與代理者之間的信任關係建立在社群(Community)的概念上,一個代理者可以 設置三種社群名稱 : read-only read-write 以及trap
社群名稱(或字串)基本上就是密碼
大多收廠商在設備出廠時,都會預設社群字串,基本上public是給read-only社群用的 , private是給read-write社群用的
因為SNMP為明碼 , public又是預設值 , 容易被猜中增加入侵風險 , 因此建議防火牆設定只有網管軟體此IP來源才能使用UDP 161162的流量
SNMP要跑在Internet上是極危險 , 建立用VPN加密或改用SNMP v3指定加密資訊

MIB物件通常包含三種屬性 :
名稱 : OID命名 , 例如 iso(1).org(3).dod(6).internet(1) , 1.3.6.1就是命名路徑
型別語法 : 表達方式 , 例如是整數? 布林?
編碼 : 是否需要BER編碼解碼
實際上MIB檔案的寫法還會包含以下資訊
<物件名稱> OBJECT-TYPE
  SYNTAX <資料型別>
  ACCESS <read-only read-write not-accessible>
  STATUS <mandatory optional obsolete>
  DESCRIPTION 描述
  ::={OID唯一值}

MIB物件會被組織成樹狀的階層架構,此架構是SNMP命名結構的基礎;一個物件識別代號OID是由一系列的整數所組成,這些整數來自樹的節點,並以點號(.)隔開
在物件樹中,樹的頂端節點稱為root(),任何節點都是子樹

MIB-II是一個非常重要的管理群組 , 因為每個支援SNMP的裝置也必須支援MIB-II
MIB-II簡單來說是客製化一個大家都想看SNMP資訊, 增加了對TCP/IP的可視度,結果變成通用標準,共分為10個範圍
system : 系統名稱、運作時間
interface : 監視每個介面
at : 增加相容性
ip : 追蹤IP和路由
icmp : 追蹤ICMP資訊
tcp : 追蹤TCP連結狀態
udp : 追蹤UDP統計資料
egp : 追蹤EGP鄰居表
transmission : 未定義
snmp : 追蹤SNMP資料

通常網管軟體使用的SNMP有幾種指令去得到設備資訊 , get , set , trap , notification , inform
Report ; 格式為snmpget 設備IP 社群字串 OID.回覆格式變數.0
例如snmpget 192.168.1.10 public .0.3.6.1.2.1.1.6.0

設定Cisco產品的SNMP代理者指令
snmp-server enable traps ; 最後面不打代表全部
snmp-server community public RO ; 定義RO社群字串
snmp-server private RW ; 定義RW社群字串
snmp-server host 192.168.1.10 public ; 設定trap到網管主機IP並包覆public字樣
snmp-server trap-source VLAN1 ; 指定發trap來源走VLAN1到網管主機
access-list 15 permit 192.168.10.3
snmp-server community notsopublic RO 15 ; 定義此信任來源能用SNMP指令

圖形化網管軟體只是圖形化的MIB Browser而已 , 基本上仍是用snmpget , snmpset , snmpwalk

snmpwalk主要是自動遊走某個MIB子樹 , 取出該子樹內的所有資料交叉呈現資訊

沒有留言 :

張貼留言