SNMP詳細資料

1. 網絡管理基本概念
  隨着計算機和通信技術的飛速發展,網絡管理技術已成爲重要的前言技術。目前還沒有對網絡管理的精確定義。例如,對公用交換網,網絡管理通常指實時網絡監控,以便在不利的條件下(如過載、故障)使網絡的性能仍能達到最佳。又如,狹義的網絡管理僅僅指網絡的通信量管理,而廣義的網絡管理指網絡的系統管理。網絡管理功能可概括爲OAM&P,即網絡的運行(Operation)、處理(Administration)、維護(Maintenance)、服務提供(Provisioning)等所需要的各種活動。有時也考慮前三種,即把網絡管理功能歸結爲OAM。
☆ SNMP術語和概念
ASN.1: 一個SNMP消息通過抽象語法記法1(Abstract Syntax Notation, version 1)
構造。ASN.1是一種形式語言。
BER : 將ASN.1描述表示成octet strings的基本編碼規則
MIB : 管理信息庫。下面是一個例子
sysUpTime OBJECT-TYPE
SYNTAX TimeTicks
ACCESS read-only
STATUS mandatory
DESCRIPTION
"距最後一次系統重啓動的時間"
OID : 對象標識符是唯一的點分數字串,比如".1.3.6.1.2.1.4.3.0"
PDU : 協議數據單元是SNMP消息中的數據區。
SMI : 管理信息結構是一套描述SNMP如何訪問信息的標準,它用ASN.1定義了MIB。
SMI要求每個數據項有name、syntax和encoding三部分。名字就是OID。語法
給出了數據類型,比如"integer"、"string of octets"等等。編碼則指明爲
了進行平臺無關網絡轉輸如何進行數據的序列化(RPC/XDR中存在類似概念)。
網絡管理通常用到以下術語:
  網絡元素(network element)
  網絡中具體的通信設備或邏輯實體,又稱網元。
  對象(object)
  通信和信息處理範疇裏可標識的切擁有一定信息特性的資源。但應注意,這裏所用的“對象”與面向對象系統中所定義的對象並不完全一樣。
  被管理對象(managed object)
  被管理對象指可使用管理協議進行管理和控制的網絡資源的抽象表示。例如,一個層的實體或一個連接。
  管理信息庫MIB
  MIB是網絡管理系統中的重要構件,它有一個系統內的許多被管對象及其屬性組成。MIB這個概念實際上就是一個虛擬數據庫。這個數據庫提供有關被管理網絡元素的信息,而這些信息由管理進程和各個代理進程共享。MIB由管理進程和各個代理進程共同使用。
  綜合網絡管理INM
  用統一的方法在一個異構網絡中管理多廠商生產的計算機硬件和軟件資源。這也稱爲一體化網絡管理。
  OSI很早就在OSI的總體標準中提出了網絡管理標準的框架,即ISO 7498-4。ITU-T在網絡管理方面緊密地和ISO合作,制訂了與ISO 7498-4相對應的X.700系列建議書。
  ISO 和ITU-T制訂的兩個重要標準是:
  (1)ISO 9595 ITU-T X.710 公共管理信息服務定義CMIS
  (2)ISO 9596 ITU-T X.711 公共管理信息協議規格說明CMIP
2. 簡單網絡管理協議SNMP概述  
2.1 SNMP的發展
  簡單網絡管理協議(SNMP)是目前TCP/IP網絡中應用最爲廣泛的網絡管理協議。1990年5月,RFC 1157定義了SNMP(simple network management protocol)的第一個版本SNMPv1。RFC 1157和另一個關於管理信息的文件RFC 1155一起,提供了一種監控和管理計算機網絡的系統方法。因此,SNMP得到了廣泛應用,併成爲網絡管理的事實上的標準。
  
