szl的专栏

一天一点积累,一天一点进步

SNMP v1,v2,v3 的比较

 

SNMP发展历史上,TCP/IP协议族的研究,开发,实施和用户团体在各种环境中已经经历了大量的协议。尤其是最近几年因特网的成长,出现了大量可用的支持因特网的软件。因特网规模的扩大,因特网技术在商业上的应用增加了研究人员,开发者,网络产品零售商对公共网络管理结构的需求,使TCP/IP产品能够用于网络。

    认识到这一点,人们经过了很多努力,提出了各种可能用于因特网或一般网络技术管理概念。在1987年底,这些努力取得突破性的进展,人们有了一些明确的技术选择,互联网社会也能找到一些不兼容的网络管理工具。这些努力包括High-Level Entity Management SystemHEMS), 简单网关管理协议 --Simple Gateway Monitoring Protocol (SGMP  公共管理信息协议-- Common Management Information Service/Protocol (CMIP).

 短期目标,因特网迫切需要工具来实施解决快速增长网络的管理问题。考虑到当前SGMP的状态是高度实施和相对的简单,SGMP的基本规则应该是快速的提供完整的定义来广泛的实施。不久以后,因为SGMP的简单性和多用途性,简单网络管理协议(SNMP)继承了SGMP

    SNMP 是一个协议用来管理网络上的节点,(包括工作站,路由器,交换机,集线器和其他的外围设备)。SNMP是一个应用协议,使用UDP封装进行传输。UDP是一个无连接的传输层协议,在OSI模型中为第四层协议,提供简单的可靠的传输服务。SNMP使网络管理者能够管理网络性能,发现和解决网络问题,规划网络的增长。

    网络管理由三个关键的组件组成,管理设备,代理,网络管理系统(NMS)。网络管理设备是在被管理网络中含有SNMP Agent 网络节点设备。被管理设备收集和存储管理信息,使SNMP管理信息能够用于NMSs。被管理设备有时候交网络元素,能够路由和接入服务器,交换机,网桥,集线器,电脑主机,打印机。Agent 是拥有本地管理信息并翻译管理信息与SNMP兼容。NMS执行应用程序监视和控制管理设备。

  当前,定义了三个版本的网络管理协议,SNMP v1SNMP v2SNMP v3SNMP v1v2有很多共同的特征,但是SNMP v2 版本上得到了增强,例如额为的协议操作。SNMP v3 在先前的版本地基础上增加了安全和远程配置能力 。为了解决不同版本的兼容性问题,RFC3584定义了共存策略。

   SNMP v1 是最初实施SNMP协议。SNMPv1 运行在像UDPIP OSI无连接网络服务(CLNS),DDPAppTalk Datagram-Delivery,IPX(Novell Internet Packet Exchange)之上.SNMPv1 广泛使用成为因特网上实际的网络管理协议。

   SNMP 是一种简单的request/response协议。网络管理系统发出一个请求,被管理设备返回相应。这些行为由四种协议操作组成:

GetGetNextSet TrapGet操作使用NMS来获取agent的一个或多个对象实例。如果agent返回get操作不能提供列表所有对象实例的值,就不能提供任何值。GetNext 操作是NMS用来从agent表中获取表中下一个对象实例。Set操作NMS用来设置agent对象实例的值。trap操作用于agentNMS通告有意义的事件。

    现在版本一不是没有自己的问题。版本一的主要问题的主要问题是对消息源的验证,保护消息不会被泄露和对MIB的访问控制包括配置,状态,消息统计存储到数据库。SNMP v21993年设计的,是v1版的演进版。GetGetNextSet操作相同于SNMPv1。然而,SNMPv2 增加和加强了一些协议操作。在SNMPv2中,如果再get-request中需要多个请求值,如果有一个不存在,请求照样会被正常执行。而在SNMPv1种将响应一个错误消息。在版本一种,Trap 消息和其他几个操作消息的PDU不同。v2版本简化了trap消息,使trap和其他的getset消息格式相同。

SNMPv2还定义了两个新的协议操作:GetBulkInformGetBulk 操作被用于NMS高效的获取大量的块数据,如表中一行中的多行。GetBulk  将请求返回的响应消息尽量多的返回。Inform操作允许一个NMS 来发送trap消息给其他的NMS,再接收响应。在SNMPv2

,如果agent响应GetBulk操作不能提供list中全部的变量的值,则提供部分的结果。

   SNMP v2最后的部分时改善安全,导致了SNMP v2的各个变种。从此,实际上SNMP v2实际上有几个不同的"SNMPv2",那其实有好几个SNMP v2的消息格式。但更糟糕的是原来模型中的SNMP消息并没有得到挽救。从SNMP v1 中的 SNMPv2中的协议操作导致SNMPv2 PDU的格式也必须改变。然而,这些协议操作在所有的SNMPv2变种中都必须相同。SNMPv2各个变种之间的不同在于安全的实施。因而各个SNMP v2变种之间的PDU都有相同的格式,而总的消息格式又都不同。

   现在,在新发行的版本考虑了令v2版本恐慌的安全问题。SNMP v3结构增加了安全和管理能力,从而增强了换来SNMPSNMP v2

SNMP v3 在前面的版本上增加了安全能力和远程配置能力,SNMPv3结构为消息安全和VACMView-based Access Control Model)引入了USMUser-based Security Model)。这个结构支持同时使用不同的安全机制,接入控制,消息处理模型。SNMP v3

