想要学好网络管理,那么你肯定要学好SNMP服务协议了。那么这是一个什么协议呢?简单说,就是一个网络管理协议,那么具体的概念以及安全等问题我们来详细讨论一下。SNMP服务又称简单网络管理协议,是为了解决Internet上的路由器管理问题而提出的。在Windows操作系统中起着代理的作用,它会收集可以向 SNMP管理站或控制台报告的信息。依靠使用SNMP服务来让系统收集数据,并且在整个网络范围内管理基于Windows 2000/XP/ 2003操作系统的计算机。
一般来说,SNMP消息是以明文形式发送的,而这些消息很容易被“Microsoft网络监视器”这样的网络分析程序截取并解码。未经授权的人可以捕获社区名称,以获取有关网络资源的重要信息。因此关于SNMP这样的服务必须要注意其安全才能有效的广泛使用。
要保护我们的SNMP不被非法行为所破坏,我们需要在系统上进行一系列的安全措施,例如“IP安全协议”用来保护SNMP通信。在系统上创建保护TCP和UDP端口161和162上的通信的IP Sec策略保护SNMP服务的安全。
步骤1:选择“开始→控制面板→管理工具→本地安全策略”,右键点击左栏“IP安全策略,在本地计算机”,选“管理IP筛选器列表和筛选器操作”。
步骤2:选“管理IP筛选器列表”然后单击“添加”按钮。在“IP筛选器列表”中的名称栏输入“161/162端口”,在“描述”框中输入 “161/162端口筛选器”。点击去除“添加向导”复选框,然后点“添加”按钮。在“源地址”框(位于显示的IP筛选器属性对话框的“寻址”选项卡上)中,选择“任何IP地址”。在“目标地址”区域中,选择“我的IP地址”,选择“镜像。需要选择匹配具有正好相反的源和目标地址的数据包”复选框。
步骤3:点“协议”选项卡,在“选择协议类型”选择“UDP”。在“设置IP协议端口”区域中,选择“从此端口”,输入161。单击“到此端口”,然后输入161,点击“确定”按钮,在“IP筛选器列表”对话框中,选择“添加”按钮。用同样的方法再次添加162的端口。
SNMP协议开发于九十年代早期,其目的是简化大型网络中设备的管理和数据的获取。许多与网络有关的软件包,如HP的OpenView和Nortel Networks的Optivity Network Management System,还有Multi Router Traffic Grapher(MRTG)之类的免费软件,都用SNMP服务来简化网络的管理和维护。
由于SNMP协议的效果实在太好了,所以网络硬件厂商开始把SNMP协议加入到它们制造的每一台设备。今天,各种网络设备上都可以看到默认启用的SNMP服务,从交换机到路由器,从防火墙到网络打印机,无一例外。
仅仅是分布广泛还不足以造成威胁,问题是许多厂商安装的SNMP协议都采用了默认的通信字符串(例如密码),这些通信字符串是程序获取设备信息和修改配置必不可少的。采用默认通信字符串的好处是网络上的软件可以直接访问设备,无需经过复杂的配置。
通信字符串主要包含两类命令:GET命令,SET命令。GET命令从设备读取数据,这些数据通常是操作参数,例如连接状态、接口名称等。SET命令允许设置设备的某些参数,这类功能一般有限制,例如关闭某个?缃涌凇⑿薷穆酚善鞑问?裙δ堋5?芟匀唬珿ET、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的详细说明,请参见http://www.ietf.org/rfc/rfc2570.txt。
虽然SNMP服务 3.0出现已经有一段时间了,但目前还没有广泛应用。如果设备是2、3年前的产品,很可能根本不支持SNMP 3.0;甚至有些较新的设备也只有SNMP 2.0或SNMP 1.0。
即使设备已经支持SNMP协议 3.0,许多厂商使用的还是标准的通信字符串,这些字符串对黑客组织来说根本不是秘密。因此,虽然SNMP协议 3.0比以前的版本提供了更多的安全特性,如果配置不当,其实际效果仍旧有限。