艾灸可以治疗鼻窦炎吗:snmp比较详细资料

来源:百度文库 编辑:偶看新闻 时间:2024/05/03 05:11:34

SNMP MID 中各种OID的含义

文章分类:综合技术

snmpwalk 172.16.8.110  .1.3.6.1.2.1.4.20.1

可以查看到IP 地址。   安装HP 的OPENVIEW后才有snmpwalk。 很多东西都有SNMP的Browser,比如SNMPC还可以从网上下载。

 

MIB Variable Types

The MIBs supported by the TPF system reside in core storage. The TPF system supports the MIB-II structure except for certain values (routing tables and physical address tables, for example) that do not apply to TPF. All MIBs supported by the TPF system are defined by the following Request for Comments (RFC) documents:

  • RFC 1155 Structure and Identification of Management Information for TCP/IP-based internets
  • RFC 1213 Management Information Base for Network Management of TCP/IP-based internets: MIB-II
  • RFC 2233 The Interfaces Group MIB using SMlv2.

Go to http://www.ietf.org for more information about these RFCs and any related extensions.

All MIB variables supported by TPF have read-only access. The following table shows the MIB-II variables defined by RFC 1213 that are supported by the TPF system. MIB variables that are not accessible are shown in bold italic font. The variables are listed in each SNMP group in the numeric order of their object identifiers.

Table 14. MIB Variables Supported by the TPF System

