简单网络管理协议SNMP的发展与研究综述摘要:阐述了简单网络管理协议的发展历程,分析了不同版本协议的特点与缺点,对未来网络管理协议的发展趋势进行了初步研究和探讨。关键词:网络管理;简单网络管理协议;SNMPvl:SNMPv2;SNMPv31、SNMP概述网络管理用于管理一个复杂的阿络,使网络能够高教能地供用户使用。网络管理协议提供了一种通用的管理网络的方法和手段。简单网络管理协议(SNMP)是建立在TCPaP网络上的公共网络管理协议,它定义了用于交换管理信息的协议、管理信息的表示格式、分布系统的组织框架(由Manager和Ag-eat构成)和一种特定的储存管理信息的数据库(MIB)。它的发展经过了几个阶段。2、第1代简单网络管理协议(SNMPvl)1988年SNMPvl首次在ffcll57中被正式接受,确认为一个标准的基于TCP/IP网络的管理协议。2.1体系结构SNMPvl采用了管理者/代理的结构模型。代理位于被管理的设备上,每个代理管理一个特殊的数据库。称为管理信息库(MIB)。按照规定的格式存放着可供管理的设备信息。SNMP代理收集并维护本地信息,回答管理者对于MIB的查询请求或报告异常事件,并能根据管理者的指令修改本地配置或参数。管理者依据得到的信息对被管理者作出相应的管理和控制。代理和管理者之间的关系如图1所示。、、、、图1代理和管理之问的关系管理者主机代理主机………..代理主机2.2工作原理SNMPvl的代理和管理者通过标准消息格式进行通讯。SNMP使用无连接的用户数据报协议(UDP)作为传输层协议。SNMPvl的消息格式如下:版本团体名SNMPPDUSNMPvl包括5种消息类型:GetRequest,管理站用GetResquest从代理的MIB库中检索信息;GetResponse,代理用此消息回复来自管理者的Request消息;管理者可以用GetnextRequest和GetRequest结合起来取得MIB库中一个表的对象值;使用SetRequest消息管理者可以对代理设备的参数进行远程配置;SNMPTrap消息是当出现特定事件时,代理发送给管理者的非请求消息。2.3安全机制SNMP的安全机制包括两个方面。即认证服务和访问策略。认证服务限制只有授权的管理者才可以访问MIB,SNMPvl仅提供简单的认证服务,它通过包含在消息头的一个团体名来保证避信是授权的。访问镱略规定了不同的管理者对MIB的不同访问特权,它通过给特定的管理者指定特定的管理对象子集(称为MIBView)和特定的访问模式(只读或读写)来确定管理者可以访问的MIB元素。2.4SNMPvl的缺陷SNMPvl既存在着功能上的不足,也存在着安全方面的缺陷。功能上的不足在于:首先。它不能存取大量的数据;其次,它不支持强制性的命令,它只能通过setreque=t命令设置特定的对象值来问接地触发一个事件,这种方式缺少灵活性;第3,它的管理信息库的模式有限,不真正支持鄢些基于对限制或者类型复杂的管理查询的应用程序;第4,它不支持管理者到管理者之问的通信;第5,它只定义了在IP网络上的实现。安全方面的缺陷包括SNMPPDU只提供简单的基于团体名的认证,并且SNMP的陷阱没有认证,这样就造成了很大的安全隐患。3、第2代网络管理协议1993年首次提出了第2代网络管理协议(SNMPv2)。SNMPv2主要是基于安全SNMP和smp,它不仅对SNMPvl进行了大量的功能增强,而且在安全性上也有所增强。SNMPv2对SNMPvI的增强体现在以下一些方面:(1)在管理信息结构(SMI)的定义上,SNMPv2在SNMPvl的基础上进行了很大的扩展。SNMPv2SMI扩充了原有的对象数据类型,增加了许多新的数据类型:强了关于对象的文档说明;修改了对对象的访问权限,使之为子集{不可访问。只读,读写,读生成}四者之一,这就使得对对象的定义更加精确。此外,SNMPv2还扩充了表操作-在MIB中增加了用于行生成和行删除的对象rowsstatus,在表的定义中增加了augments子句,使得可以不重写表的定义增加表的列数。这样对表的操作更加方便。(2)它提供了管理者---管理者的能力。SNMPv2规范中不仅定义了用于系统管理的M]B。而且增加了一个“管理者对管理者(M2M)”MIB。使用“管理者对管理者”能力,允许一个系统中有多个管理者。形成分布式管理结构。在分布式管理结构中,一些系统可以既充当管理者又充当代理,作为管理者。它们收集关于下级代理的信息:作为代理,它们一方面回答上级管理者提出的关于它自身信息的访问。另一方面还要完成关于它的下级代理的总结性信息的访问。(3)在协议结构上,SNMPv2增加了两种PDU类型:GetbulkRequest和InformRequest。GetbulkRequestPDU允许管理者一次从代理得到大批管理信息,从而减少交换信息的救数。弥补了SNMPvl不能高效检索大量信息的不足.InformRequestPDU用于实现管理者与管理者之问的通讯,一个管理者通过lnfof-mRequestPDU将管理信息传送给另一个管理者。实现SNMPv2提供的管理者--管理者能力。(4)它在安全性方面也有了根大的扩展。SNMPv2为保证数据的完整性和机密性并解决源认证问题,引入了一些新的对象,并采用了MD5消息摘要算法和DES数据加密算法。具体实现如下:首先,从安全模型上,SNMPv2增加了参加者(patty)、MIBView、上下文等对象。SNMP参加者由一个唯一的参加者标识、认证协议及相关参数、加密协议及相关参数、MIBV3ew和该参加者的逻辑网络信息等元素构成。每个SNMP实体包含一个或多个参加者,SNMP实体以参加者的身份和别的实体通讯,它可能执行的操作局限于该参加者的操作集。MIBView是用子树集合的方式定义了MIB库中对象的一个子集。上下文标识了SNMP实体可以访问的MIBView子集。SNIdPv2的访问控制策略由4个元素构成,即目标参加者、源参加者、上下文和可被允许的操作。其次。在协议操作方面,也有根大变动。SNMPv2修改了SNMPvl的消息头格式。SNMPv2的消息格式;PriDstAuthInfoDstpartvSrcPartvContextPDU当一个SNMP实体需要向另一个实体发送一个秘密消息时,形成一个SNMPMgmtCom值,包含了消息的目的参加者(DstParty)、源参加者(SroParty)、相关的上下文(context)和相应的PDU;根据接收方的时间戳(DstTimestamp)、发送方的时间戳(SrcTimestamp)和消息摘要(Digest)组成Authlnfo部分;对SNMPM-gmtCom和AuthInfo部分加密;将目的方参加者标识符(PrivDst)附在消息头上发出。目的方实体接收到此消息后,检查是否与消息头的目的方参加者标识符匹配;解密Auttdnfo部分;检查时间戳;计算消息摘要是否匹配。判断消息的可靠性;检查消息引用的上下文是否存在;检查访问权限,如果请求被允许,成功接收该消息,进行相应操作。尽管SNMPv2较之SNMPvl,无论在功能上还是安全性上都有了很大改进,但是它还是存在着一些不足和缺陷。SNMPv2的消息结构和安全模型都过于单一,缺少灵活性,不适合在不同的环境中使用;同时,SNMPv2的安全机制也不够完善,缺乏基于用户的安全策略。4、第3代网络管理协议SNMPv3于1998年1月在RFC2271-RFC2275里发布。SNMPv3涵盖了SNMPvI、SNMPv2的所有功能,并在此基础上增加了安全性。它没有定义新的PDU格式,而是描述了一种目前和将来版本的SNMP版本都适用的体系结构、特定的信息结构和安全特性。4.1体系结构SNMPv3将网络看成由许多分布的、互相作用的实体构成,这些实体或者是代理,或是管理者,或者两者都是。其中每个实体又是由一些相互作用的模块集组成。这种模块化的体系结构的好处在于:可以适用于不同的操作环境,既可以为一些小的网络提供小的、简单的功能,又可为管理大的两络提供一些额外的功能;各个模块可以单独修改或升级;可以采用不同的安全模型。每个SNMp实体包含一个简单的SNMP引擎,引擎的主要功能为:接收来自SNMP应用程序的PDU,对之处理,包括插入认证码,加密处理等,再将处理过的PDU封装到报文中向下层发送,接收来自传输层的报丈,执行认证和解密处理后。将PDU从报文中取出交给适当的SNMP应用程序。对于准备发送的PDU(来自上层应用程序),调度程序根据消息类型(S'NMPvl,SNMPv2。SNMPv3)将PDU交蛤消息处理子系统中相应的消息处理模块娃理;消息处理子系统处理完该PDU后,将其封装到含有合适消息头的消息中返回给调度程序;调度程序再将此消息交给传输层传送。对于接收到的消息(来自传输层)。调度程序照样先将它们交给合适的消息处理模块处理;消息处理模块返回的消息中的PDU;调度程序再将此PDU交给合适的上层应用程序。消息处理子系统接收来自调度程序的消息(PDL),拆去(加上)合适的消息头,得到相应的PDU(消息)后返回给调度程序。消息处理子系统允许对于不同SNMP版本支持不同的信息格式。安全子系统执行认证和加密功能。消息处理子系统将每一个输出消息传递给安全子系统。安全子系统根据要求可能会加密整个PDU或消息头的一部分。产生认证码插入包头,再将处理过的消息返回给消息处理子系统。类似的,安全子系统也需要处理输入消息,执行认证和解密后返回给消息子系统。安全子系统可支持不同的安全模型,目前使用的是RFC2274中定义的基于用户的安全模型。存取控制子系统只存在于代理实体中。它的主要功能是提供对MIB的存取控制的授权服务。存取控制子系统也可以支持多个存取控制模型,目前使用的是基于视图的存取控制模型。4.2消息结构SNMPv3的消息格式与SNMPv1和SNMPv2的格式都不一样,它将消息头分得更细。使之包含了更多与安全有关的信息。SNMPv3消息可以分解为3个主要部分:消息处理模块部分,用户安全模块部分,PDU部分。消息处理模块部分由消息处理模块产生或处理。它包括以下一些域:消息版本(SNMPv3):消息ID,用于唯一标调一个消息:消息最大大小;标调,指定淳消息是否需要回应,加密和诅证}安全模型,可以指定为SNMPvl,SNMFv2c或SNMPv3。用户安全模块部分由用户安全模块产生或处理。它包括的域为:授权引擎ID,用于唯一标识一个授权引擎,其中授权引擎指接收一个需要回应的消息(如Get,GetNext,Set,Infom)的引擎或发送一个不需要回应的消息的引擎:授权引擎启动时间{授权引擎的时间。用于确定消息的有效性:准备交换消息的主体;认证参数(空或HMAC消息认证码){加密参数(空或DESCBC算法的Ⅳ值)。PDU部分由上下文引擎ID,上下文名。PDU3个域构成。加密操作是针对这个部分进行的。4.3安全特性SNMPv3的安全特性包括两个方面,认证和存取控制。(1)认证:认证主要是针对SNMP消息进行的。SNMPv3的认证功能由基于用户的安全模型(USM)来完成。USM的操作过程如下:当发送一个消息时,如果需要加密,则对PDU部分加密并设置加密参披,否则将加密参数置空;然后如果需要认证,则对整个消息执行认证并将得到的认证码设置成认证参数,否则将认证参数清空。对于接收的消息,如果需要认证,则首先根据认证码进行认证;然后检查消息是否在有效时限内;最后将PDU部分解密返回明文。(2)存取控制:存取控制是定义在SNMPPDU级的安全功能。存取控制由基于视图的存取控制模型(VACM)定义。它定义了代理的存取控制锥略,决定是否允许一个远程主体(Pdncipal)存取本她的管理信息库中的对象值,井使得远程配置成为可能。VACIVl模型包括5个元紊:组(Groups),安全模型。安全名队的集合;安全级别,决定对MIB的存取权限;上下文(Conttext)。MIB中对象实例的子集;MIB视图