SNMP

SNMP(Simple Network Management Protocol,簡單網路管理協議)
前身為sgmp(simple gateway management protocol)
能夠監測連接到網路上的設備,一般設備皆有支援

運作在OSI應用層
管理者請求訊息與代理者回應用udp161,代理者trap訊息用162
管理者用UDP傳送訊息若代理者收不到,則使用逾時重傳,但對trap訊息可能就收不到

SNMP缺點
大型網路中,輪詢會產生巨大的網路管理流量
將收集數據的負擔加在網路管理系統上,若過多則無法應付

snmp版本
snmpv1,只支援tcp/ip,只支援集中式網管
snmpv2c,可支援tcp/ip之外,支援分散式網管(適合大型網路)及集中式管理,增強管理功能
snmpv3,增加安全性

………………………..

SNMP架構
Manager(管理者)/管理節點
管理者電腦上的客戶端應用程式,負責poll(輪詢)各agent,有時也被稱為MNS網路管理工作站
ps:NMS通常是一台用來執行一個或更多個network management system(網路管理系統)的電腦
Agent(代理者)/代管節點
一個小型軟體,或是代管設備上的應用程式,可用來控制任何有支援snmp的裝置,回應管理者或產生trap訊息
有些只提供簡單資訊,有些會提供完整資訊,通常網路設備提供的資訊會比伺服器多,但網路設備擴充不易
若有支援兩種snmp版本則稱bilingual(雙語能力),若支援3種則稱trilingual(三語能力)
ps:
bilevel entity(雙面節點)
同時執行管理工作並且接受管理的節點

ps:
agentx(可擴充代理者)
可解決原本當代理者正執行時無法增加及移除mib物件問題
會包含一個masteragent(主代理者)以及多個subagent(次要代理者),可在同一裝置上或經由proxy彼此溝通
次要代理者可直接存取mib,以及執行管理功能並透過agentx協定將資訊給主要代理者
主要代理者可與mns溝通但不可直接存取mib

ps:
proxy agent
管理無法支援SNMP agent的裝置(有支援snmp設備通常標示manageable),ex:不支援tcp/ip設備,像數據機,hub
用途:
管理其它非使用SNMP管理代理者的裝置
允許其它非SNMP管理系統來存取SNMP agent
為其它SNMP agent提供類似防火牆的安全防護機能
轉換不同規格的SNMP訊息,ex,只支援snmpv1的設備透過proxy將訊息轉成snmpv2
不同訊息透過proxy溝通叫foreign proxy relationship(異類代理關係)
同訊息互相溝通叫native proxy relationship(同類代理關係)
在單一網路位址下合併多個受管節點
可被設計成是閘道器,以便能夠用一個網路位址就存取到數個可用SNMP管理的裝置
缺點是難以設計和實作,可能無法發揮裝置所有的管理能力,需要其它網路元件或執行程序的配合,使得除錯更為複雜

………………….

SNMP community(社群)
一個被管節點與多個管理節點間的關係
snmpv1,snmpv2可設置3個社群名稱(是字串,當密碼用),分別控制3種不同活動(可用來安全管理)
read-only:只可讀,預設字串是public
read-write:可讀可寫,預設字串是private
trap:可接收來自代理者訊息
ps:
社群字串以明文傳送,RO及RW最好設不同,可用vpn加密網路流量,或定時更改字串
每個社群都有一個唯一名稱,被管節點會為不同節點建立社群,表示同時屬於不同管理節點之下

藉由社群控制被管節點的方式有:
認證服務:需限制特定管理節點存取mib
 管理節點存取被管物件時都需指定社群名稱,而被管節點只允許知道社群名稱的管理節點存取,可達成簡單的認證
存取策略:給不同管理節點不同等級的權限
 snmp mib view:被管節點對不同社群會有不同mibview,管理節點可用不同的社群名稱存取被管節點
 snmp access mode:唯讀或讀寫
 community profile(社群設定檔):mibview+access mode
 社群與其設定檔合起來即是存取策略