Variable DescriptorObject IdentifierSystem GroupsysDescr1.3.6.1.2.1.1.1sysObjectID1.3.6.1.2.1.1.2sysUpTime1.3.6.1.2.1.1.3sysContact1.3.6.1.2.1.1.4sysName1.3.6.1.2.1.1.5sysLocation1.3.6.1.2.1.1.6sysServices1.3.6.1.2.1.1.7Interfaces GroupifNumber1.3.6.1.2.1.2.1ifTable1.3.6.1.2.1.2.2ifEntry1.3.6.1.2.1.2.2.1ifIndex1.3.6.1.2.1.2.2.1.1ifDescr1.3.6.1.2.1.2.2.1.2ifType1.3.6.1.2.1.2.2.1.3ifMtu1.3.6.1.2.1.2.2.1.4ifSpeed1.3.6.1.2.1.2.2.1.5ifPhysAddress1.3.6.1.2.1.2.2.1.6ifAdminStatus1.3.6.1.2.1.2.2.1.7ifOperStatus1.3.6.1.2.1.2.2.1.8ifLastChange1.3.6.1.2.1.2.2.1.9ifInOctets1.3.6.1.2.1.2.2.1.10ifInUcastPkts1.3.6.1.2.1.2.2.1.11ifInNUcastPkts1.3.6.1.2.1.2.2.1.12ifInDiscards1.3.6.1.2.1.2.2.1.13ifInErrors1.3.6.1.2.1.2.2.1.14ifInUnknownProtos1.3.6.1.2.1.2.2.1.15ifOutOctets1.3.6.1.2.1.2.2.1.16ifOutUcastPkts1.3.6.1.2.1.2.2.1.17ifOutNUcastPkts1.3.6.1.2.1.2.2.1.18ifOutDiscards1.3.6.1.2.1.2.2.1.19ifOutErrors1.3.6.1.2.1.2.2.1.20ifOutQLen1.3.6.1.2.1.2.2.1.21ifSpecific1.3.6.1.2.1.2.2.1.22IP GroupipForwarding1.3.6.1.2.1.4.1ipDefaultTTL1.3.6.1.2.1.4.2ipInReceives1.3.6.1.2.1.4.3ipInHdrErrors1.3.6.1.2.1.4.4ipInAddrErrors1.3.6.1.2.1.4.5ipForwDatagrams1.3.6.1.2.1.4.6ipInUnknownProtos1.3.6.1.2.1.4.7ipInDiscards1.3.6.1.2.1.4.8ipInDelivers1.3.6.1.2.1.4.9ipOutRequests1.3.6.1.2.1.4.10ipOutDiscards1.3.6.1.2.1.4.11ipOutNoRoutes1.3.6.1.2.1.4.12ipReasmTimeout1.3.6.1.2.1.4.13ipReasmReqds1.3.6.1.2.1.4.14ipReasmOKs1.3.6.1.2.1.4.15ipReasmFails1.3.6.1.2.1.4.16ipFragsOKs1.3.6.1.2.1.4.17ipFragsFails1.3.6.1.2.1.4.18ipFragCreates1.3.6.1.2.1.4.19ipAddrTable1.3.6.1.2.1.4.20ipAddrEntry1.3.6.1.2.1.4.20.1ipAdEntAddr1.3.6.1.2.1.4.20.1.1ipAdEntIfIndex1.3.6.1.2.1.4.20.1.2ipAdEntNetMask1.3.6.1.2.1.4.20.1.3ipAdEntBcastAddr1.3.6.1.2.1.4.20.1.4ipAdEntReasmMaxSize1.3.6.1.2.1.4.20.1.5ICMP GroupicmpInMsgs1.3.6.1.2.1.5.1icmpInErrors1.3.6.1.2.1.5.2icmpInDestUnreachs1.3.6.1.2.1.5.3icmpInTimeExcds1.3.6.1.2.1.5.4icmpInParmProbs1.3.6.1.2.1.5.5icmpInSrcQuenchs1.3.6.1.2.1.5.6icmpInRedirects1.3.6.1.2.1.5.7icmpInEchos1.3.6.1.2.1.5.8icmpInEchoReps1.3.6.1.2.1.5.9icmpInTimestamps1.3.6.1.2.1.5.10icmpInTimestampReps1.3.6.1.2.1.5.11icmpInAddrMasks1.3.6.1.2.1.5.12icmpInAddrMaskReps1.3.6.1.2.1.5.13icmpOutMsgs1.3.6.1.2.1.5.14icmpOutErrors1.3.6.1.2.1.5.15icmpOutDestUnreachs1.3.6.1.2.1.5.16icmpOutTimeExcds1.3.6.1.2.1.5.17icmpOutParmProbs1.3.6.1.2.1.5.18icmpOutSrcQuenchs1.3.6.1.2.1.5.19icmpOutRedirects1.3.6.1.2.1.5.20icmpOutEchos1.3.6.1.2.1.5.21icmpOutEchoReps1.3.6.1.2.1.5.22icmpOutTimestamps1.3.6.1.2.1.5.23icmpOutTimestampReps1.3.6.1.2.1.5.24icmpOutAddrMasks1.3.6.1.2.1.5.25icmpOutAddrMaskReps1.3.6.1.2.1.5.26TCP GrouptcpRtoAlgorithm1.3.6.1.2.1.6.1tcpRtoMin1.3.6.1.2.1.6.2tcpRtoMax1.3.6.1.2.1.6.3tcpMaxConn1.3.6.1.2.1.6.4tcpActiveOpens1.3.6.1.2.1.6.5tcpPassiveOpens1.3.6.1.2.1.6.6tcpAttemptFails1.3.6.1.2.1.6.7tcpEstabResets1.3.6.1.2.1.6.8tcpCurrEstab1.3.6.1.2.1.6.9tcpInSegs1.3.6.1.2.1.6.10tcpOutSegs1.3.6.1.2.1.6.11tcpRetransSegs1.3.6.1.2.1.6.12tcpConnTable1.3.6.1.2.1.6.13tcpConnEntry1.3.6.1.2.1.6.13.1tcpConnState1.3.6.1.2.1.6.13.1.1tcpConnLocalAddress1.3.6.1.2.1.6.13.1.2tcpConnLocalPort1.3.6.1.2.1.6.13.1.3tcpConnRemAddress1.3.6.1.2.1.6.13.1.4tcpConnRemPort1.3.6.1.2.1.6.13.1.5tcpInErrs1.3.6.1.2.1.6.14tcpOutRsts1.3.6.1.2.1.6.15UDP GroupudpInDatagrams1.3.6.1.2.1.7.1udpNoPorts1.3.6.1.2.1.7.2udpInErrors1.3.6.1.2.1.7.3udpOutDatagrams1.3.6.1.2.1.7.4udpTable1.3.6.1.2.1.7.5udpEntry1.3.6.1.2.1.7.5.1udpLocalAddress1.3.6.1.2.1.7.5.1.1udpLocalPort1.3.6.1.2.1.7.5.1.2SNMP GroupsnmpInPkts1.3.6.1.2.1.11.1snmpOutPkts1.3.6.1.2.1.11.2snmpInBadVersions1.3.6.1.2.1.11.3snmpInBadCommunityNames1.3.6.1.2.1.11.4snmpInBadCommunityUses1.3.6.1.2.1.11.5snmpInASNParseErrs1.3.6.1.2.1.11.6NOT USED1.3.6.1.2.1.11.7snmpInTooBigs1.3.6.1.2.1.11.8snmpInNoSuchNames1.3.6.1.2.1.11.9snmpInBadValues1.3.6.1.2.1.11.10snmpInReadOnlys1.3.6.1.2.1.11.11snmpInGenErrs1.3.6.1.2.1.11.12snmpInTotalReqVars1.3.6.1.2.1.11.13snmpInTotalSetVars1.3.6.1.2.1.11.14snmpInGetRequests1.3.6.1.2.1.11.15snmpInGetNexts1.3.6.1.2.1.11.16snmpInSetRequests1.3.6.1.2.1.11.17snmpInGetResponses1.3.6.1.2.1.11.18snmpInTraps1.3.6.1.2.1.11.19snmpOutTooBigs1.3.6.1.2.1.11.20snmpOutNoSuchNames1.3.6.1.2.1.11.21snmpOutBadValues1.3.6.1.2.1.11.22NOT USED1.3.6.1.2.1.11.23snmpOutGenErrs1.3.6.1.2.1.11.24snmpOutGetRequests1.3.6.1.2.1.11.25snmpOutGetNexts1.3.6.1.2.1.11.26snmpOutSetRequests1.3.6.1.2.1.11.27snmpOutGetResponses1.3.6.1.2.1.11.28snmpOutTraps1.3.6.1.2.1.11.29snmpEnableAuthenTraps1.3.6.1.2.1.11.30
  • 10:24
  • 浏览 (482)
  • 评论 (0)
  • 分类: 企业应用面临的问题