snmp
在90年代初得到了迅猛發展,同時也暴露出了明顯的不足,如,難以實現大量的數據傳輸,缺少身份驗證(Authentication)和加密(Privacy)機制。因此,1993年發佈了SNMPv2,具有以下特點:
  支持分佈式網絡管理
  擴展了數據類型
  可以實現大量數據的同時傳輸,提高了效率和性能
  豐富了故障處理能力
  增加了集合處理功能
  加強了數據定義語言
  但是,SNMPv2並沒有完全實現預期的目標,尤其是安全性能沒有得到提高,如:身份驗證(如用戶初始接入時的身份驗證、信息完整性的分析、重複操作的預防)、加密、授權和訪問控制、適當的遠程安全配置和管理能力等都沒有實現。1996年發佈的SNMPv2c是 SNMPv2的修改版本,功能增強了,但是安全性能仍沒有得到改善,繼續使用SNMPv1的基於明文密鑰的身份驗證方式。IETF SNMPv3工作組於1998年元月提出了互聯網建議RFC 2271-2275,正式形成SNMPv3。這一系列文件定義了包含SNMPv1、SNMPv2所有功能在內的體系框架和包含驗證服務和加密服務在內的全新的安全機制,同時還規定了一套專門的網絡安全和訪問控制規則。可以說,SNMPv3是在SNMPv2基礎之上增加了安全和管理機制。
  Internet還有一個遠期的網絡管理標準CMOT(Common Management information service and protocol Over TCP/IP),意思是 “在TCP/IP上的公共管理信息服務與協議”。雖然CMOT使用了OSI的網絡管理標準CMIS/CMIP,但現在還未達到實用階段。
  SNMP最重要的餓知道思想就是要儘可能簡單,以便縮短研製週期。SNMP的基本功能包括監視網絡性能、檢測分析網絡差錯和配置網絡設備等。在網絡正常工作時,SNMP可實現統計、配置和測試等功能。當網絡出故障時,可實現各種差錯檢測和恢復功能。雖然SNMP是在TCP/IP基礎上的網絡管理協議,但也可擴展到其他類型的網絡設備上。
2.2 SNMP的配置
  整個系統必須有一個管理站(management station),它實際上是網控中心。在管理站沙鍋內運行管理進程。在每個被管對象中一定要有代理進程。管理進程和代理繼承利用SNMP報文進行通信,而SNMP報文又使用UDP來傳送。圖中有兩個主機和一個路由器。這些協議棧中帶有陰影的部分是原倆這些主機和路由器所具有的,而沒有陰影的部分是爲實現網絡管理而增加的。
  有時網絡管理協議無法控制某些網絡元素,例如該網絡元素使用的是另一種網絡管理協議。這是可使用委託代理(proxy agent)。委託代理能提供如協議轉換和過濾操作的彙集功能。然後委託代理來對管理對象進行管理。
  SNMP的網絡管理由三部分組成,即管理信息庫MIB、管理信息結構SMI以及SNMP本身。下面簡要介紹。
3. 管理信息庫MIB
  管理信息庫MIB指明瞭網絡元素所維持的變量(即能夠被管理進程查詢和設置的信息)。MIB給出了一個網絡中所有可能的被管理對象的集合的數據結構。 SNMP的管理信息庫採用和域名系統DNS相似的樹型結構,它的根在最上面,根沒有名字。圖3畫的是管理信息庫的一部分,它又稱爲對象命名(object naming tree)。
  對象命名樹的頂級對象有三個,即ISO、ITU-T和這兩個組織的聯合體。在ISO的下面有4個結點,其中的餓一個(標號3)是被標識的組織。在其下面有一個美國國防部(Department of Defense)的子樹(標號是6),再下面就是Internet(標號是1)。在只討論Internet中的對象時,可只畫出Internet以下的子樹(圖中帶陰影的虛線方框),並在Internet結點旁邊標註上{1.3.6.1}即可。
  在Internet結點下面的第二個結點是mgmt(管理),標號是2。再下面是管理信息庫,原先的結點名是mib。1991年定義了新的版本MIB -II,故結點名現改爲mib-2,其標識爲{1.3.6.1.2.1},或{Internet(1) .2.1}。這種標識爲對象標識符。
  最初的結點mib將其所管理的信息分爲8個類別,見表1。現在de mib-2所包含的信息類別已超過40個。
      表1 最初的結點mib管理的信息類別
  
    類別           標號     所包含的信息
    system         (1)     主機或路由器的操作系統
    interfaces        (2)     各種網絡接口及它們的測定通信量
    address translation  (3)   地址轉換(例如ARP映射)
    ip            (4)     Internet軟件(IP分組統計)
    icmp          (5)     ICMP軟件(已收到ICMP消息的統計)
    tcp           (6)     TCP軟件(算法、參數和統計)
    udp           (7)     UDP軟件(UDP通信量統計)
    egp           (8)     EGP軟件(外部網關協議通信量統計)
  應當指出,MIB的定義與具體的網絡管理協議無關,這對於廠商和用戶都有利。廠商可以在產品(如路由器)中包含SNMP代理軟件,並保證在定義新的 MIB項目後該軟件仍遵守標準。用戶可以使用同一網絡管理客戶軟件來管理具有不同版本的MIB的多個路由器。當然,一個沒有新的MIB項目的路由器不能提供這些項目的信息。
  這裏要提一下MIB中的對象{1.3.6.1.4.1},即enterprises(企業),其所屬結點數已超過3000。例如IBM爲 {1.3.6.1.4.1.2},Cisco爲{1.3.6.1.4.1.9},Novell爲{1.3.6.1.4.1.23}等。世界上任何一個公司、學校只要用電子郵件發往[email protected]進行申請即可獲得一個結點名。這樣各廠家就可以定義自己的產品的被管理對象名,使它能用 SNMP進行管理。
