背景技术
随着SNMP协议的广泛应用,SNMP的安全性日益受到重视,SNMP的发
展也主要侧重于安全性的提高。
SNMP的发展经历了V1、V2到V3的发展。最初的SNMPv1和SNMPv2c
主要采用简单的基于团体名的验证方式以及明文报文的传送,任何获取该团
体名的一方都可以对设备进行管理,对于恶意攻击者来说,这无疑是安全性
方面的一个巨大漏洞。SNMPv3在前两者的基础上对协议的安全性进行了加
强,SNMPv3的安全性是建立在USM(安全用户模型)、VACM(基于视图
的访问控制模型)基础上,即从SNMPv1、SNMPv2c简单的团体名认证方式
改进为复杂的USM验证以及VACM验证。可以说SNMP发展到SNMPv3版本,
安全性已经提高到了一个非常高的水平。目前现有技术的SNMP系统大部分
都是兼容SNMPv1/SNMPv2c/SNMPv3三个版本。
现有的SNMP代理模型如图1所示。目前定义了三个消息处理子系统:
V1MP、V2CMP和V3MP,其中V1MP、V2CMP的安全检验由基于团体名模
型的安全子系统完成,V3MP的安全检验由基于用户的安全管理模块的安全
子系统完成。在SNMPv3中引入了VACM,用于访问控制子系统的实现,但
是SNMPv1和SNMPv2c没有视图的定义。
现有技术的SNMP安全体系完全依赖于协议本身定义的安全策略。但
是,由于目前SNMPv3无法解决三个版本共存之后SNMPv1和SNMPv2c所带
来的安全隐患。如何在SNMPv1/SNMPv2c/SNMPv3三个版本共存的情况下实
现安全管理是目前在应用中遇到的一个问题。具体地说:
1.多个版本共存的SNMP代理模型无法在代理侧对所支持的版本进行
控制,因此无法保证代理使用统一的安全标准。
2.无法记录网管的访问情况
3.在SNMP本身验证方式失效的情况下无法保证代理的安全
具体实施方式
下面结合图2-6说明本发明的优选实施方案。
如图2所示,在本发明的实施方案中,对SNMP代理模型安全子系统进
行了扩充,增加了基于版本验证的安全管理、基于时效性的安全管理以及基
于网管地址过滤的安全管理。下面分别予以说明。
一、基于版本验证的安全管理
基于版本验证的安全管理用于控制代理所允许的SNMP报文请求版本。
调度器将SNMP请求报文交给消息处理子系统处理之前,首先通过版本控制
模块的版本验证,只有通过版本验证的SNMP请求才会继续处理,否则将该
报文丢弃,并将SnmpInBadVersions计数器加1。
本发明的版本控制方法是针对已经实现的SNMP版本进行选择性保护,
将不同的版本根据网管对SNMP的支持情况进行打开或者关闭。图3描述了
版本验证与版本控制的原理,其具体过程如下:
AGENT(代理)在接收到的报文进行解码的时候,首先获得报文的版
本信息,在验证了版本的合法性(即所获得的版本信息满足协议要求,同时
满足已有实现的要求)之后,将该报文的版本信息输入版本控制模块中,检
查当前处理报文是否可以通过版本开关的开关设置条件。
本发明的版本控制模块中,版本控制开关可以通过命令行接口
(Command Line Interface)进行自由配置(版本的打开与关闭没有自由度限
制),也可以通过网管的SNMP报文请求进行控制。从安全性上考虑,在本
发明的一个实施例中,设定只有高版本的请求才可以关闭低版本的开关,也
就是SNMPv3能够控制SNMPv2c和SNMPv1,而SNMPv2c只能够控制
SNMPv1,SNMPv1不可以控制任何版本开关。当关闭版本开关时,就意味
着该版本报文的请求被拒绝。
在原有的SNMP代理模型基础上增加了版本控制模块后,可以解决版本
共存时带来的安全隐患,能够充分发挥SNMP协议的简单性与安全性的和谐
统一。
二、基于网管地址的安全管理
为了克服现有技术无法记录网管访问情况的问题,该模块包含两个子模
块,一个是基于网管地址的访问控制模型,另一个是基于网管地址的日志信
息模型。
首先说明基于网管地址的访问控制模型。该模型如图4所示。针对
SNMPv1和SNMPv2c采用团体名(COMMUNITY)认证方式的情况,在本发
明的实施方案中,在团体名验证的时候附加了请求源地址的访问控制的验证
方式。也就是说,不仅要如现有技术那样验证团体名,还要检查与该团体名
相关的SNMP请求源地址的合法性,以实现SNMPv1和SNMPv2c的访问控制。
团体名验证方式通过SNMPv1/v2c报文中所携带的团体名字符串与LCD
(本地配置库)中配置的团体信息进行比较,如果所进行的操作符合LCD中
的团体名操作权限(读/写权限),就认为团体名验证成功。由于SNMPv1/v2c
是明文传输报文,所以团体名被窃听的可能性很大,一旦合法的团体名被非
法窃听,那么只要以该团体名访问AGENT,都将被判断是合法的。通过本
发明的在团体名验证后附加源地址访问控制可以在一定程度上避免这种危
害。
请求源地址的访问控制的验证过程是:通过请求报文中的团体名在LCD
中查找与之对应的ACL(访问控制列表)规则,如果能够查找到ACL规则,
那么将请求报文的源地址与查找到的ACL规则匹配,如果匹配成功,认为请
求源地址的访问控制的验证通过,否则验证失败,将该请求报文丢弃,终止
处理过程。如果没有查找到相应的ACL,则表明该团体名配置的时候没有附
加配置ACL规则,那么认为该团体名不进行ACL检查,也就相当于对请求源
地址的访问控制的验证是成功的。
另外,在图4中,针对SNMPv3采用基于用户的安全验证方式的情况,
在本发明的实施方案中,在USM的基础上增加了两层访问控制,第一层为用
户地址访问控制,只有通过了用户地址访问控制的请求才会被进一步处理;
第二层为组的地址访问控制,如果SNMPv3用户所属的组没有通过访问控制
的验证,则该请求报文将被丢弃。
经USM验证通过的USM用户,首先进行USER ACL检查,从LCD中获取
该用户对应的ACL规则,然后将承载该用户请求的SNMP报文源地址与获得
的ACL规则进行匹配,如果匹配失败,认为该用户的报文认证失败,丢弃报
文,终止处理过程。否则进入下一层访问控制:GROUP ACL检查。
GROUP ACL检查过程是:根据USM用户查找LCD,获取该用户所属的
组(GROUP),根据组从LCD中获得相应的ACL规则,将承载该用户请求
的SNMP报文源地址与获得的ACL规则进行匹配,如果匹配失败,认为该用
户的报文认证失败,丢弃报文,终止处理过程。在上述两层检验的过程中如
果在查找相关ACL规则的时候查找失败,那么认为没有任何ACL规则实施检
查,即可认为验证是成功的。也就是说,虽然在group上配置了ACL规则,
但是这个ACL规则实际上是一个无效的规则,那么认为对group是不进行的
ACL检查的,也就是ACL验证是成功的。
图5为基于网管地址的日志信息模型的工作原理图。如图5所示,在
SNMP代理侧(即AGENT)设置一个网管地址缓冲池,可以通过配置工具(例
如网管、命令行等)对缓冲池的属性进行设置。网管地址缓冲池的属性可以
设置很多,例如可设置缓冲池的大小,缓冲池地址类型等。缓冲池的大小决
定了生成日志信息的地址的多少,通过缓冲池地址类型可以确定生成日志信
息的地址类型。当有SNMP请求报文输入时,网管地址日志过滤器根据输入
报文的特性,查询地址缓冲池的属性,根据缓冲池的属性确定SNMP请求报
文(网管请求信息)是否放入网管地址缓冲池中。当确定网管请求信息放入
网管地址缓冲池中时,则生成进入缓冲池的信息,并立即向信息中心报告日
志信息,将相关信息发往日志主机。
三、基于时效性管理的安全管理
目前所有版本的SNMP都要采用加密或者鉴别信息。但是,任何一种加
密或者鉴别信息只能在一定时间段内有效,即具有时效性。随着破解手段以
及计算速度的逐渐增强,这些安全措施在足够长的时间后就会失效。因此本
发明提出了时效性安全管理模型。这个模型的核心思想是对于AGENT访问
者设置一定的访问时效,只有在访问时效内所进行的访问才被允许,超过访
问时效的请求都会被拒绝。其工作过程如图6所示。
具体地说,如图6所示,通过配置工具如网管、命令行等进行时效配置
和访问控制配置。将设定的时效配置放入时效配置库(TCD)中,将设定的
访问控制配置放入访问控制配置库(ACD)中。所设定的时效配置和访问控
制配置共同构成了访问控制的时效规则。
时效配置主要指配置时间段规则,可配置的时间段规则有:
一天内的一段时间ΔT;
一周中的一天Dayofweek;
起始日期StartDay;
结束日期EndDay
通过下面的组合规则可以实现相关时间段规则(其中“[]”表示其中的
内容为可选项):
ΔT[Dayofweek][StartDay][EndDay]
例如时效配置为ΔT表示每天的一段时间ΔT;而ΔT StartDay EndDay表示
从StartDay到EndDay这段日期内的每天的一段时间ΔT。
当有SNMP请求报文输入时,AGENT提取时效控制元(包括IP地址、团
体名(仅对SNMPv1和SNMPv2c)、用户名、组名等)。将提取的时效控制
元与上述访问控制时效规则进行匹配,如果匹配失败,则拒绝访问请求。反
之,如果匹配成功,则允许访问请求。
访问控制主要是将时效配置在TCD中的时效规则应用于已有的SNMP
配置内容,形成具有一定时效效应的配置项。例如时效配置规则T-Rule定义
如下:
T-Rule:ΔT StartDay EndDay
通过将T-Rule与SNMPv3用户配置进行绑定,形成只在T-Rule时间规则
内有效的SNMPv3。需要说明的是,在此只是例举SNMPv3说明时效性管理
的应用,实际上对于SNMP的其他配置都可以实施这种管理)用户,这样就
保证了SNMPv3用户活动的时效性,从而加强了AGENT的安全性。