2010-09-09缩略显示

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}等。世界上任何一个公司、学校只要用电子邮件发往iana-mib@isi.edu进行申请即可获得一个结点名。这样各厂家就可以定义自己的产品的被管理对象名,使它能用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的所有操作都依赖于它。因此,协议应该 能够对报文的内容进行加密,保证它不被窃ting者获取。 

  针对上述安全性问题,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的主要问题是缺乏支持,尚未得到进一步的实践检验。

  • 21:16
  • 浏览 (305)
  • 评论 (0)
  • 分类: 企业应用面临的问题
2010-09-09缩略显示

snmp学习

文章分类:Java编程

SNMP是什么?它是一种协议。

它的全称是Simple Network Management Protocol

简单网络管理协议(SNMP)首先是由Internet工程任务组织(Internet Engineering Task Force)(IETF)的研究小组为了解决Internet上的路由器管理问题而提出的。它可以在IP,IPX,AppleTalk,OSI以及其他用到的传输协议上被使用。

SNMP事实上指一系列网络管理规范的集合,包括协议本身,数据结构的定义和一些相关概念。

简单网络管理协议(SNMP)是最早提出的网络管理协议之一,它一推出就得到了广泛的应用和支持,特别是很快得到了数百家厂商的支持,其中包括IBM,HP,SUN等大公司和厂商。目前SNMP已成为网络管理领域中事实上的工业标准,并被广泛支持和应用,大多数网络管理系统和平台都是基于SNMP的。 

一、 SNMP概述 

SNMP的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMI和MIB:体系结构,改进后的协议就是著名的SNMP。SNMP的目标是管理互联网Internet上众多厂家生产的软硬件平台,因此SNMP受Internet标准网络管理框架的影响也很大。现在SNMP已经出到第三个版本的协议,其功能较以前已经大大地加强和改进了。 

SNMP的体系结构是围绕着以下四个概念和目标进行设计的:保持管理代理(agent)的软件成本尽可能低;最大限度地保持远程管理的功能,以便充分利用Internet的网络资源;体系结构必须有扩充的余地;保持SNMP的独立性,不依赖于具体的计算机、网关和网络传输协议。在最近的改进中,又加入了保证SNMP体系本身安全性的目标。 

另外,SNMP中提供了四类管理操作:get操作用来提取特定的网络管理信息;get-next操作通过遍历活动来提供强大的管理信息提取能力;set操作用来对管理信息进行控制(修改、设置);trap操作用来报告重要的事件。 

二、 SNMF管理控制框架与实现 

1.SNMP管理控制框架 