4. SNMP的5種協議數據單元
  SNMP規定了5種協議數據單元PDU(也就是SNMP報文),用來在管理進程和代理之間的交換。
  get-request操作:從代理進程處提取一個或多個參數值
  get-next-request操作:從代理進程處提取緊跟當前參數值的下一個參數值
  set-request操作:設置代理進程的一個或多個參數值
  get-response操作:返回的一個或多個參數值。這個操作是由代理進程發出的,它是前面三種操作的響應操作。
  trap操作:代理進程主動發出的報文,通知管理進程有某些事情發生。
  前面的3種操作是由管理進程向代理進程發出的,後面的2個操作是代理進程發給管理進程的,爲了簡化起見,前面3個操作今後叫做get、get- next和set操作。圖4描述了SNMP的這5種報文操作。請注意,在代理進程端是用熟知端口161倆接收get或set報文,而在管理進程端是用熟知端口162來接收trap報文。
  可見一個SNMP報文共有三個部分組成,即公共SNMP首部、get/set首部trap首部、變量綁定。
  (1)公共SNMP首部
  共三個字段:
  a、版本
  寫入版本字段的是版本號減1,對於SNMP(即SNMPV1)則應寫入0。
  b、共同體(community)
  共同體就是一個字符串,作爲管理進程和代理進程之間的明文口令,常用的是6個字符“public”。
  c、PDU類型
  根據PDU的類型,填入0~4中的一個數字,其對應關係如表2所示意圖。
        表2 PDU類型
     PDU類型       名稱
     0       get-request
      1       get-next-request
      2       get-response
      3       set-request
      4       trap
  (2)get/set首部
  a、請求標識符(request ID)
  這是由管理進程設置的一個整數值。代理進程在發送get-response報文時也要返回此請求標識符。管理進程可同時向許多代理髮出get報文,這些報文都使用UDP傳送,先發送的有可能後到達。設置了請求標識符可使管理進程能夠識別返回的響應報文對於哪一個請求報文。
  b、差錯狀態(error status)
  由代理進程回答時填入0~5中的一個數字,見表3的描述。
              表3 差錯狀態描述
      差錯狀態    名字         說明
      0       noError      一切正常
      1       tooBig      代理無法將回答裝入到一個SNMP報文之中
      2       noSuchName   操作指明瞭一個不存在的變量
      3       badValue    一個set操作指明瞭一個無效值或無效語法
      4       readOnly    管理進程試圖修改一個只讀變量
      5       genErr      某些其他的差錯
  c、差錯索引(error index)
  當出現noSuchName、badValue或readOnly的差錯時,由代理進程在回答時設置的一個整數,它指明有差錯的變量在變量列表中的偏移。
  (3)trap首部
  a、企業(enterprise)
  填入trap報文的網絡設備的對象標識符。此對象標識符肯定是在圖3的對象命名樹上的enterprise結點{1.3.6.1.4.1}下面的一棵子樹上。
  b、trap類型
  此字段正式的名稱是generic-trap,共分爲表4中的7種。
          表4 trap類型描述
   trap類型   名字           說明
    0     coldStart         代理進行了初始化
    1     warmStart        代理進行了重新初始化
    2     linkDown         一個接口從工作狀態變爲故障狀態
    3     linkUp          一個接口從故障狀態變爲工作狀態
    4    authenticationFailure   從SNMP管理進程接收到具有一個無效共同體的報文
    5    egpNeighborLoss     一個EGP相鄰路由器變爲故障狀態
    6    enterpriseSpecific     代理自定義的事件,需要用後面的“特定代碼”來指明
  當使用上述類型2、3、5時,在報文後面變量部分的第一個變量應標識響應的接口。
   特定代碼(specific-code)
  指明代理自定義的時間(若trap類型爲6),否則爲0。
  時間戳(timestamp)
  指明自代理進程初始化到trap報告的事件發生所經歷的時間,單位爲10ms。例如時間戳爲1908表明在代理初始化後1908ms發生了該時間。
  (4)變量綁定(variable-bindings)
  指明一個或多個變量的名和對應的值。在get或get-next報文中,變量的值應忽略。