也引入使用SNMP SET命令动态配置 SNMP agent而不失MIB对象代表agent配置。

  这些动态配置支持能够增加,删除,修改和配置远程或本地实体。

  通用的SNMPv3消息格式,通用的SNMPv3消息格式遵循相同的消息封装格式包含一个头和一个被封装PDU。然而,在版本三这个概念被进一步精简。头部区域,被分成两个部分,一部分处理安全,和另外一部份与安全无关的部分。与安全无关部分所有的SNMPv3部分是相同的,而使用安全相关部分被设计成各种的SNMPv3安全模型,被SNMP内的安全莫信处理。这种解决反感提供了很大的灵活性而避免了SNMPv2恐慌的问题。

  SNMP有五类应用能够与SNMP引擎相关。这些应用事命令产生,命令响应,通告产生,通告接收,Proxy 转发。随着这些新的应用,随着这些新的应用,新的SNMPv3的基于用户的安全模型定义了处理元素用于提供SNMP消息层的安全。USM保护用户免受四种威胁,包括消息被篡改,泄密,伪装,和消息流的修改。USM使用MD5Message Digest Algorithm)和安全哈希算法提供数据的完整性,来直接的保护数据免被修改,来间接的提供对数据源的认证,并防止伪装数据攻击。他同时使用DES来防止泄密。

   另一个中增加了新的特征View based Access Control Model。它定义了进程元素用于控制访问管理信息。VACM 能使一个引擎的实施与多个消息处理模型和多个安全模型关联。最新网络管理的发展和SNMP是扩展到所有形式的硬件。今天最新的软件包括了对桌上电脑的管理。桌面电脑的管理接口(DMI)是一个很好的例子。DMISNMP协议后面的另一种形式的软件,但并不取代SNMPDMI功能更过的是软件层面上的管理而SNMP主要是对硬件的管理。DMISNMP非常相似。DMI使用的信息库是MIF,而不是MIBDMI将为操作系统提供更好的接口用于获取硬件和软件信息。使用DMI的原因是新硬件的产生。现代技术最新的固件能够提供特定的应用程序调用获取硬件信息。术语DMI能用于代替代替硬件的API术语。DMI正提供标准的进程来使SNMP能够和个人电脑硬件进行通信。DMI在获取那些飞草长动态数据的时候非常有用。例如,如果管理员想知道一个节点硬盘的I/O总线的数目或当前CPU的利用率,管理工作站将请求使用DMI管理接口(MI)使用SNMP协议到DMI组件接口CI使用合适的API访问硬件。CI将得到答复并使用DMIMIF来把信息传回到管理工作站。这能够使标准的DMI通过CI访问。这将减少管理工作站需要的属于该平台的特定管理信息的数量。使用DMI的原因是使网络管理回归工业标准。

   使用SNMP安全是非常的重要。因为有些SNMP agent广播信息而有些agent被改变,安全不能被忽略。最初版本的SNMP版本,SNMP v1没有很好的实施安全。SNMP 面临任何网络应用着所有的标准的威胁:消息篡改,欺骗,消息流被修改,消息泄密。这里简单的来看一下各个版本的 安全措施。

    SNMPv1只使用一种安全策略,团体名。团体名和密码相似。Agent 能够被设置回答那些团体名能够被接受的Manager的查询。在很容易让人截取得到团体名或密码。SNMPv2增加了不少额外的安全。首先所有的包信息除了目的地址,其他都被加密。在加密的数据中包括团体名和源IP地址。Agent 能够解开加密包并使用收到的团体名和源IP地址使请求有效。安全的类型包括partycontextParty指的是规定的机器或人而context指的是于party相关的名字或字符串。SNMP 使用DESData Encryption Standard)来加密数据包。SNMPv3提供最新的SNMP安全机制。它包括SNMP上下文引擎ID来解码SNMP上下文。引擎ID可能花费的时间超过允许解释的时间。简单的说就是背景名合对象相配,安全需要对象和背景相配。SNMPv3提供三重的安全机制。最高层是认证和私密。中间层提供认证而没有私密和底层没有任何的认证机制和私密。

  SNMP安全的重要性的一个完美的例子就是重启设备。管理者不能让这个能力受到侵犯。SNMP的最新版本已经使用在明码的基础上走出了很远。

转自 http://zhuweiyang.blog.sohu.com/4530687.html

阅读更多
个人分类: 网络编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