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所有功能在内的体系框架和包含验证服务和加密服务在内的全新的安全机制,同时还规定了一套专门的网络安全和访问控制规则。图1通过SNMP不同版本格式的演变描述了它们之间的关系。可以说,SNMPv3是在SNMPv2基础之上增加了安全和管理机制。
2 SNMP的基本概念 网络管理的SNMP模型有4个组成部分:
1)管理节点(Management Node)
2)管理站(Management Station)
3)管理信息库(Management Information Base)
4)管理协议(Management Protocol)
管理节点可以是主机、路由器、网桥、打印机以及任何可以与外界交流状态信息的硬件设备。为了便于SNMP直接管理,节点必须能运行SNMP进程,即SNMP代理(SNMP Agent)。每个代理都要维护一个本地数据库,存放它的状态、历史并影响它的运行。所有的计算机以及越来越多的网桥、路由器和外部设备都能够满足这个要求。
网络管理由管理站完成,它实际上是一台运行特殊管理软件的计算机。管理站运行一个或多个管理进程,它(或它们)通过SNMP协议在网络上与代理通信,发送命令以及接收应答。该协议允许管理进程查询代理的本地对象的状态,必要时对其进行修改。许多管理站都具有图形用户界面,允许网络管理者检查网络状态并在需要时采取行动。管理进程和代理之间的信息交换以SNMP信息的形式进行,SNMP信息的负载可以是SNMPv1或SNMPv2的协议数据单元(PDU)。PDU表示某一类管理操作(例如取得和设置管理对象)和与该操作有关的变量名称。SNMPv3规定了可以使用信息头的用户安全模块(USM),与安全有关的处理在信息一级完成。
大多数实际网络都采用了多个制造商的设备,为了使管理站能够与所有这些不同设备进行通信,由这些设备所保持的信息必须严格定义。如果一个路由器根本不记录其分组丢失率,那么管理站向它询问时就得不到任何信息。所以SNMP极为详细地规定了每种代理应该维护的确切信息以及提供信息的确切格式。SNMP模型的最大部分就是定义谁应该记录什么信息以及该信息如何进行通信。总之,每个设备都具有一个或多个变量来描述其状态。在SNMP文字中,这些变量叫做对象(Object)。网络的所有对象都存放在一个叫做管理信息库(MIB)的数据结构中。
在SNMP中,加密和验证起着特别重要的作用。管理站具有了解它所控制的众多节点的能力以及关闭它们的能力。因此,对于代理来说很重要的一点是,必须弄清楚那些宣称来自管理站的查询是否真的来自管理站。在SNMPv1中,管理站通过在每条信息中设置一个明文密钥来证明自身。在SNMPv2中,使用了现代加密技术,但大大增加了协议的复杂性,最后还是将它抛弃了。SNMPv3则通过简明的方式实现了加密和验证功能。
3 SNMPv3的体系结构 RFC 2271定义的SNMPv3体系结构,体现了模块化的设计思想,可以简单地实现功能的增加和修改。其特点:
* 适应性强:适用于多种操作环境,既可以管理最简单的网络,实现基本的管理功能,又能够提供强大的网络管理功能,满足复杂网络的管理需求。
* 扩充性好:可以根据需要增加模块。
* 安全性好:具有多种安全处理模块。
SNMPv3主要有三个模块:信息处理和控制模块、本地处理模块和用户安全模块。
信息处理和控制模块
信息处理和控制模块(Message Processing And Control Model)在RFC 2272中定义,它负责信息的产生和分析,并判断信息在传输过程中是否要经过代理服务器等。在信息产生过程中,该模块接收来自调度器(Dispatcher)的PDU,然后由用户安全模块在信息头中加入安全参数。在分析接收的信息时,先由用户安全模块处理信息头中的安全参数,然后将解包后的PDU送给调度器处理。
本地处理模块
本地处理模块(LOCal Processing Model)的功能主要是进行访问控制,处理打包的数据和中断。访问控制是指通过设置代理的有关信息使不同的管理站的管理进程在访问代理时具有不同的权限,它在PDU这一级完成。常用的控制策略有两种:限定管理站可以向代理发出的命令或确定管理站可以访问代理的MIB的具体部分。访问控制的策略必须预先设定。SNMPv3通过使用带有不同参数的原语使用来灵活地确定访问控制方式。
用户安全模块
与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 作为输入。
4 结束语 SNMPv3保持了SNMPv1和SNMPv2易于理解和实现的特性,同时还增强了网络管理的安全性能,提供了前两个版本欠缺的保密、验证和访问控制等安全管理特性。SNMPv3正在逐渐扩充和发展,新的管理信息库还在不断增加,能够支持更多的网络应用。所以,它是建立网络管理系统的有力工具,也将推动互联网不断发展。