……………………..

SNMP操作
使用PDU(protocol data unit,訊息格式)來傳送與接收資訊
SNMPv1有以下
Get-request : Manager向Agent要資訊
Get-next-request : Manager向Agent取出一群值
Set-request : Manager向Agent更改待管物件的值,或建立新的列
Get-response : Agent向Manager,回應管理者請求
Trap : Agent向Manager,在error, shutdown,…等特殊的情況下,主動發訊息給網管主機

SNMPv2,v3新增
getbulkrequest:擷取一大段表格
informrequest:類似trap,但這是由管理站送往另一個管理站,接收者會回應以確認事件己收到
report:在v2未被實作,在v3可讓snmp引擎互相通訊,主要用來報告有關snmp訊息的問題
notification:為了標準化snmpv1的trap訊息的pdu格式

……………………….

MIB(management information base,管理資訊庫)
存放網路元件的狀態資訊,定義管理資訊庫變數用,名稱採asn.1
定義了網路設備各種資訊的儲存結構,共有五種資訊(物件名稱,系統設定值,資料型態,讀寫方式,描述,識別碼)
可允許廠商或個人定義MIB,加入新的mib可用compiler

MIB類型有以下
1,MIB
 含8個群組system,interface,addr-translation,ip,icmp,tcp,udp,egp,114個管理個體
2,MIB-2(加強版RFC-1213)
 新增了transmission和snmp2個群組,共十個群組,171個管理個體,每個支援snmp裝置都會支援
 MIB2的主要目地是提供一般的TCP/IP管理資訊,它無法涵蓋廠商所販賣的特定裝置上
 ps:所有代理者會實做多MIB,而且一定會實做重要的MIB2
3,其他特定用途MIB

……………..

SMI(structure of management information,管理資訊結構)
定義網管資訊語言(物件命名,定義資料庫各項欄位的屬性及要記載的資料)
SMIv1定義待管物件命名方式,待管物件分三屬性
 OID(object identifier,物件識別代號):由一系統整數組成,命名長而不方便
 ASN.1(abstract syntax notation.1,抽像語意表示法):用於定義語法的正式語言,snmp的物件描述語言,好處是不同機器可互相溝通
 BER(basic encoding rules,基本編碼規則):描述如何將ASN.1類型表示為字串符
ps:
SMIv2,在internet子樹增加snmpv2分支,提供SNMPv2加強版
Security,administration capabilities:新增在第3版中

SMIv1物件樹
root-node
 ccitt(0)
 iso(1)
  org(3)
   dod(6)
    internet(1)
     directory(1)
     mgmt(2)
     experimental(3)
     private(4)
 joint(2)
SMIv2物件樹
root-node
 ccitt(0)
 iso(1)
  org(3)
   dod(6)
    internet(1)
     directory(1)
     mgmt(2)
      mib-2(1)
       system(1)
       interfaces(2)
       at(3)
       ip(4)
       icmp(5)
       tcp(6)
       udp(7)
       egp(8)
       transmission(10)
       snmp(11)
     experimental(3)
     private(4)
     snmpv2(6)
 joint(2)

……………………

host resources mib(主機資源管理資訊庫)
可協助管理unix或windows系統的各個重要部份
定義7個群組:
host,oid=1.3.6.1.2.1.25(iso.org.dod.internet.mgmt.mib-2.host)
hrsystem,oid=1.3.6.1.2.1.25.1 運作時間,系統日期,系統使用者,系統行程,…等
hrstorage,oid=1.3.6.1.2.1.25.2 系統儲存
hrdevice,oid=1.3.6.1.2.1.25.3 檔案系統
hrswrun,oid=1.3.6.1.2.1.25.4
hrswrunperf,oid=1.3.6.1.2.1.25.5 執行中的程式
hrswinstalled,oid=1.3.6.1.2.1.25.6 已安裝軟體