5.管理信息結構SMI
  SNMP中,數據類型並不多。這裏我們就討論這些數據類型,而不關心這些數據類型在實際中是如何編碼的。
  a、INTEGER
  一個變量雖然定義爲整型,但也有多種形式。有些整型變量沒有範圍限制,有些整型變量定義爲特定的數值(例如,IP的轉發標誌就只有允許轉發時的或者不允許轉發時的這兩種),有些整型變量定義一個特定的範圍(例如,UDP和TCP的端口號就從0到65535)。
  b、OCTER STRING
  0或多個8 bit字節,每個字節值在0~255之間。對於這種數據類型和下一種數據類型的BER編碼,字符串的字節個數要超過字符串本身的長度。這些字符串不是以NULL結尾的字符串。
  c、DisplayString
  0或多個8bit字節,但是每個字節必須是ASCII碼。在MIB-II中,所有該類型的變量不能超過255個字符(0個字符是可以的)。
  d、OBJECT IDENTIFIER
  e、NULL
  代表相關的變量沒有值。例如,在get或get-next操作中,變量的值就是NULL,因爲這些值還有待到代理進程處去取。
  f、IpAddress
  4字節長度的OCTER STRING,以網絡序表示的IP地址。每個字節代表IP地址的一個字段。
  g、PhysAddress
  OCTER STRING類型,代表物理地址(例如以太網物理地址爲6個字節長度)。
  h、Counter
  非負的整數,可從0遞增到232—1(4294976295)。達到最大值後歸0。
  i、Gauge
  非負的整數,取值範圍爲從0到4294976295(或增或減)。達到最大值後鎖定直到復位。例如,MIB中的tcpCurrEstab就是這種類型的變量的一個例子,它代表目前在ESTABLISHED或CLOSE_WAIT狀態的TCP連接數。
  j、TimeTicks
  時間計數器,以0.01秒爲單位遞增,但是不同的變量可以有不同的遞增幅度。所以在定義這種類型的變量的時候,必須指定遞增幅度。例如,MIB中的sysUpTime變量就是這種類型的變量,代表代理進程從啓動開始的時間長度,以多少個百分之一秒的數目來表示。
  k、SEQUENCE
  這一數據類型與C程序設計語言中的“structure”類似。一個SEQUENCE包括0個或多個元素,每一個元素又是另一個ASN.1數據類型。例如,MIB中的UdpEntry就是這種類型的變量。它代表在代理進程側目前“激活”的UDP數量(“激活”表示目前被應用程序所用)。在這個變量中包含兩個元素:
  IpAddress類型中的udpLocalAddress,表示IP地址。
  INTEGER類型中的udpLocalPort,從0到65535,表示端口號。
  SEQUENDEOF,這是一個向量的定義,其所有元素具有相同的類型。如果每一個元素都具有簡單的數據類型,例如是整數類型,那麼我們就得到一個簡單的向量(一個一維向量)。但是我們將看到,SNMP在使用這個數據類型時,其向量中的每一個元素是一個SEQUENCE(結構)。因而可以將它看成爲一個二維數組或表。