SNMP定义了管理进程(manager)和管理代理(agent)之间的关系,这个关系称为共同体(community)。描述共同体的语义是非常复杂的,但其句法却很简单。位于网络管理工作站(运行管理进程)上和各网络元素上利用SNMP相互通信对网络进行管理的软件统统称为SNMP应用实体。若干个应用实体和SNMP组合起来形成一个共同体,不同的共同体之间用名字来区分,共同体的名字则必须符合Internet的层次结构命名规则,由无保留意义的字符串组成。此外,一个SNMP应用实体可以加入多个共同体。 

SNMP的应用实体对Internet管理信息库中的管理对象进行操作。一个SNMP应用实体可操作的管理对象子集称为SNMP MIB授权范围。SNMP应用实体对授权范围内管理对象的访问仍然还有进一步的访问控制限制,比如只读、可读写等。SNMP体系结构中要求对每个共同体都规定其授权范围及其对每个对象的访问方式。记录这些定义的文件称为“共同体定义文件”。 

SNMP的报文总是源自每个应用实体,报文中包括该应用实体所在的共同体的名字。这种报文在SNMP中称为“有身份标志的报文”,共同体名字是在管理进程和管理代理之间交换管理信息报文时使用的。管理信息报文中包括以下两部分内容: 

(1)共同体名,加上发送方的一些标识信息(附加信息),用以验证发送方确实是共同体中的成员,共同体实际上就是用来实现管理应用实体之间身份鉴别的; 

(2)数据,这是两个管理应用实体之间真正需要交换的信息。 

在第三版本前的SNMP中只是实现了简单的身份鉴别,接收方仅凭共同体名来判定收发双方是否在同一个共同体中,而前面提到的附加倍息尚未应用。接收方在验明发送报文的管理代理或管理进程的身份后要对其访问权限进行检查。访问权限检查涉及到以下因素: 

(1)一个共同体内各成员可以对哪些对象进行读写等管理操作,这些可读写对象称为该共同体的“授权对象”(在授权范围内); 

(2)共同体成员对授权范围内每个对象定义了访问模式:只读或可读写; 

(3)规定授权范围内每个管理对象(类)可进行的操作(包括get,get-next,set和trap); 

(4)管理信息库(MIB)对每个对象的访问方式限制(如MIB中可以规定哪些对象只能读而不能写等)。 

管理代理通过上述预先定义的访问模式和权限来决定共同体中其他成员要求的管理对象访问(操作)是否允许。共同体概念同样适用于转换代理(Proxy agent),只不过转换代理中包含的对象主要是其他设备的内容。 

2.SNMP实现方式为了提供遍历管理信息库的手段,SNMP在其MIB中采用了树状命名方法对每个管理对象实例命名。每个对象实例的名字都由对象类名字加上一个后缀构成。对象类的名字是不会相互重复的,因而不同对象类的对象实例之间也少有重名的危险。 

在共同体的定义中一般要规定该共同体授权的管理对象范围,相应地也就规定了哪些对象实例是该共同体的“管辖范围”,据此,共同体的定义可以想象为一个多叉树,以词典序提供了遍历所有管理对象实例的手段。有了这个手段,SNMP就可以使用get-next操作符,顺序地从一个对象找到下一个对象。get-next(object-instance)操作返回的结果是一个对象实例标识符及其相关信息,该对象实例在上面的多叉树中紧排在指定标识符;bject-instance对象的后面。这种手段的优点在于,即使不知道管理对象实例的具体名字,管理系统也能逐个地找到它,并提取到它的有关信息。遍历所有管理对象的过程可以从第一个对象实例开始(这个实例一定要给出),然后逐次使用get-next,直到返回一个差错(表示不存在的管理对象实例)结束(完成遍历)。 

由于信息是以表格形式(一种数据结构)存放的,在SNMP的管理概念中,把所有表格都视为子树,其中一张表格(及其名字)是相应子树的根节点,每个列是根下面的子节点,一列中的每个行则是该列节点下面的子节点,并且是子树的叶节点,如下图所示。因此,按照前面的子树遍历思路,对表格的遍历是先访问第一列的所有元素,再访问第二列的所有元素……,直到最后一个元素。若试图得到最后一个元素的“下一个”元素,则返回差错标记。 

SNMP树形表格结构示意图 

SNMP中各种管理信息大多以表格形式存在,一个表格对应一个对象类,每个元素对应于该类的一个对象实例。那么,管理信息表对象中单个元素(对象实例)的操作可以用前面提到的get-next方法,也可以用后面将介绍的get/set等操作。下面主要介绍表格内一行信息的整体操作。 