RMON(Remote Monitoring,遠端監控)
一種網路管理通訊協定SNMP的延伸規格,MIB的延伸
RMONv1為MNS提供了整個LAN或WAN在封包層次的統計資料
有遠端控制能力,能減少管理的負擔與降低網路頻寬的需求
使用在不同介面的交換式網路,trend(趨勢)分析與事件預警門檻,降低風險,提高管理效率
RMON MIB讓RMON探針在offline mode(離線模式)下執行,免去定期查詢麻煩

RMONv1
 不含rmon本身共有9個群組,在第二層工作,只能收到點對點的資訊
RMON v2
 加強對PHYSICAL LAYER(實體層)的TRAFIC(流量)資料收集.在第三層以上協定管理
 奠基於RMONv1上,提供了網路層次及應用層次的統計資料

RMONv1定義的群組
rmon,oid=1.3.6.1.2.1.16(iso.org.dod.internet.mgmt.mib-2.rmon)
Statistics,oid=1.3.6.1.2.1.16.1 網路介面統計資料
History,oid=1.3.6.1.2.1.16.2 記錄statistics群組的週期性統計資料様本
Alarm,oid=1.3.6.1.2.1.16.3 設定偵測週期及臨界值
Hosts,oid=1.3.6.1.2.1.16.4 記錄網路上主機的流量統計資料
HostTopN,oid=1.3.6.1.2.1.16.5 可用來產生主機的報表
Matrix,oid=1.3.6.1.2.1.16.6 針對兩個位址所構成的矩陣儲存錯誤及用量資訊
Filter,oid=1.3.6.1.2.1.16.7 依過濾條件指定封包
Capture,oid=1.3.6.1.2.1.16.8 若符合filter的封包則捕捉
Event,oid=1.3.6.1.2.1.16.9 設定rmon事件的定義

………………………….

SNMPv3
增加安全性,可避免playback的攻擊
架構具有擴充性
管理者與代理者組成實體,實體組自一個snmp引擊,及一或多個snmp應用

snmp引擊結構:
dispatcher(分派者):依版本收送訊息,收到支援版本則轉交訊息處理子系統
message processing subsystem(訊息處理子系統):準備待送訊息,含多重訊息處理模組
security subsystem(安全子系統):提供驗證.可用v1,2社群v3機制(採md5,sha)及保密服務(DES)
access control subsystem(存取控制子系統):控制MIB物件的存取權限

應用結構:
command generator(命令產生者):用來產生get,get-next,get-bulk,set,可用nms來實作
command responder(命令回應者):用來回應get,get-netx,get-bulk,set
notification originator(發起通告者):用來產生trap及notification
notification receiver(通告接收者):接收trap及notification
proxy forwarder(代理運送者):協助實體間訊息傳遞

Security Model
User-based security model(USM)
原本v1,v2無User-Based觀念,所以用Community來存取agent
v3增加帳號機制,可做分工,不同的工作者可有不同權限
View-based access control model(VACM)
此model是以USM和MIB為基礎,該model可讓不同的User在設定過權限後,即可存取被設定過權限的MIB

…………………..

軟體
agent軟體
在代管設備的應用程式,有些己內建(cisco路由器),有些需額外安裝(windows)
ex:net-snmp,snmp research,microsoft,sun microsystems,hp extensible snmp agent
NMS(network management suite,網路管理組套)
多個應用軟体的軟体套件,沒有它代理者將無用處
管理人員使用管理站台來發出要求,要求受管節點處回傳訊息,而管理站台在接收到回應的資訊後,會將該資料呈現給管理者
ex:HP OpenView,IBM NetView,免費的有gxsnmp,tkined,opennms
元件管理者
適合用在特定廠商的功能,產品是廠商專屬的
趨勢分析
如有rmon探針會有加分作用
ex:免費的有mrtg,cricket
支援體軟
perl,net-snmp的c library及perl模組,snmp++…等

相關文獻參考
http://big5.china-code.net/read/9/1/101251.html 
http://cisco.chinaitlab.com/colligate/2719.html