SNMP的前身是简单网管监控协议用来对通信线路进行管理对后人们对SGMP进行了很大的修改特别是加入了符合INTERNET定义的SMI和MIB;体系结构改进后的协议就是著名的SNMP。SNMP的目标是管理互联网INTERNET上众多厂商生产的软硬件平台,因此SNMP收到INTERNET标准网络管理框架的应先也很大。现在SNMP已经出到第三个版本的协议,其功能教以前已经大大地加强了和改进了。SNMP的体系结构是围绕一下四个概念和目标进行设计的保持管理代理(AGENT)的软件成本尽可能低;最大限度地保持远程管理功能,以便充分利用INTERNET的网络资源;体系结构必须有扩充的余地;保持SNMP的独立性,不依赖于具体计算、网管和网络传输协议。在最近的改进中,又加入了保证SNMP体系本身系统安全性的目标。SNMP风险接入INTERNET的网络面临许多风险,WEB服务器可能面临攻击,邮件服务器的安全也令人担忧。但除此之外,网络上可能还存在一些隐性的漏洞。大多数网络总有一些设备运行着SNMP服务,许多时候这些SNMP服务是不必要的,但却没有引起网络管理员的重视。根据SANS协会的报告,对于接入INTERNET的主机,SNMP是威胁安全的十大首要因素之一;同时,SNMP还是INTERNET主机上最常见的服务之一。特别的,SNMP服务通常在位于网络边缘的设备(防火墙保护权之前爱的设备)上运行,进一步加剧了SNMP带来的风险。这一切听起来出人意料但其实事情不应该是这样的。一、背景知识SNMP开发与九十年代早期,其目的是简化大型网络中设备的管理和数据的获取。许多与网络有关的软件包,如HP的OPENVIEW和NORTELNETWORKS的OPTIVITYNETWORKMANAGEMENTSYSTEM,还有MULTIROUTERTRAFFICGRAPHER(MRTG)之类的免费软件,都用SNMP服务来简化网络管理和维护。由于SNMP效果实在太好了,所以网络硬件厂商开始把SNMP加入到它们制造的每一台设备。今天,各种网络设备上都可以看到默认用的SNMP服务,从交换机到路由器,从防火墙到网络打印机,无一例外。仅仅是分布广泛还不足以造成威胁,问题是许多厂商安装的SNMP都采用了默认的通信字符串(例如密码),这些通信字符串是程序获取设备信息和修改必不可少的。采用默认通信字符串的好处是网络上的软件可以直接访问设备,无需通过复杂的配置。通信字符串主要包含两类命令:GET命令、SET命令。GET命令从设备读取数据,这些数据通常是操作参数,例如连接状态、接口名称等。SET命令允许设置设备某些参数。这类功能一般有限制,例如关闭某个网络接口、修改路由器参数等功能。但很显然,GET\SET命令都可能被利用与拒绝服务攻击和恶意修改网络参数。SNMP2.0和SNMP1.0的安全机制比较脆弱,通信不加密,所有通信字符串和数据都以明文形式发送。攻击者一旦不活了网络通信,就可以利用各种嗅探工具直接获取通信字符串,即是哟过户改变了通信字符串默认值也无济于事。近几年才出现的SNMP3.0解决了一部分问题,为保护通信字符串,SNMP3.0使用DES算法加密数据通信;另外,SNMP3.0还能够用MD5和SHA技术技术验证节点的标识符,从而防止攻击者冒充管理节点的身份操作网络虽然SNMP3.0出现已经有一段时间了,但目前还没有广泛应用。如果设备是2、3年前的产品,很可能根本不支持SNMP3.0,甚至有些交心的设备也只有SNMP2.0或SNMP1.0。即是设备已经支持SNMP3.0,许多厂商使用的还是标准的通信字符串,这些字符串对黑客组织来说根本不是秘密。因此,瑞然SNMP3.0比以前的版本提供了更多安全特性,如果配置不当,其实际效果仍旧有限。二、禁用SNMP要避免SNMP服务带来的安全风险,最彻底的办法是禁用SNMP,如果你没有用SNMP来管理网络,那就没有必要运行它,如果你不清楚是否有必要运行SNMP,很可能实际上不需要。即是你打算以后使用SNMP,只要现在没有用,也应该先禁用SNMP,知道确实需要使用SNMP才启用它。SNMP数据SNMP规定了5种协议数据单元PDU也就是SNMP报文,用来在管理进程和代理之间的交换。GET-REQUEST操作:从代理进程处提取一个或多个参数值GET-REQUEST操作:设置蒂埃利进程的一个或多个参数值GET-RESPONSE操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的影响操作。TRAP操作:代理进程主动发出报文,同志管理进程有某些事情发生。公共SNMP首部版本写入版本字段的是版本号减一,对于SNMP(即SNMPV1)应写入0共同体共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是六个自负PUBLICPDU类型根据PDU类型,填入0~4中的一个数字。PDU类型名称0get-request1Get-next-request2Get-response3Set-request4trapGet/set首部请求标识符(requestID)这是由管理进程设置的一个整数值。代理进程在发送get-request报文时也要反悔次请求标识符。管理进程可同时想许多代理发出GET报文,这些报文都使用UDP传送,先发送的有可能后达到。设置了请求标识符可管理进程能够识别反悔响应报文对于哪一个请求报文。管理信息库管理信息库MIB指明了网络元素所维持的变量(即能够被管理进程查询和设置的信息)。MIB给出了一个网络中所有可能的被管理对象的集合的数据结构,SNMP的管理信息库采用的域名系统DNS相似的树形结构,它的根在最上面,根没有名字。SNMP共同体简单网络管理协议用共同体来定义一个代理者和一组管理者之间的认证、访问控制和代管关系。每个共同体被赋予一个在被管系统内部唯一的共同体名,该共同体名要提供给共同体内的所有管理站,以便它们在操作中应用。代理者可以与多个管理站建立多个共同体,同一个管理站可以出现在不同的共同体中。由于共同体是在代理者处本地定义的,因此不同的代理者处可能会定义相同的共同体名。共同体名相同并不意味着共同体有什么相似之处,因此,管理者必须将共同体名与代理者联系起来加以应用。通常情况下使用,哦人的共同体。也可以配置使用特殊共同体。默认共同体——系统中大多数设备使用的共同体,通常使用默认值,也可以根据实际情况修改特殊共同体——与默认共同体参数不同的共同体,需要手动添加若要实现系统所有对设备的管理功能,则必须要搜索所有的SNMP共同体。网络中使用默认配置的共同体将被整个管理系统自动获得:对于没有使用默认配置的特殊共同体,系统还提供添加的功能,其中,系统也可以对搜索共同体试试采用的默认共同体的读端口为161,制度名为public。共同体配置步骤: