首页 理论教育 深入了解简单网络管理协议 (SNMP)

深入了解简单网络管理协议 (SNMP)

时间:2023-07-01 理论教育 版权反馈
【摘要】:SNMP的前身是简单网关监控协议,用来对通信线路进行管理。

深入了解简单网络管理协议 (SNMP)

7.1.3.1 Internet网络管理模型

在Internet网络中,“网络元素”被用来表示任何一种接受管理的网络资源。“网络元素”与前面所说的“管理对象”的含义是类似的。

在Internet的网络管理模型中,每个网络元素上都有一个负责执行管理任务的管理代理(Agent),整个网络有多个对网络实施集中式管理的管理进程。那么,网络管理标准就用来定义网络控制中心与各管理代理之间的通信。Internet的简单网络管理模型如图7-1所示。被管理的网络实体与它的管理代理一起构成完整的网络元素。

图7-1 Internet的网络管理模型图

Internet的网络管理模型中还引入了外部代理(Proxy Agent)的概念。它与管理代理有一些不同。管理代理仅仅是网络管理系统中管理动作的执行机构,管理代理是网络元素的一部分;而外部代理则是指在网络元素外附加的、专门为那些不符合管理协议标准的网络元素而设置的代理。

外部代理完成管理协议的转换与管理信息的过滤操作。当一个网络资源不能与网络管理进程直接交换管理信息时,就需要使用外部代理。例如,普通的调制器不支持复杂的网络管理协议,因此无法与管理进程直接交换管理信息。这时,管理机构对该类网络设备管理信息的通信就需要经过外部代理转送。外部代理一方面要利用管理协议与管理机构通信,另一方面要与被管理的网络设备通信,当对网络资源进行管理时,需要为它选择相应的外部代理。一个外部代理可以管理多个网络设备。

7.1.3.2 简单网络管理协议SNMP

1.SNMP简介

SNMP(Simple Network Management Protocol,简单网络管理协议)是专门设计用于在IP网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,它是一种应用层协议。SNMP的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMI和MIB体系结构,改进后的协议就是著名的SNMP。SNMP的目标是管理互联网Internet上众多厂家生产的软硬件平台,因此SNMP受Internet标准网络管理框架的影响也很大。现在SNMP已经出到第3个版本的协议,其功能较以前已经大大地加强和改进了。

图7-2为SNMP工作原理图。SNMP的体系结构是围绕着以下4个概念和目标进行设计的:保持管理代理(Agent)的软件成本尽可能低;最大限度地保持远程管理的功能,以便充分利用Internet的网络资源;体系结构必须有扩充的余地;保持SNMP的独立性,不依赖于具体的计算机、网关和网络传输协议。在最近的改进中,又加入了保证SNMP体系本身安全性的目标。

2.SNMP风险

SNMP开发于20世纪90年代早期,其目的是简化大型网络中设备管理和数据获取。许多与网络有关的软件包,如HP的OpenView和Nortel Networks的Optivity Network Management System,还有Multi Router Traffic Grapher(MRTG)之类的免费软件,都用SNMP服务来简化网络的管理和维护。

图7-2 SNMP工作原理图

由于SNMP的效果好,网络硬件厂商开始把SNMP加入到每一台设备中。今天,各种网络设备上都可以看到默认启用的SNMP服务,从交换机到路由器,从防火墙到网络打印机,无一例外。

仅仅是分布广泛还不足以造成威胁,问题是许多厂商安装的SNMP都采用了默认的通信字符串(例如密码),这些通信字符串是程序获取设备信息和修改配置必不可少的。采用默认通信字符串的好处是网络上的软件可以直接访问设备,无需经过复杂的配置。

通信字符串主要包含两类命令:GET命令、SET命令。GET命令从设备读取数据,这些数据通常是操作参数,例如连接状态、接口名称等。SET命令允许设置设备的某些参数,这类功能一般有限制,例如关闭某个网络接口、修改路由器参数等功能。但很显然,GET、SET命令都可能被用于拒绝服务攻击(DoS)和恶意修改网络参数。

最常见的默认通信字符串是Public(只读)和Private(读/写),除此之外还有许多厂商私有的默认通信字符串。几乎所有运行SNMP的网络设备上,都可以找到某种形式的默认通信字符串。

SNMP 2.0和SNMP 1.0的安全机制比较脆弱,通信不加密,所有通信字符串和数据都以明文形式发送。攻击者一旦捕获了网络通信,就可以利用各种嗅探工具直接获取通信字符串,即使用户改变了通信字符串的默认值也无济于事。

近几年出现的SNMP 3.0解决了一部分问题。为保护通信字符串,SNMP 3.0使用DES(Data Encryption Standard)算法加密数据通信;另外,SNMP 3.0还能够用MD5和SHA(Secure Hash Algorithm)技术验证节点的标识符,从而防止攻击者冒充管理节点的身份操作网络。

虽然SNMP 3.0出现已经有一段时间了,但目前还没有广泛应用。如果设备是2~3年前的产品,很可能根本不支持SNMP 3.0;甚至有些较新的设备也只有SNMP 2.0或SNMP 1.0。

