尽管SNMP早已制订,其安全漏洞在其最近的版本中才得以解决。
如果你还没有采用SNMPv3,你应该考虑升级,因为如果不这样的话,可能会导致机构的基础设施受到严重的攻击。
在1988年最初的SNMP中存在不可靠的认证和接入控制等安全问题。这些问题在1993 发布的SNMPv2中得到了部分解决。但是,SNMPv2中增加的安全功能过于麻烦,因而管理员往往并不使用,所以在SNMPv2c中被放弃了。目前的SNMPv3,在2002年3月被定为一项互联网标准,它充分更正了以前的安全问题,提供了增强的,对管理网络至关重要的安全功能。 数据挖掘研究院
问题多多的第一版和第二版采用被称为"community strings"的未加密的密码实现认证服务。明文从本质上是不安全的。它允许偷听者采用嗅探器(sniffer),获取SNMP的community string从而“变成”管理员。进而,偷听者可以进行任何SNMP允许的操作,包括控制网络设备。 数据挖掘研究院
SNMPv3在协议中增加了安全内容——其并不是作为先前版本的替代品,而是作为附加的功能设置。下图中显示了SNMPv3的安全报头与SNMPv1或SNMPv2原始数据单元(PDU)和IP/UDP报头的互通性。
SNMPv3的安全报头采用用户安全模式(USM),其提供具有机密性和完整性的网络管理通信。机密性通过采用数据加密标准(DES)来提供。尽管这一算法以脆弱性著称(由于它采用的是40位的密钥),但与明文community strings相比,它具有显著的优点。即使象DES这样的脆弱算法仍要协同攻击才能攻破,因此你至少可以防范偶然的偷听者。
完整性服务通过散列信息认证码算法与安全散列功能: MD5 或安全散列算法(SHA-1)之一相结合提供。采用hashes保证了SNMP设备可以知道信息在传输中没有被更改(或是由于偶然或者是被恶意更改)。需要记住的是,仍然有一些怀有恶意的人可以通过改变暗记文破坏加密通信的完整性和有效性,使得不能正确地解密。散列完整性提供了一种检测这种活动的方法。 数据挖掘研究院
SNMPv3的USM还允许基于用户的认证和接入控制。与以往SNMP采用两级“读”和“写”community string不同,管理员可以为每一个SNMP用户建立特别帐号,并根据这些用户帐号授予权限。例如,你可以给操作员监视设备状态的权限,但是将修改的权限保留给网络工程师。由于增加了用户行为的可靠性从而对系统的安全产生了重要的影响。它同时简化了将一个用户排除于系统之外的过程,而不需要再重新配置所有的SNMP设备。
但是,不是所有的网络设备都支持SNMPv3。如果你使用一些较老的设备,不支持这些安全功能,你可以采取以下两步。首先,联系供货商。在现有的售后支持合同中你可能可以得到支持SNMPv3的软件或固件升级。此外,如果你不能利用SNMPv3内置的安全功能,寻找一些其它的提供相似安全功能的附加软件。例如,你可以采用IPSec或其它加密技术以保证在设备之间的SNMP通信的安全性。在不支持SNMPv3的设备上很难(可能是不可能的)实现所有的SNMPv3的功能,但是有加密总会好些。
(e129)