6. SNMPv2協議
  簡單性是SNMP標準取得成功的主要原因。因爲在大型的、多廠商產品構成的複雜網絡 中,管理協議的明晰是至關重要的,但同時這又是SNMP的缺陷所在——爲了使協議簡單易行,SNMP簡化了不少功能,如:
   沒有提供成批存取機制,對大塊數據進行存取效率很低;
  沒有提供足夠的安全機制,安全性很差;
  只在TCP/IP協議上運行,不支持別的網絡協議;
  沒有提供manager與manager之間通信的機制,只適合集中式管理,而不利於進行分佈式管理;
  只適於監測網絡設備,不適於監測網絡本身。
  針對這些問題,對它的改進工作一直在進行。如1991年11月,推出了RMON(Remote Netw ork Monitoring)MIB,加強SNMP對網絡本身的管理能力。它使得SNMP不僅可管理網絡設備, 還能收集局域網和互聯網上的數據流量等信息。1992年7月,針對SNMP缺乏安全性的弱點,又 公佈了S-SNMP(Secure SNMP)草案。
  到1993年初,又推出了SNMP Version 2即SNMPv2(推出了SNMPv2以後,SNMP就被稱爲SNM Pv1)。SNM-Pv2包容了以前對SNMP所做的各項改進工作,並在保持了SNMP清晰性和易於實現的特點以外,功能更強,安全性更好,具體表現爲:
  提供了驗證機制、加密機制、時間同步機制等,安全性大大提高,
  提供了一次取回大量數據的能力,效率大大提高;
  增加了manager和manager之間的信息交換機制,從而支持分佈式管理結構。由中間( intermediate)manager來分擔主manager的任務,增加了遠地站點的局部自主性。
  可在多種網絡協議上運行,如OSI、Appletalk和IPX等,適用多協議網絡環境(但它的缺省網絡協議仍是UDP)。
  根據Carnegie-Mellin大學(SNMPv2標準的制定者之一)的Steven Waldbusser測試結果 ,SNMPv2的處理能力明顯強於SNMPv1,大約是SNMPv1的15倍。
  SNMPv2一共由12份協議文本組成(RFC1441-RFC1452),已被作爲Internet的推薦標準予 以公佈。
  可看出它支持分佈式管理。一些站點可以既充當 manager又充當agent,同時扮演兩個角色。作爲agent,它們接受更高一級管理站的請求命令 ,這些請求命令中一部分與agent本地的數據有關,這時直接應答即可;另一部分則與遠地ag ent上的數據有關。這時agent就以manager的身份向遠地agent請求數據,再將應答傳給更高一級的管理站。在後一種情況下,它們起的是proxy(代理)的作用。
  下面將SNMPv2標準加以詳細介紹,包括SNMPv2標準的中的安全機制,SNMPv2標準中的Pa rty實體,以及如何從通信協議操作、SMI、MIB三方面來看SNMPv2標準。
6.1 SNMPv2標準中的安全機制
  SNMPv2對SNMPv1的一個大的改進,就是增強了安全機制。對管理系統安全的威脅主要有下面幾種:
  (1)信息篡改(modification)
  SNMPv2標準中,允許管理站(manager)修改agent上的一些被管理對象的值。破壞者可能會將傳輸中的報文加以改變,改成非法值,進行破壞。因此,協議應該能夠驗證收到的報文是 否在傳輸過程中被修改過。
  (2)冒充(masquerade)
  SNMPv2標準中雖然有訪問控制能力,但這主要是從報文的發送者來判斷的。那些沒有訪 問權的用戶可能會冒充別的合法用戶進行破壞活動。因此 ,協議應該能夠驗證報文發送者 的真實性,判斷是否有人冒充。
  (3)報文流的改變(message stream modification)
  由於SNMPv2標準是基於無連接傳輸服務的,報文的延遲、重發以及報文流順序的改變都是可能發生的。某些破壞者可能會故意將報文延遲、重發,或改變報文流的順序,以達到破壞的目的。因此,協議應該能夠防止報文的傳輸時間過長,以給破壞者留下機會。
  (4)報文內容的竊取(disclosure)
  破壞者可能會截獲傳輸中的報文,竊取它的內容。特別在創建新的SNMPv2 Party時,必 須保證它的內容不被竊取,因爲以後關於這個Party的所有操作都依賴於它。因此,協議應該 能夠對報文的內容進行加密,保證它不被竊聽者獲取。
  針對上述安全性問題,SNMPv2中增加了驗證(Authentication)機制、加密(Privacy)機 制,以及時間同步機制來保證通信的安全。
6.2 SNMPv2 Party
  SNMPv2標準中增加了一種叫做Party的實體。Party是具有網絡管理功能的最小實體,它 的功能是一個SNMPv2 entity(管理實體)所能完成的全部功能的一個子集。每個manager和 agent上都分別有多個Par-ty,每個站點上的各個Party彼此是平等的關係,各自完成自己的功能。實際的信息交換都發生在Party與Party之間(在每個發送的報文裏,都要指定發送方和接收方的Par-ty)。每個Party都有一個唯一的標識符(party identity)、一個驗證算法和參數以及一個加密算法和參數。Party的引入增加了系統的靈活性和安全性,可以賦予不同的人員以不同的管理權限。 SNMPv2中有三種安全性機制:驗證(authentication)機制、加 密(privacy)機制和訪問控制(access control)機制。這些機制都工作在Party一級,而不是 manager/agent一級。
6.3 SNMPv2協議操作
  SNMPv2標準的核心就是通信協議———它是一個請求/應答式的協議。
  這個協議提供了在manager與agent、manager與manager之間交換管理信息的直觀、基本的方法。
  每條SNMPv2的報文都由一些域構成:
  如果發送方、接收方的兩個Party都採用了驗證(authentication)機制,它就包含與驗證有關的信息;否則它爲空(取NULL)。驗證的過程如下:發送方和接收方的Party都分別有一 個驗證用的密鑰(secret key)和一個驗證用的算法。報文發送前,發送方先將密鑰值填入圖中digest域,作爲報文的前綴。然後根據驗證算法,對報文中digest域以後(包括digest域) 的報文數據進行計算,計算出一個摘要值(digest),再用摘要值取代密鑰,填入報文中的dig est域。接收方收到報文後,先將報文中的摘要值取出來,暫存在一個位置,然後用發送方的密鑰放入報文中的digest。將這兩個摘要值進行比較,如果一樣,就證明發送方確實是srcP arty域中所指明的那個Party,報文是合法的;如果不一樣,接收方斷定發送方非法。驗證機制可以防止非法用戶冒充某個合法Party來進行破壞。
  authInfo域中還包含兩個時間戳(time stamp),用於發送方與接收方之間的同步,以防 止報文被截獲和重發。
  SNMPv2的另一大改進是可以對通信報文進行加密,以防止監聽者竊取報文內容。除了privDst域外,報文的其餘部分可以被加密。發送方與接收方採用同樣的加密算法(如DES)。
  通信報文可以不加任何安全保護,或只進行驗證,也可以二者都進行。
7. SNMPv3的體系結構RFC 2271定義的SNMPv3體系結構,體現了模塊化的設計思想,可以簡單地實現功能的增加和修改。其特點:
   適應性強:適用於多種操作環境,既可以管理最簡單的網絡,實現基本的管理功能,又能夠提供強大的網絡管理功能,滿足複雜網絡的管理需求。
  擴充性好:可以根據需要增加模塊。
  安全性好:具有多種安全處理模塊。
  SNMPv3主要有三個模塊:信息處理和控制模塊、本地處理模塊和用戶安全模塊。  
  (1)信息處理和控制模塊
  信息處理和控制模塊(Message Processing And Control Model)在RFC 2272中定義,它負責信息的產生和分析,並判斷信息在傳輸過程中是否要經過代理服務器等。在信息產生過程中,該模塊接收來自調度器(Dispatcher)的PDU,然後由用戶安全模塊在信息頭中加入安全參數。在分析接收的信息時,先由用戶安全模塊處理信息頭中的安全參數,然後將解包後的PDU送給調度器處理。
  (2)本地處理模塊
  本地處理模塊(Local Processing Model)的功能主要是進行訪問控制,處理打包的數據和中斷。訪問控制是指通過設置代理的有關信息使不同的管理站的管理進程在訪問代理時具有不同的權限,它在PDU這一級完成。常用的控制策略有兩種:限定管理站可以向代理髮出的命令或確定管理站可以訪問代理的MIB的具體部分。訪問控制的策略必須預先設定。SNMPv3通過使用帶有不同參數的原語使用來靈活地確定訪問控制方式。
  (3)用戶安全模塊
  與SNMPv1和SNMPv2相比,SNMPv3增加了三個新的安全機制:身份驗證,加密和訪問控制。其中,本地處理模塊完成訪問控制功能,而用戶安全模塊(User Security Model)則提供身份驗證和數據保密服務。身份驗證是指代理(管理站)接到信息時首先必須確認信息是否來自有權的管理站(代理)並且信息在傳輸過程中未被改變的過程。實現這個功能要求管理站和代理必須共享同一密鑰。管理站使用密鑰計算驗證碼(它是信息的函數),然後將其加入信息中,而代理則使用同一密鑰從接收的信息中提取出驗證碼,從而得到信息。加密的過程與身份驗證類似,也需要管理站和代理共享同一密鑰來實現信息的加密和解密。
  下面簡要介紹身份驗證和加密的數學工具。SNMPv3使用私鑰(privKey)和驗證密鑰(authKey)來實現這兩種功能。
  身份驗證:RFC2104中定義了HMAC,這是一種使用安全哈希函數和密鑰來產生信息驗證碼的有效工具,在互聯網中得到了廣泛的應用。SNMP使用的HMAC可以分爲兩種:HMAC-MD5-96和HMAC-SHA-96。前者的哈希函數是MD5,使用128位authKey作爲輸入。後者的哈希函數是SHA-1,使用160位authKey作爲輸入。
  加密:採用數據加密標準(DES)的密碼組鏈接(CBC)碼,使用128位的privKey 作爲輸入。