即使设备已经支持SNMP 3.0,许多厂商使用的还是标准的通信字符串,这些字符串对黑客组织来说根本不是秘密。因此,虽然SNMP 3.0比以前的版本提供了更多的安全特性,如果配置不当,其实际效果仍旧有限。

要避免SNMP服务带来的安全风险,最彻底的办法是禁用SNMP。如果没有用SNMP来管理网络,那就没有必要运行它;如果不清楚是否有必要运行SNMP,很可能不需要。即使你打算以后使用SNMP,只要现在没有用,也应该先禁用SNMP,直到确实需要使用SNMP时才启用它。

下面列出了如何在常见的平台上禁用SNMP服务。

(1)Windows XP和Windows 2000。在XP和Win 2K中,右击“我的电脑”,选择“管理”。展开“服务和应用程序”、“服务”,从服务的清单中选择SNMP服务,停止该服务。然后打开服务的“属性”对话框,将启动类型改为“禁用”(按照微软的默认设置,Win 2K/XP默认不安装SNMP服务,但许多软件会自动安装该服务)。

(2)Windows NT 4.0。选择“开始”→“设置”,打开服务设置程序,在服务清单中选择SNMP服务,停止该服务,然后将它的启动类型该为禁用。

(3)Windows 9x。打开控制面板的网络设置程序,在“配置”页中,从已安装的组件清单中选择“Microsoft SNMP代理”,点击“删除”。检查“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices”和“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”注册键,确认不存在snmp.exe。

(4)Cisco Systems硬件。对于Cisco的网络硬件,执行“no SNMP-server”命令禁用SNMP服务。如果要检查SNMP是否关闭,可执行“show SNMP”命令。这些命令只适用于运行Cisco IOS的平台;对于非IOS的Cisco设备,请参考随机文档。

(5)HP硬件。对于所有使用JetDirect卡(绝大部分HP网络打印机都使用它)的HP网络设备,用Telnet连接到JetDirect卡的IP地址,然后执行下面的命令:

SNMP-config:()

quit

这些命令将关闭设备的SNMP服务。但必须注意的是,禁用SNMP服务会影响服务的发现操作以及利用SNMP获取设备状态的端口监视机制。

(6)Red Hat Linux。对于Red Hat Linux,可以用Linuxconf工具从自动启动的服务清单中删除SNMP,或者直接从/etc/services文件删除启动SNMP的行。对于其他Linux系统,操作方法应该也相似。

如果某些设备确实有必要运行SNMP,则必须保障这些设备的安全。首先要做的是确定哪些设备正在运行SNMP服务。除非定期对整个网络进行端口扫描,全面掌握各台机器、设备上运行的服务,否则很有可能遗漏1~2个SNMP服务。特别需要注意的是,网络交换机、打印机之类的设备同样也会运行SNMP服务。确定SNMP服务的运行情况后,需进一步采取保障服务安全的措施有以下几种:

(1)加载SNMP服务的补丁。安装SNMP服务的补丁,将SNMP服务升级到2.0或更高的版本。联系设备的制造商,了解有关安全漏洞和升级补丁的情况。

(2)保护SNMP通信字符串。一个很重要的保护措施是修改所有默认的通信字符串。根据设备文档的说明,逐一检查、修改各个标准的、非标准的通信字符串,不要遗漏任何一项,必要时可以联系制造商获取详细的说明。

(3)过滤SNMP。这种保护措施是在网络边界上过滤SNMP通信和请求,即在防火墙或边界路由器上,阻塞SNMP请求使用的端口。标准的SNMP服务使用161和162端口,厂商私有的实现一般使用199、391、705和1993端口。禁用这些端口通信后,外部网络访问内部网络的能力就受到了限制;另外,在内部网络的路由器上,应该编写一个ACL,只允许某个特定的可信任的SNMP管理系统操作SNMP。例如,下面的ACL只允许来自(或者走向)SNMP管理系统的SNMP通信,限制网络上的所有其他SNMP通信,即(www.xing528.com)

这个ACL的第一行定义了可信任管理系统(w.x.y)。将ACL应用到所有网络接口的命令为

总之,SNMP的实现代表着网络管理的一大进步,现在它仍是高效管理大型网络的有力工具。然而,SNMP的早期版本缺乏安全性,最新的版本同样也存在问题。就像网络上运行的其他服务一样,SNMP服务的安全性也是不可忽视的。不要盲目地肯定网络上没有运行SNMP服务,它有可能运行在某个设备上。网络服务存在很多安全问题,所以最好关闭SNMP之类并非必需的服务——尽量设法保障其安全。

3.windows 2003中配置SNMP服务的网络安全

如何在Windows Server 2003中为“简单网络管理协议”(SNMP)服务配置网络安全性呢?

SNMP服务起着代理的作用,它会收集可以向SNMP管理站或控制台报告的信息。使用SNMP服务来收集数据,并且在整个公司网络范围内管理基于Windows Server 2003、Microsoft Windows XP和Microsoft Windows 2000的计算机。