(1)增加一行:通过SNMP只用一次set操作就可在一个表格中增加一行。操作中的每个变量都对应于待增加行中的一个列元素,包括对象实例标识符。如果一个表格中有8列,则set操作中必须给出8个操作数,分别对应8个列中的相应元素。 

(2)删除一行:删除一行也可以通过SNMP调用一次set操作完成,并且比增加一行还简单。删除一行只需要用set操作将该行中的任意一个元素(对象实例)设置成“非法”即可。但该操作有一个例外:地址翻译组对象中有一个特殊的表(地址变换表),该表中未定义一个元素的“非法”条件。因此,SNMP中采用的办法是将该表中的地址设置成空串,而空字符串将被视为非法元素。 

至于删除一行时,表中的一行元素是否真的在表中消失,则与每个设备(管理代理)的具体实现有关。因此,网络管理操作中,运行管理进程可能从管理代理中得到“非法”数据,即已经删除的不再使用的元素的内容,因此管理进程必须能通过各数据字段的内容来判断数据的合法性。

  三、背景知识  

  SNMP开发于九十年代早期,其目的是简化大型网络中设备的管理和数据的获取。许多与网络有关的软件包,如HP的OpenView和Nortel Networks的Optivity Network Management System,还有Multi Router Traffic Grapher(MRTG)之类的免费软件,都用SNMP服务来简化网络的管理和维护。  

  由于SNMP的效果实在太好了,所以网络硬件厂商开始把SNMP加入到它们制造的每一台设备。今天,各种网络设备上都可以看到默认启用的SNMP服务,从交换机到路由器,从防火墙到网络打印机,无一例外。  

  仅仅是分布广泛还不足以造成威胁,问题是许多厂商安装的SNMP都采用了默认的通信字符串(例如密码),这些通信字符串是程序获取设备信息和修改配置必不可少的。采用默认通信字符串的好处是网络上的软件可以直接访问设备,无需经过复杂的配置。  

  通信字符串主要包含两类命令:GET命令,SET命令。GET命令从设备读取数据,这些数据通常是操作参数,例如连接状态、接口名称等。SET命令允许设置设备的某些参数,这类功能一般有限制,例如关闭某个缃涌凇⑿薷穆酚善鞑问裙δ堋5芟匀唬珿ET、SET命令都可能被用于拒绝服务攻击(DoS)和恶意修改网络参数。  

  最常见的默认通信字符串是public(只读)和private(读/写),除此之外还有许多厂商私有的默认通信字符串。几乎所有运行SNMP的网络设备上,都可以找到某种形式的默认通信字符串。  

  SNMP 2.0和SNMP 1.0的安全机制比较脆弱,通信不加密,所有通信字符串和数据都以明文形式发送。攻击者一旦捕获了网络通信,就可以利用各种嗅探工具直接获取通信字符串,即使用户改变了通信字符串的默认值也无济于事。  

  近几年才出现的SNMP 3.0解决了一部分问题。为保护通信字符串,SNMP 3.0使用DES(Data Encryption Standard)算法加密数据通信;另外,SNMP 3.0还能够用MD5和SHA(Secure Hash Algorithm)技术验证节点的标识符,从而防止攻击者冒充管理节点的身份操作网络。有关SNMP 3.0的详细说明,请参见http://www.ietf.org/rfc/rfc2570.txt。  

  虽然SNMP 3.0出现已经有一段时间了,但目前还没有广泛应用。如果设备是2、3年前的产品,很可能根本不支持SNMP 3.0;甚至有些较新的设备也只有SNMP 2.0或SNMP 1.0。  

  即使设备已经支持SNMP 3.0,许多厂商使用的还是标准的通信字符串,这些字符串对黑客组织来说根本不是秘密。因此,虽然SNMP 3.0比以前的版本提供了更多的安全特性,如果配置不当,其实际效果仍旧有限。  

  四、禁用SNMP  

  要避免SNMP服务带来的安全风险,最彻底的办法是禁用SNMP。如果你没有用SNMP来管理网络,那就没有必要运行它;如果你不清楚是否有必要运行SNMP,很可能实际上不需要。即使你打算以后使用SNMP,只要现在没有用,也应该先禁用SNMP,直到确实需要使用SNMP时才启用它。  

  下面列出了如何在常见的平台上禁用SNMP服务。  

  ■ Windows XP和Windows 2000  

  在XP和Win 2K中,右击“我的电脑”,选择“管理”。展开“服务和应用程序”、“服务”,从服务的清单中选择SNMP服务,停止该服务。然后打开服务的“属性”对话框,将启动类型该为“禁用”(按照微软的默认设置,Win 2K/XP默认不安装SNMP服务,但许多软件会自动安装该服务)。  
  ■ Windows NT 4.0  

  选择“开始”→“设置”,打开服务设置程序,在服务清单中选择SNMP服务,停止该服务,然后将它的启动类型该为禁用。  

  ■ Windows 9x  

  打开控制面板的网络设置程序,在“配置”页中,从已安装的组件清单中选择“Microsoft SNMP代理”,点击“删除”。检查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices和HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows\CurrentVersion\Run注册键,确认不存在snmp.exe。  

  ■ Cisco Systems硬件  

  对于Cisco的网络硬件,执行“no SNMP-server”命令禁用SNMP服务。如果要检查SNMP是否关闭,可执行“show SNMP”命令。这些命令只适用于运行Cisco IOS的平台;对于非IOS的Cisco设备,请参考随机文档。  

  ■ HP硬件  

  对于所有使用JetDirect卡(绝大部分HP网络打印机都使用它)的HP网络设备,用telnet连接到JetDirect卡的IP地址,然后执行下面的命令:  