8. 公共管理信息CMIP
  CMIP協議是在OSI制訂的網絡管理框架中提出的網絡管理協議。與其說它是一個網絡管理協議,不如說它是一個網絡管理體系。這個體系包含以下組成部分:一套用於描述協議的模型,一組用於描述被管對象的註冊、標識和定義的管理信息結構,被管對象的詳細說明以及用於遠程管理的原語和服務。CMIP與SNMP一樣,也是由被管代理和管理者、管理協議與管理信息庫組成。在CMIP中,被管代理和管理者沒有明確的指定,任何一個網絡設備既可以是 被管代理,也可以是管理者。
  CMIP管理模型可以用三種模型進行描述:組織模型用於描述管理任務如何分配;功能模型描述了各種網絡管理功能和它們之間的關係;信息模型提供了描述被管對象和相關管理信息的準則。從組織模型來說,所有CMIP的管理者和被管代理者存在於一個或多個域中,域是網絡管理的基本單元。從功能模型來說,CMIP主要實現失效管理、配置管理、性能管理、記帳管理和安全性管理。每種管理均由一個特殊管理功能領域(SMFA,Special Management F unctional Area)負責完成。從信息模型來說,CMIP的MIB庫是面向對象的數據存儲結構,每 一個功能領域以對象爲MIB庫的存儲單元。
  CMIP是一個完全獨立於下層平臺的應用層協議,它的五個特殊管理功能領域由多個系統管理功能(SMF)加以支持。相對來說,CMIP是一個相當複雜和詳細的網絡管理協議。它的設計宗旨與SNMP相同,但用於監視網絡的協議數據報文要相對多一些。CMIP共定義了11類PDU 。在CMIP中,變量以非常複雜和高級的對象形式出現,每一個變量包含變量屬性、變量行爲 和通知。CMIP中的變量體現了CMIP MIB庫的特徵,並且這種特徵表現了CMIP的管理思想,即基於事件而不是基於輪詢。每個代理獨立完成一定的管理工作。
CMIP的優點在於:
  它的每個變量不僅傳遞信息,而且還完成一定的網絡管理任務。這是CMIP協議的最大 特點,在SNMP中是不可能的。這樣可減少管理者的負擔並減少網絡負載。
  完全安全性。它擁有驗證、訪問控制和安全日誌等一整套安全管理方法。
  但是,CMIP的缺點也同樣明顯:
  它是一個大而全的協議,所以使用時,其資源佔用量是SNMP的數十倍。它對硬件設備的要求比人們所能提供的要高得多。
  由於它在網絡代理上要運行相當數量的進程,所以大大增加了網絡代理的負擔。
  它的MIB庫過分複雜,難於實現。迄今爲止,還沒有任何一個符合CMIP的網絡管理系統。
9. SNMP與CMIP的比較
  
  SNMP與CMIP是網絡界最主要的兩種網絡管理協議。在未來的網絡管理中,究竟哪一種將佔據優勢,一直是業界爭論的話題。
  總的來說,SNMP和CMIP兩種協議是同大於異。兩者的管理目標、基本組成部分都基本相同。在MIB庫的結構方面,很多廠商將SNMP的MIB擴展成與CMIP的MIB結構相類似,而且兩種協 議的定義都採用相同的抽象語法符號(ASN.1)。
  不同之處,首先,SNMP面向單項信息檢索,而CMIP則面向組合項信息檢索。其次,在信息獲得方面,SNMP主要基於輪詢方式,而CMIP主要採用報告方式。再次,在傳送層支持方面,SN MP基於無連接的UDP,而CMIP傾向於有連接的數據傳送。此外,兩者在功能、協議規模、性能、標準化、產品化方面還有相當多的不同點。
10.網絡管理協議的前景
  在網絡界,除SNMP、SNMP v2、CMIP以外,現在正興起一些新的網絡管理協議和環境。其中,以分佈式計算環境(DME,Distributed Management Environment)最爲著名。DME是由OS F(開放軟件基金會)提出的。OSF是一個非盈利的研究和開發組織,其目標是提供一個軟件解決方案,使來自不同廠家的計算機可以協同工作於一個真正的開放系統計算環境下。其文檔以RFT(Request for Technology)的形式提供。
  DME代表了一種結構。在此結構下,管理系統和網絡可以很好地結合。它可以構成分佈式系統管理的基礎,並保持與現有網絡管理方案的結合。它獨立於操作系統,並支持事實上的和正式的網絡與系統管理標準。DME的結構有許多新穎之處。以前,無論是網絡管理還是系統管理,管理員通過修改與一個資源或服務相關的數據、通過對一些服務和數據進行操作來進行管理。而在DME環境下,信息和操作都被劃分爲對象。DME以對象爲單位對系統進行管 理。所有DME管理操作有一個一致的界面和風格:通過與對象通信。這種設計的很大好處是模塊性很強,完全是一種面向對象的管理方式,系統易於管理和開發。ISV們可以建立自己的某些特定管理功能的對象庫或被管對象庫,然後將其加入到已有的管理應用程序中。這一切 由於DME面向對象的管理方式而變得簡單。
  DME有兩個關鍵概念:應用程序服務和框架(Framework)。應用程序服務提供一些最重要的系統管理功能,而框架則提供開發系統管理應用程序所用的構造模塊(building block)。這種設計提供了與現有解決方案的一致性,並可在多廠商分佈式網絡環境中進行互操作。D ME應用程序服務包括軟件管理(Software Management)、許可權管理(License Management )、打印服務(Printing Services)和事件管理(Event Management)。它們以一組模塊和A PI的形式提供,有一個一致的用戶界面。DME還提供機制,使開發商可以很容易地加入新的服務。DME框架由一組功能全面的構造模塊組成,使新網管應用程序的開發變得簡單。這些組成是:
  管理請求代理(MRB,Management Request Brokers) MRB是DME框架的核心組成。在 DME下,所有對對象的請求都被MRB接收。MRB負責找到這個對象在網絡中的位置,然後轉發請求。MRB支持現有的網絡管理協議SNMP、CMIP,用它們收集網絡中的設備信息。MRB還支持基 於RPC(Remote Procedure Call)的管理協議。
  對象服務器對象服務器用來管理和維護網絡中的對象。DME提供兩種類型的對象服 務器,一個用於短期任務(如更換口令等),另一個用於長期任務(如監視一個網絡)。
  事件管理服務當網絡中出現問題或發生變化時,需要通知管理應用程序。DME的事件管理服務提供了轉發、登錄和過濾這類通知的功能,可以對過濾器進行編程來分析一個事件通告的屬性,並將此事件與某個特定的動作聯繫起來。另外,爲了使此服務易於使用,DME還 提供了用於定義事件的高級模板語言。
  數據管理服務DME提供了一個管理數據庫,用來存放網絡被管對象的有關數據信息。此管理數據庫存放在磁盤上。
  目前,DME的主要問題是缺乏支持,尚未得到進一步的實踐檢驗。
-----轉自Chinaunix
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章