陈建伟 莫静
一、SNMP的基本概念
网络管理中的简单网络管理协议(SNMP)模型由4部分组成:管理节点(managementnode)、管理站(management station)、管理信息库(MIB:Management Information Base)和管理协议(management protocol)。
管理节点可以是主机、路由器、网桥、打印机以及任何可以与外界交流状态信息的硬件设备。为了便于SNMP直接管理,节点必须能运行SNMP进程,即SNMP代理(SNMP agent)。每个代理都要维护一个本地数据库,以存放管理节点的状态和历史并影响其运行。
管理站实际上是一台运行特殊管理软件的计算机,一个或多个管理进程通过SNMP与代理通信,发送命令以及接收应答,完成网络管理。管理进程和代理之间的信息交换以SNMP信息的形式进行,SNMP信息的负载可以是SNMP v1或SNMP v2的协议数据单元(PDU)。协议数据单元表示某一类管理操作(例如取得和设置管理对象)和与该操作有关的变量名称。SNMP v3规定了可以使用信息头的用户安全模块,与安全有关的处理在信息一级完成。
大多数实际网络都采用了多个制造商的设备,为了使管理站能够与所有这些不同的设备进行通信,必须严格定义这些设备所保持的信息。SNMP极为详细地规定了每种代理应该维护的确切信息以及所提供信息的确切格式。每个设备都具有一个或多个变量来描述其状态,在SNMP中,这些变量叫做对象(object),网络的所有对象都存放在MIB中。
在SNMP中,管理站具有了解以及关闭它所控制的众多节点的能力。因此,对于代理来说很重要的一点是,必须验证那些宣称来自管理站的查询的真实性。在SNMP v1中,管理站通过在每条信息中设置一个明文密钥来证明自身。在SNMP v2中,使用了现代加密技术,但大大增加了协议的复杂性,最后只能弃置不用。SNMP v3则通过简明的方式实现了加密和验证功能。
二、安全机制比较
网络管理中一般都采用代理/管理站模型,SNMP也是如此。
SNMP代理是一个软件,它能够回答SNMP管理站关于MIB中定义信息的各种查询。每一个为管理站提供MIB信息的网络设备都有一个SNMP代理,每个代理不但要控制自己本地的MIB,而且必须控制多个管理站对该MIB的使用。这种控制包含3个方面:
·认证服务:代理可以把对MIB的访问限制在授权的管理站
·访问策略:代理可以授予不同的管理站不同的访问权限;
·转换代理:一个代理可以作为其它被管理系统的转换代理,其任务可能包括为其它被管理的系统实现认证服务和访问策略。
所有这几方面都和安全有关,代理需要保护自身及其MIB,使MIB能够拒绝非法访问。
1.SNMPv1的安全机制
SNMPv1仅仅提供了有限的安全性,即团体的概念。
团体是一个在代理上定义的局部概念。一个代理可以定义若干个团体,每个团体使用唯一的团体名。而每个SNMP团体是一个在SNMP代理和多个SNMP管理者之间定义的认证、访问控制和转换代理的关系。
在每条SNMPv1信息中都包括community字段,在该域中填入团体名,团体名起密码的作用。 SNMPv1假设,如果发送者知道这个密码,就认为该信息通过了认证,是可靠的。
一条已通过认证的信息对MIB有何访问权限主要通过访问控制来实现。代理为每一个团体定义了一个SNMPv1团体框架文件,该框架文件包括两部分:
·MIB视域: MIB的一个对象子集,每个团体可以定义不同的MIB视域,一个视域中的对象集不必属于MIB的单个子树;
·SNMP访问模式:集合(只读、读写)的一个元素,每个团体只定义一个访问模式。
SNMP团体和SNMP团体框架文件的结合就成为SNMPv1 访问策略。一个通过了认证的信息必然指定了一个团体,那么它就有自己相应的团体框架文件,且只能对该框架文件中MIB视域的指定对象进行规定的操作(只读或读写)。
2. SNMPv2的安全机制
SNMPv2具有支持分布式网络管理,扩展数据类型,可以实现大量数据的同时传输,丰富故障处理能力,增加集合处理功能,加强数据定义语言等特点。
此外, SNMPv2还引入了“上下文(context)”的概念。上下文是一个可被SNMPv2实体访问的被管理对象资源的集合,分为本地上下文和远程上下文:本地上下文被标识为一个MIB视域,远程上下文被标识为一个转换代理关系。
使用了上下文的访问控制策略由以下4个元素组成:
·目标:SNMP参加者,它按主体方的请求执行管理操作;
·主体:SNMP参加者,它请求目标方执行管理操作;
·资源:管理操作在其上执行的管理信息,它可表示为一个本地MIB视域或一个代理关系,这一项被称为一个上下文;
·权限:对于一个特定的上下文可允许的操作,这些操作用可允许的协议数据单元定义,由目标代表主体执行。
但是,SNMPv2并没有完全实现预期的目标,尤其是安全性能没有得到提高,如:身份验证(如用户初始接入时的身份验证、信息完整性的分析、重复操作的预防)、加密、授权和访问控制、适当的远程安全配置和管理能力等都没有实现。1996年发布的SNMPv2c是 SNMPv2的修改版本,虽然功能增强了,但是安全性能仍没有得到改善,而是继续使用SNMPv1的基于明文密钥的身份验证方式。
3.SNMPv3的安全机制
IETF SNMPv3工作组于1998年1月提出了互联网建议RFC 2271~2275,正式形成SNMPv3。这一系列文件定义了包含SNMPv1,SNMPv2所有功能在内的体系框架及包含验证服务和加密服务在内的全新的安全机制,同时还规定了一套专门的网络安全和访问控制规则。可以说,SNMPv3是在SNMPv2基础之上增加了安全和管理机制。RFC 2271定义的SNMPv3体系结构体现了模块化的设计思想,可以简单地实现功能的增加和修改。其特点主要有:
·适应性强:适用于多种操作环境,既可以管理最简单的网络,实现基本的管理功能,又能够提供强大的网络管理功能,满足复杂网络的管理需求;
·扩充性好:可以根据需要增加模块;
·安全性好:具有多种安全处理模块。
SNMPv3主要有3个模块:信息处理和控制模块、本地处理模块和用户安全模块。
1信息处理和控制模块
信息处理和控制模块在RFC 2272中定义,负责信息的产生和分析,并判断信息在传输过程中是否要经过代理服务器等。
2本地处理模块
本地处理模块的主要功能是进行访问控制,处理打包的数据和中断。访问控制是指通过设置代理的有关信息使不同管理站的管理进程在访问代理时具有不同的权限,在协议数据单元一级完成。常用的控制策略有两种:限定管理站可以向代理发出的命令或确定管理站可以访问代理MIB的具体部分。访问控制的策略必须预先设定。SNMPv3通过使用带有不同参数的原语来灵活确定访问控制方式。
3用户安全模块
与SNMPv1和SNMPv2相比,SNMPv3增加了3个新的安全机制:身份验证,加密和访问控制。其中,访问控制功能由本地处理模块完成,而身份验证和数据保密服务则由用户安全模块提供。身份验证是指代理(管理站)接到信息时必须首先确认信息是否来自授权的管理站(代理),以及信息在传输过程中是否改变。这个功能的实现要求管理站和代理必须共享同一密钥。管理站使用密钥计算验证码(它是信息的函数),然后将其加入信息中,而代理则使用同一密钥从接收的信息中提取出验证码,从而得到信息。加密的过程与身份验证类似,也需要管理站和代理共享同一密钥来实现信息的加密和解密。
SNMPv3使用私钥(private key)和验证密钥(authentication key)来实现身份验证和加密功能。
三、结 语
SNMPv3保持了SNMPv1和SNMPv2易于理解和实现的特性,同时还增强了网络管理的安全性能,提供了前两个版本欠缺的保密、验证和访问控制等安全管理特性。SNMPv3正在逐渐发展,新的MIB不断增加,应用范围也在继续扩大。所以,SNMPv3是建立网络管理系统的有力工具,并将推动互联网不断发展。
摘自《现代电信科技》
|