SNMP的安全隐患及对策

简单网络管理协议SNMP主要针对TCP/IP网络提出,和WWW、SMTP和FTP一样,它工作于TCP/IP模型的应用层。随着Internet的迅速发展,SNMP也成为事实上的网络管理协议,在互联网骨干设备和绝大多数厂商的网络产品中得到广泛采用。这既取决于TCP/IP 协议的主导地位,也决定于SNMP协议自身的简单易行。

最近,计算机紧急反应小组协调中心(CERT/CC)指出,在许多产品的SNMPv1实施中都存在安全隐患。该报告主要根据挪威Oulu大学的安全编程小组(OUSPG)的测试结果提出。OUSPG通过将特定测试集运用于多种厂商的相关产品,发现SNMP代理和SNMP管理站在处理Trap消息和其他请求消息方面存在安全隐患,可能会引发服务中断、DoS攻击或非法获取设备访问权限。

鉴于目前互联网络中主要使用SNMPv1协议对网络设备进行网上管理和监控,一般网络产品(如路由器、交换机、网桥、服务器、防火墙、远程访问服务器、打印服务器和工作站等)都提供SNMPv1功能,许多“可网管”的网络设备都包含SNMP代理。所以,CERT/CC报告的影响面广泛,所列出的近300家厂商名单中,有许多已给出了及时反馈。有鉴于此,网络规划和管理人员有必要采取相应措施,正确配置网络,使网络安全风险趋于最小。

一、 snmp的工作机制

形成SNMPv1安全隐患的部分根源在协议本身,因此我们有必要了解一下其工作机制。

1.代理和管理站的模型

简单网络管理系统分2种角色:SNMP管理站和SNMP代理。代理是实际网络设备中用来实现SNMP功能的部分。代理在UDP的161端口接收NMS的读写请求消息,管理站在UDP的162端口接收代理的事件通告消息。所以,一旦获取设备的访问权限,就可以访问设备信息、改写和配置设备参数。由于采用UDP协议,不需要在代理和管理站之间保持连接。

2.SNMP的消息种类

SNMP只提供3种基本操作:获取网络设备信息(Get: 读操作)、设置网络设备参数值(Set: 写操作)和事件报告(Trap: 陷阱操作)。有5种协议数据单元(即消息)类型: Get-request、Get-Next-Request、Get-Response、Set-Request和Trap。其中,Get-request和Get-Next-Request由管理工作站发给代理,请求检索信息,代理以Get-Response响应它; 管理工作站使用Set-Request可以远程设置代理所在的网络设备的参数。这些都通过读或写管理信息库实现。在5种类型中,只有Trap是代理发起的(非请求信息),用于向管理工作站报告特定的事件,如设备的启动、关闭和其他变化等。

3.SNMP的简单认证

SNMPv1不支持加密和授权,通过包含在SNMP中的团体名提供简单的认证,其作用类似口令,SNMP代理检查消息中的团体名字段的值,符合预定值时接收和处理该消息。依据SNMPv1协议规定,大多数网络产品出厂时设定的只读操作的团体名缺省值为“Public”,读写操作的团体名缺省值为“Private”,许多情况下,网络管理人员从未修改过该值。

二、 SNMP的安全隐患

OUSPG的测试集中包含了53000个测试实例,测试发现SNMP管理工作站在解析和处理Trap消息及SNMP代理在处理请求消息时具有某些缺陷,主要原因是对SNMP消息的检查不充分,当数据包中含有异常的字段值或过长的对象识别时,引起内存耗尽、堆栈耗尽以及缓冲区溢出等致命错误,从而导致修改目标系统和执行其他代码。后果因具体设备而异,比如会形成拒绝服务攻击条件、设备不能正常工作、产生大量日志记录、系统崩溃或挂起和设备自动重启动等等。

团体名作为惟一的SNMP认证手段,也是薄弱环节之一。例如利用知名的缺省值“Public”或“Private”以及空白团体名常常能获取设备的访问权,或利用嵌入SNMPv1消息的团体名在网上以明码传输,及利用Sniff软件获取团体名。此外,还有些攻击可以绕过这一认证。

由于SNMP主要采用UDP传输,很容易进行IP源地址假冒,所以,仅仅使用访问控制列表有时也不足以防范。

大多数SNMP设备接收来自网络广播地址的SNMP消息,攻击者甚至可以不必知道目标设备的IP地址,通过发送广播SNMP数据包达到目的。

三、 建议措施

由于SNMPv1实施的广泛性,该问题涉及很多网络产品(从高端到低端),建议网络规划和管理人员检查那些“可网管的”设备,具体采取以下措施。

1.关注所用产品的改进信息,及时增打补丁,升级版本

CERT/CC的咨询报告公布后,一些知名网络厂商已做出反馈,对各自的SNMP实现方案进行了全面测试,并公布了测试结果和具体建议,用户应跟踪最新动态。

2.在不必要的情况下,关闭SNMP服务

有些中、小企业的网络较少通过网络进行网管,多采用串口和控制台对网络设备进行静态配置,可以考虑关闭SNMP功能。例如,对Cisco产品,可使用命令“No Snmp-Server”关闭,用“Show Snmp”查看,然后确认:“%SNMP agent not enabled”。

此外,OUSPG发现,个别产品即使在关闭了SNMP服务之后,仍存在DoS隐患,因此,建议和访问控制措施结合使用。

3.对进入网络的SNMP流量进行过滤

正常情况下,大多数网络对外提供访问的主要是一些服务器(如Web服务器和FTP服务器等),不可能有外部主机发起的对内部网络设备的访问,可以过滤外部主机发起的针对内部服务器和网络设备的进入流量。尤其是SNMP数据包,用户可结合IP地址和传输端口(服务类型)进行过滤。

SNMP服务常使用的端口是161/UDP和162/UDP端口,有可能用到的端口有:SNMP 161/TCP、SNMP 162/TCP、SNMP 1993/TCP、1993/UDP、Smux 199/UDP以及Smux 199/ TCP SNMP Unix Multiplexer。

由于SNMP监控程序常常绑定到所有网卡地址上,还要注意过滤来自广播地址、子网广播地址以及内部返回地址的SNMP流量。

4.对内部的未授权主机的SNMP访问控制

正常情况下,只有NMS有权发起SNMP请求,因此,可以配置SNMP代理,通过访问控制,将来自未授权主机的SNMP请求信息阻挡掉。但如前所述,该方法对UDP的源IP地址欺骗不能奏效。另外,此配置可能影响网络性能,因此需要兼顾考虑。

最后一个措施是将SNMP流量限制在特定的VLAN上。

四、 厂商的响应

CERT/CC在报告中附加了近300家厂商的名单,指出该隐患可能影响到这些厂家的产品,目前包括Cisco、3Com、HP、D-link和Nortel Networks等在内的许多厂商已经做出积极的响应。

Cisco指出,所有运行以前版本IOS的网络设备都可能受到影响,建议及时升级或关闭SNMP服务、删除缺省团体名、采取边界过滤和访问控制等措施。

HP公布了所有影响到的平台和可能的损害,建议对运行SNMPD的HP UX和OpenView产品及时打补丁和升级,并公布了其交换机、打印服务器及网络管理平台等产品的补丁程序和升级版本。

作为为数不多的宣布其产品不受影响的厂商D-Link在报告中指出,经过对其产品DES-3226、DES-3326、DES-3624i和DES-6000测试后认定,这些产品不受SNMP协议本身安全隐患的影响。由于所有支持SNMP代理功能的产品使用同样的代码基,因此,可以推论,所有其他产品也不存在SNMP安全问题。不过,D-Link仍将继续对其SNMP代理的产品进行评估和调查,并将公布全面测试结果。

国内主要网络厂商的产品也提供SNMP功能,但尚未见到反馈信息,在CERT/CC的列表中显示为Unkown状态。

为方便用户跟踪,附表列出部分常用网络产品的SNMP安全使用信息和补丁发布站点。

SNMPv1的安全机制过于薄弱,IETF于1993年提出了SNMPv2,增强了安全机制和其他功能,该版本支持认证和加密。1998年推出SNMPv3,目前最新的NMPv3文件是1999年的RFC2571,但无论SNMPv2还是SNMPv3,都停留在草案标准上,只有SNMPv1成为正式Internet标准(RFC1157)。

值得注意的是,虽然OUSPG仅对SNMPv1进行了测试,有些隐患在SNMPv2和SNMPv3的实施中仍可能存在。 

你可能感兴趣的:(snmp)