SNMP-config: 0 
quit  


  这些命令将关闭设备的SNMP服务。但必须注意的是,禁用SNMP服务会影响服务的发现操作以及利用SNMP获取设备状态的端口监视机制。  

  ■ Red Hat Linux  

  对于Red Hat Linux,可以用Linuxconf工具从自动启动的服务清单中删除SNMP,或者直接从/etc/services文件删除启动SNMP的行。对于其他Linux系统,操作方法应该也相似。 

  五、保障SNMP的安全  

  如果某些设备确实有必要运行SNMP,则必须保障这些设备的安全。首先要做的是确定哪些设备正在运行SNMP服务。除非定期对整个网络进行端口扫描,全面掌握各台机器、设备上运行的服务,否则的话,很有可能遗漏一、二个SNMP服务。特别需要注意的是,网络交换机、打印机之类的设备同样也会运行SNMP服务。确定SNMP服务的运行情况后,再采取下面的措施保障服务安全。  

  ■ 加载SNMP服务的补丁  

  安装SNMP服务的补丁,将SNMP服务升级到2.0或更高的版本。联系设备的制造商,了解有关安全漏洞和升级补丁的情况。  

  ■ 保护SNMP通信字符串  

  一个很重要的保护措施是修改所有默认的通信字符串。根据设备文档的说明,逐一检查、修改各个标准的、非标准的通信字符串,不要遗漏任何一项,必要时可以联系制造商获取详细的说明。  

  ■ 过滤SNMP  

  另一个可以采用的保护措施是在网络边界上过滤SNMP通信和请求,即在防火墙或边界路由器上,阻塞SNMP请求使用的端口。标准的SNMP服务使用161和162端口,厂商私有的实现一般使用199、391、705和1993端口。禁用这些端口通信后,外部网络访问内部网络的能力就受到了限制;另外,在内部网络的路由器上,应该编写一个ACL,只允许某个特定的可信任的SNMP管理系统操作SNMP。例如,下面的ACL只允许来自(或者走向)SNMP管理系统的SNMP通信,限制网络上的所有其他SNMP通信:  

access-list 100 permit ip host w.x.y any 
access-list 100 deny udp any any eq snmp 
access-list 100 deny udp any any eq snmptrap  
access-list 100 permit ip any any  


  这个ACL的第一行定义了可信任管理系统(w.x.y)。利用下面的命令可以将上述ACL应用到所有网络接口:  

interface serial 0 
ip access-group 100 in  


  总之,SNMP的发明代表着网络管理的一大进步,现在它仍是高效管理大型网络的有力工具。然而,SNMP的早期版本天生缺乏安全性,即使最新的版本同样也存在问题。就象网络上运行的其他服务一样,SNMP服务的安全性也是不可忽视的。不要盲目地肯定网络上没有运行SNMP服务,也许它就躲藏在某个设备上。那些必不可少的网络服务已经有太多让人担忧的安全问题,所以最好关闭SNMP之类并非必需的服务——至少尽量设法保障其安全。