通常,保护SNMP代理与SNMP管理站之间的通信的方法是:给这些代理和管理站指定一个共享的社区名称。当SNMP管理站向SNMP服务发送查询时,请求方的社区名称就会与代理的社区名称进行比较。如果匹配,则表明SNMP管理站已通过身份验证。如果不匹配,则表明SNMP代理认为该请求是“失败访问”尝试,并且可能会发送一条SNMP陷阱消息。

SNMP消息是以明文形式发送的。这些明文消息很容易被“Microsoft网络监视器”这样的网络分析程序截取并解码。未经授权的人员可以捕获社区名称,以获取有关网络资源的重要信息。

“IP安全协议”(IP Sec)可用来保护SNMP通信。可以创建保护TCP和UDP端口161和162上的通信的IP Sec策略,以保护SNMP事务。

要创建保护SNMP消息的IP Sec策略,先要创建筛选器列表。步骤如下:

单击“开始”,指向“管理工具”,然后单击“本地安全策略”。展开“安全设置”,右键单击“本地计算机上的IP安全策略”,然后单击“管理IP筛选器列表和筛选器操作”。单击“管理IP筛选器列表”选项卡,然后单击“添加”。在IP筛选器列表对话框中,键入“SNMP消息(161/162)”(在名称框中),然后键入“TCP和UDP端口161筛选器”(在说明框中)。

单击使用“添加向导复选框,将其清除,然后单击“添加”。

在“源地址”框(位于显示的IP筛选器属性对话框的地址选项卡上)中,单击“任意IP地址”。在“目标地址”框中,单击“我的IP地址”。单击“镜像、匹配具有正好相反的源和目标地址的数据包”复选框,将其选中。

单击“协议选项卡”。在“选择协议类型”框中,选择“UDP”。在“设置IP协议端口”框中,选择“从此端口”,然后在框中键入“161”。单击“到此端口”,然后在框中键入“161”。单击“确定”。

在IP筛选器列表对话框中,选择“添加”。

在“源地址”框(位于显示的IP筛选器属性对话框的地址选项卡上)中,单击“任意IP地址”。在“目标地址”框中,单击“我的IP地址”。选中“镜像、匹配具有正好相反的源和目标地址的数据包”复选框。

单击“协议选项卡”。在“选择协议类型”框中,单击“TCP”。在“设置IP协议”框中,单击“从此端口”,然后在框中键入“161”。单击“到此端口”,然后在框中键入“161”。单击“确定”。

在IP筛选器列表对话框中,单击“添加”。

在“源地址”框(位于显示的IP筛选器属性对话框的地址选项卡上)中,单击“任意IP地址”。在“目标地址”框中,单击“我的IP地址”。单击“镜像,匹配具有正好相反的源和目标地址的数据包”复选框,将其选中。

单击“协议选项卡”。在“选择协议类型”框中,单击“UDP”。在“设置IP协议”框中,单击“从此端口”,然后在框中键入“162”。单击“到此端口”,然后在框中键入“162”。单击“确定”,在IP筛选器列表对话框中,单击“添加”。

在“源地址”框(位于显示的IP筛选器属性对话框的地址选项卡上)中,单击“任意IP地址”。在“目标地址”框中,单击“我的IP地址”。单击“镜像、匹配具有正好相反的源和目标地址的数据包”复选框,将其选中。

单击“协议选项卡”。在“选择协议类型”框中,单击“TCP”。在“设置IP协议”框中,单击“从此端口”,然后在框中键入“162”。单击“到此端口”,然后在框中键入“162”。单击“确定”。

在IP筛选器列表对话框中单击“确定”,然后单击“管理IP筛选器列表和筛选器操作”对话框中的确定。

其次要创建IPSec策略来对SNMP通信强制实施IPSec,请按以下步骤操作:

右键单击左窗格中“本地计算机上的IP安全策略”,然后单击创建IP安全策略。“IP安全策略向导”启动。

单击下一步。在“IP安全策略名称”页上的名称框中键入Secure SNMP。在说明框中,键入Force IPSec for SNMP Communications,然后单击“下一步”。

单击“激活默认响应规则”复选框,将其清除,然后单击“下一步”。在“正在完成IP安全策略向导”页上,确认“编辑属性”复选框已被选中,然后单击“完成”。

在安全“NMP属性”对话框中,单击使用“添加向导”复选框,将其清除,然后单击“添加”。

单击IP“筛选器列表”选项卡,然后单击“SNMP消息(161/162)”。单击筛选器操作选项卡,然后单击需要安全。单击身份验证方法选项卡。默认的身份验证方法为Kerberos。如果您需要另一种身份验证方法,则请单击“添加”。在新身份验证方法属性对话框中,从下面的列表中选择要使用的身份验证方法,然后单击“确定”。

ActiveDirectory默认值(KerberosV5协议)

使用此字符串(预共享密钥)

在新规则属性对话框中,单击“应用”,然后单击“确定”。

在SNMP“属性”对话框中,确认SNMP“消息(161/162)”复选框已被选中,然后单击“确定”。

在“本地安全设置”控制台的右窗格中,右键单击“安全SNMP规则”,然后单击“确定”。

在所有运行SNMP服务的基于Windows的计算机上完成此过程。SNMP管理站上也必须配置此IPSec策略。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