cellspacing="0" cellpadding="0" width="100%" border="0">
简单网络管理协议(SNMP:Simple Network Management Protocol)是由互联网工程任务组(IETF:Internet Engineering Task Force )定义的一套网络管理协议。该协议基于简单网关监视协议(SGMP:Simple Gateway Monitor Protocol)。利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。 在IP网络管理中,主要是针对网络设备(路由器、交换机、防火墙)进行性能故障监测管理。为了了解SNMP协议,首先要了解OID和MIB的定义,这样才能更好的理解SNMP协议。 |
|
%20%20%20%20%20%20%20%20
%20%20%20%20
OID
|
|
一个OID是代表一个具体含义的变量,它的格式为用"."分割的数字,例如1.3.6.1.2.1.1.1就是一个OID,代表设备系统描述。向设备发送对1.3.6.1.2.1.1.0这个变量的SNMP请求,就可以得到这个设备的描述信息。
|
管理信息库MIB
|
|
IETF规定的管理信息库MIB中定义了可访问的网络设备及其属性,由对象识别符(OID:Object%20Identifier)唯一指定。MIB是一个树形结构,SNMP协议消息通过遍历MIB树形目录中的节点来访问网络中的设备。下图是MIB库的一个简单例子:
MIB库实际上就OID的树形集合,定义了每个OID代表的具体含义,OID分为2种变量:简单变量和表变量。简单变量类似上面讲过的1.3.6.1.2.1.1.1,这个变量就是个简单变量,在具体发送SNMP请求的时候后面就补上一个".0"。
表变量的意思是该变量会有多个实例。例如交换机接口带宽,这个变量的OID是1.3.6.1.2.1.2.2.1.5,一个交换机通常会有多个接口,每个具体请求就会补上这个接口的索引,例如1.3.6.1.2.1.2.2.1.5.1代表1号接口的带宽。下图是一个交换机的接口列表。
MIB分为公有MIB和私有MIB,公有MIB-2是1990年定义的,所有设备厂商都支持该MIB库定义的OID变量,每个厂商还可以补充自己的MIB库,这就是私有MIB,例如CISCO的私有MIB是1.3.6.4.1.9开始,该节点下的所有子变量都是CISCO自己定义的。9是CISCO申请唯一厂商编号。
|
|
SNMP原理
|
|
SNMP采用了Client/Server模型的特殊形式:代理/管理站模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP从代理负责回答SNMP管理工作站(主代理)关于MIB定义信息的各种查询。SNMP发送的请求是UDP请求,UDP请求是无连接、轻量级、非安全的请求,所以一般会重试3次保证代理端收到。
|
SNMP 消息类型
|
|
Get%20这是一个请求消息。SNMP%20管理系统使用%20Get%20消息在%20SNMP%20代理上请求有关%20MIB%20条目的信息。 Getnext请求消息的一个类型,可用于浏览代理对象的整个MIB树。 Getbulk%20请求的一个类型,它指定代理在消息大小限制的范围内尽可能多地传输数据。 Set%20它用于将更新的%20MIB%20值发送和分配到代理。 Notify%20(或%20Trap)这是一个未经请求的消息,当代理检测到在受管理主机本地出现特定的事件类型时,代理将向%20SNMP%20管理系统发送此消息。 SNMP%20事件(或陷阱)是在未经请求的情况下发送到筛选事件的管理站的,因此,会影响网络流量。
|
SNMP版本
|
|
目前SNMP经过10几年的发展,已经有三个版本,V1、V2、V3。三个版本的区别主要在安全机制上。 1.SNMPv1的安全机制 SNMPv1仅仅提供了有限的安全性,即团体的概念。 团体是一个在代理上定义的局部概念。一个代理可以定义若干个团体,每个团体使用唯一的团体名。而每个SNMP团体是一个在SNMP代理和多个SNMP管理者之间定义的认证、访问控制和转换代理的关系。%20 在每条SNMPv1信息中都包括community字段,在该域中填入团体名,团体名起密码的作用。%20SNMPv1假设,如果发送者知道这个密码,就认为该信息通过了认证,是可靠的。%20 一条已通过认证的信息对MIB有何访问权限主要通过访问控制来实现。代理为每一个团体定义了一个SNMPv1团体框架文件,该框架文件包括两部分: ·MIB视域:%20MIB的一个对象子集,每个团体可以定义不同的MIB视域,一个视域中的对象集不必属于MIB的单个子树;%20 ·SNMP访问模式:集合(只读、读写)的一个元素,每个团体只定义一个访问模式。%20 SNMP团体和SNMP团体框架文件的结合就成为SNMPv1%20访问策略。一个通过了认证的信息必然指定了一个团体,那么它就有自己相应的团体框架文件,且只能对该框架文件中MIB视域的指定对象进行规定的操作(只读或读写)。 2.%20SNMPv2的安全机制 SNMPv2具有支持分布式网络管理,扩展数据类型,可以实现大量数据的同时传输,丰富故障处理能力,增加集合处理功能,加强数据定义语言等特点。 此外,%20SNMPv2还引入了"上下文(context)"的概念。上下文是一个可被SNMPv2实体访问的被管理对象资源的集合,分为本地上下文和远程上下文:本地上下文被标识为一个MIB视域,远程上下文被标识为一个转换代理关系。%20 使用了上下文的访问控制策略由以下4个元素组成:%20 ·目标:SNMP参加者,它按主体方的请求执行管理操作;%20 ·主体:SNMP参加者,它请求目标方执行管理操作;%20 ·资源:管理操作在其上执行的管理信息,它可表示为一个本地MIB视域或一个代理关系,这一项被称为一个上下文; ·权限:对于一个特定的上下文可允许的操作,这些操作用可允许的协议数据单元定义,由目标代表主体执行。%20 但是,SNMPv2并没有完全实现预期的目标,尤其是安全性能没有得到提高,如:身份验证(如用户初始接入时的身份验证、信息完整性的分析、重复操作的预防)、加密、授权和访问控制、适当的远程安全配置和管理能力等都没有实现。1996年发布的SNMPv2c是%20SNMPv2的修改版本,虽然功能增强了,但是安全性能仍没有得到改善,而是继续使用SNMPv1的基于明文密钥的身份验证方式。 3.SNMPv3的安全机制 IETF%20SNMPv3工作组于1998年1月提出了互联网建议RFC%202271~2275,正式形成SNMPv3。这一系列文件定义了包含SNMPv1,SNMPv2所有功能在内的体系框架及包含验证服务和加密服务在内的全新的安全机制,同时还规定了一套专门的网络安全和访问控制规则。可以说,SNMPv3是在SNMPv2基础之上增加了安全和管理机制。RFC%202271定义的SNMPv3体系结构体现了模块化的设计思想,可以简单地实现功能的增加和修改。其特点主要有:%20 ·适应性强:适用于多种操作环境,既可以管理最简单的网络,实现基本的管理功能,又能够提供强大的网络管理功能,满足复杂网络的管理需求; ·扩充性好:可以根据需要增加模块; ·安全性好:具有多种安全处理模块。%20 SNMPv3主要有3个模块:信息处理和控制模块、本地处理模块和用户安全模块。 1 信息处理和控制模块 信息处理和控制模块在RFC%202272中定义,负责信息的产生和分析,并判断信息在传输过程中是否要经过代理服务器等。 2 本地处理模块%20 本地处理模块的主要功能是进行访问控制,处理打包的数据和中断。访问控制是指通过设置代理的有关信息?使不同管理站的管理进程在访问代理时具有不同的权限,在协议数据单元一级完成。常用的控制策略有两种:限定管理站可以向代理发出的命令或确定管理站可以访问代理MIB的具体部分。访问控制的策略必须预先设定。SNMPv3通过使用带有不同参数的原语来灵活确定访问控制方式。%20 3 用户安全模块%20 与SNMPv1和SNMPv2相比,SNMPv3增加了3个新的安全机制:身份验证,加密和访问控制。其中,访问控制功能由本地处理模块完成,而身份验证和数据保密服务则由用户安全模块提供。身份验证是指代理(管理站)接到信息时必须首先确认信息是否来自授权的管理站(代理),以及信息在传输过程中是否改变。这个功能的实现要求管理站和代理必须共享同一密钥。管理站使用密钥计算验证码(它是信息的函数),然后将其加入信息中,而代理则使用同一密钥从接收的信息中提取出验证码,从而得到信息。加密的过程与身份验证类似,也需要管理站和代理共享同一密钥来实现信息的加密和解密。%20 SNMPv3使用私钥(private%20key)和验证密钥(authentication%20key)来实现身份验证和加密功能。