基于SNMP/MIB的网络数据获取系统设计与实现(一)
一,简单网络管理协议SNMP及相关理论介绍
1,简单网络管理协议SNMP
(1), 什么是网络管理
网络管理分为两类。第一类是网络应用程序、用户帐号(例如文件的使用)和存取权限(许可)的管理。它们都是与软件有关的网络管理问题。这里不作讨论。网络管理的第二类是由构成网络的硬件所组成。这一类包括工作站、服务器、网卡、路由器、网桥和集线器等等。通常情况下这些设备都离你所在的地方很远。正是由于这个原因,如果当设备有问题发生时网络管理员可以自动地被通知的话,那么一切事情都好办。但是你的路由器不会象你的用户那样,当有一个应用程序问题发生时就可以打电话通知你,而当路由器拥挤时它并不能够通知你。
为了解决这个问题,厂商们已经在一些设备中设立了网络管理的功能,这样你就可以远程地询问它们的状态,同样能够让它们在有一种特定类型的事件发生时能够向你发出警告。这些设备通常被称为"智能"设备。
网络管理通常被分为四类:
被管理节点(或设备):即你想要监视的设备
代理:用来跟踪被管理设备状态的特殊软件或固件(firware)
网络管理工作站:与在不同的被管理节点中的代理通信,并且显示这些代理状态的中心设备
网络管理协议:被网络管理工作站和大理用来交换信息的协议
当设计和构造网络管理的基础结构时,你需要记住下列两条网络管理的原则:
1.由于管理信息而带来的通信量不应明显的增加网络的通信量。
2.被管理设备上的协议代理不应明显得增加系统处理的额外开销,以致于该设备的主要功能都被削弱了。
(2),SNMP的背景
美国国防部设计了世界上头几个包交换网之一的ARPANET,在70年代,TCP/IP协议族正式被定为军方通信标准,随着此协议的广泛使用,网络管理成了一件大事。在80年代未和90年代初,网络迅速发展,许多子网数目的增多使监视网络活动成为一种必须。在网络管理的初期,对网络的管理停留在使用ICMP和PING的基础上,但是随着网络内主机数据的不断增多,这种简单的工具已经不可能完成网络管理的工作了。随着网络数目与网络内主机数目的日益增多,单纯依靠一些网络专业进行网络管理已经不可能了,必须有一种通行的网络管理标准以及相应的管理工具使普通人也能够管理网络。第一个相关的协议是SGMP,它提供了一种直接监视网关的方法,也因此成了一种通用的网络管理工具。下来,有三可供选择的管理工具:HEMS,SNMP和建立在TCP/IP基础上的CMIP(CMOT),因为需要使用ISO/OSI模型进行网络管理,SNMP首选CMOT作为管理工具。基本的SNMP已经被广泛使用了,所有的网络产品都提供对SNMP的支持,新开发的具有远程管理能力的SNMP是RMON,它使管理人员可以将整个子网进行管理,而不是对整个子网内的设备进行管理。
简单网络管理协议(SNMP)是目前TCP/IP网络中应用最为广泛的网络管理协议。1990年5月,RFC 1157定义了SNMP(simple network management protocol)的第一个版本SNMPv1。RFC 1157和另一个关于管理信息的文件RFC 1155一起,提供了一种监控和管理计算机网络的系统方法。因此,SNMP得到了广泛应用,并成为网络管理的事实上的标准。
SNMP在90年代初得到了迅猛发展,同时也暴露出了明显的不足,如,难以实现大量的数据传输,缺少身份验证(Authentication)和加密(Privacy)机制。因此,1993年发布了SNMPv2,具有以下特点:
l 支持分布式网络管理
l 扩展了数据类型
l 可以实现大量数据的同时传输,提高了效率和性能
l 丰富了故障处理能力
l 增加了集合处理功能
l 加强了数据定义语言
但是,SNMPv2并没有完全实现预期的目标,尤其是安全性能没有得到提高,如:身份验证(如用户初始接入时的身份验证、信息完整性的分析、重复操作的预防)、加密、授权和访问控制、适当的远程安全配置和管理能力等都没有实现。1996年发布的SNMPv2c是 SNMPv2的修改版本,功能增强了,但是安全性能仍没有得到改善,继续使用SNMPv1的基于明文密钥的身份验证方式。IETF SNMPv3工作组于1998年元月提出了互联网建议RFC 2271-2275,正式形成SNMPv3。这一系列文件定义了包含SNMPv1、SNMPv2所有功能在内的体系框架和包含验证服务和加密服务在内的全新的安全机制,同时还规定了一套专门的网络安全和访问控制规则。可以说,SNMPv3是在SNMPv2基础之上增加了安全和管理机制。
Internet还有一个远期的网络管理标准CMOT(Common Management information service and protocol Over TCP/IP),意思是 “在TCP/IP上的公共管理信息服务与协议”。虽然CMOT使用了OSI的网络管理标准CMIS/CMIP,但现在还未达到实用阶段。
SNMP最重要的基本思想就是要尽可能简单,以便缩短研制周期。SNMP的基本功能包括监视网络性能、检测分析网络差错和配置网络设备等。在网络正常工作时,SNMP可实现统计、配置和测试等功能。当网络出故障时,可实现各种差错检测和恢复功能。虽然SNMP是在TCP/IP基础上的网络管理协议,但也可扩展到其他类型的网络设备上。
(3),SNMP的详细介绍
简单网络管理协议最初是为处理网络上路由器而设计的。虽然 SNMP是TCP/IP协议族中的一员,但它并不依赖于IP。目前大部分SNMP都使用IP协议,但SNMP是独立的协议(因此,它也用于Novell公司SPX/IPX的IPX协议之上)。
使用SNMP进行网络管理需要下面几个重要部分:管理基站,管理代理,管理信息库和网络管理工具。管理基站通常是一个独立的设备,它用作网络管理者进行网络管理的用户接口。基站上必须装备有管理软件,管理员可以使用的用户接口和从MIB取得信息的数据库,同时为了进行网络管理它应该具备将管理命令发出基站的能力。
管理代理是一种网络设备,如主机,网桥,路由器和集线器等,这些设备都必须能够接收管理基站发来的信息,它们的状态也必须可以由管理基站监视。管理代理响应基站的请求进行相应的操作,也可以在没有请求的情况下向基站发送信息。
MIB是对象的集合,它代表网络中可以管理的资源和设备。每个对象基本上是一个数据变量,它代表被管理的对象的一方面的信息。
最后一个方面是管理协议,也就是SNMP,SNMP的基本功能是:取得,设置和接收代理发送的意外信息。取得指的是基站发送请求,代理根据这个请求回送相应的数据,设置是基站设置管理对象(也就是代理)的值,接收收代理发送的意外信息是指代理可以在基站未请求的状态下向基站报告发生的意外情况。
SNMP并不是单个协议,它由三个协议组成,这三个协议用于网络管理。组成 SNMP协议的三个协议及功能如下所示:
* 管理信息基(MIB) 包含状态信息的数据库。
* 管理信息的结构与标识(SMI) 定义MIB的入口。
* 简单网络管理协议(SNMP) 受管理的对象与服务器间的通信方法。
拥有SNMP能力的管理代理软件包要么在系统启动时加载,要么嵌入到设备的硬件中。拥有SNMP代理的设备由于不同的厂商而有各种不同的名称,但总的可分为SNMP管理设备和受SNMP管理的设备两种。SNMP相容设备也拥有将SNMP集成到其软件或硬件上的代码。当设备中包含SNMP时,我们称之为可管理的设备。
受SNMP管理的设备可与位于网络某处的SNMP服务器通信。设备与服务器有两种通信方式:投票及中断。接受投票的设备由服务器询问当前的状态或统计信息。投票通常在一定时间间隔执行,由网络服务器与受管理的设备进行通信。投票的问题是:信息不总是实时的,同时由于受管理的设备数量增多及投票频率过高的影响容易造成网络拥塞。
在基于中断的SNMP系统中,当受管理的设备出现异常时,向服务器发送消息,在这种方式下,服务器可以及时知道问题—除非设备崩溃,此时,只有其他设备与已崩溃的设备进行连接时,系统才可能发现问题。基于中断的设备也存在自己的问题,最主要的是设备需要组织发送给服务器的消息,这将消耗掉系统时钟周期,从而降低系统的工作效率。同时也可能导致性能“瓶颈”从而引发其他问题。如果消息数据量较大,包含很多统计数据,组织和传输消息将导致网络性能下降。
如果网络上出现较严重的问题,如电源掉电或电压过高,每个受管理的SNMP设备都设法向服务器发送中断消息以报告问题。这将导致网络拥塞从而使服务器接收到错误的消息。
通常,将投票与中断结合使用以弥补各自的缺陷,我们称这种组合方式为直接自陷投票(trap-directed polling),服务器定时统计或在管理员指导下统计设备信息。同时,每个受管理的设备在某种条件发生时产生中断消息,中断发生的条件比纯粹的中断驱动系统要严格。例如,如果用户使用中断SNMP,路由器负载每增长10%都向服务器报告。如果使用直接自陷投票SNMP,用户可从投票中获得路由器的负载,并且当路由器负载增加很快时,将向服务器发送中断消息。当服务器接收到此中断消息后,如果需要的话,可进一步查询设备的详细信息。
SNMP服务器软件包可与SNMP代理通信、传输或请求一系列不同类型的信息。通常由服务器向代理请求统计信息,包括处理的包数量、设备的状态与设备类型相关的特殊信息等 (如modem失效连接的次数)及处理器的负载。
服务器也可向代理发送指令以修改数据库 (MIB)中的项。服务器也可设置代理方的阈值或条件,当代理超过阈值或满足条件时向服务器发送中断消息,如 CPU负载达到90%。
虽然服务器与代理间的通信内容趋向于抽象,但通信本身以非常直接简单的方式完成。如:服务器发送“当前负载”,代理返回75%。代理从不向服务器发送数据,除非产生中断消息或收到服务器请求,这意味着在没有进行投票或产生中断消息时,系统可能存在潜伏的问题。
SNMPv1
SNMPv1是SNMP协议的最初实现。它在请求注释(RFC)1157中有描述,管理信息结构(SMI)规范中有功能描述。SNMPv1运行在协议之上,如UDP,IP,开放式系统互联参考模型无连接网络服务(CLNS),AppleTalk数据报投递协议(DDP),和Novell网络数据报交换(IPX)。SNMPv1被广泛地使用,成为因特网内事实上的网络管理协议。
SNMPv1和管理信息结构
管理信息结构(SMI)定义描述管理信息的规则,使用抽象语法符号1(ASN.1)。SNMPv1 管理信息结构被定义在RFC1155中。管理信息结构制定三种主要的规范:ASN.1数据类型,SMI-specific数据类型和SNMP MIB表。
SNMPv1和ASN.1数据类型
SNMPv1管理信息结构指定所有被管理对象有一个抽象语法符号1(ASN.1)数据类型的子集与它们关联。三种ASN.1数据类型是必需的:姓名、语法和编码。服务的名称被看作对象标识符(对象ID)。语法定义对象的数据类型(例如,整型或字符串)。管理信息结构使用ASN.1语法定义的子集。编码数据描述信息怎么被关联到被管理对象,被格式化为一系列数据项,用于网络传输。
SNMPv1和管理信息结构-specific数据类型
SNMPv1管理信息结构指定一系列管理信息结构-specific数据类型的使用,被划分为两种:简单数据类型和广泛应用数据类型。
三种简单数据类型被定义在SNMPv1管理信息结构中,所有取唯一的值:整型、八位位组字符串和对象ID。整型数据类型是一个范围在-2,147,483,648 to 2,147,483,647之间的单独的整型。八位位组字符串是0到65535八位位组的规则序列。对象ID来自所有对象标识符依照ASN.1中的指定规则分配的。
七种广泛应用数据类型存在在SNMPv1管理信息结构:网络地址、计数器、规格、时间记号、不透明物和无符号整型。网络地址表示一个来自一个特殊协议族的一个地址。SNMPv1只支持32位IP地址。计数器是非负整型,增加直至达到最大值,然后返回到零。在SNMPv1中,一个32位计数器大小被指定。规格是非负整型,能增加或减少,但它们保留达到的最大值。时间记号表示自一些事件的一秒的每一百。不透明物表示一个任意的编码,被使用在任意的信息字符串中,在管理信息系统中,不需要与严格的数据类型一致。整型表示有符号的整型值信息。这个数据类型重新定义了整型数据类型,在ASN.1中有任意的精确度,但是在管理信息结构中,是有限制的。无符号整型表示无符号整型值信息,整型数据类型在ASN.1中有任意的精确度,但是在管理信息结构中是有限制的。
SNMPv2
SNMPv2是初始版本SNMPv1的发展,最初,SNMPv2在1993年以被提议为因特网标准发布;当前,它是一个标准草案。在管理信息结构规范中有SNMPv1,SNMPv2功能功能详述。在理论上,SNMP2提供了SNMPv1的实现,包括附加的协议操作。
SNMPv2和管理信息结构:管理信息结构(SMI)定义了使用ASN.1描述管理信息的规则。SNMPv2管理信息结构在RFC1902中有描述。它制定了一些对SNMPv1管理信息结构-specific数据类型额外的增强,例如包含位字符串,网络地址和计数器。位字符串中只在SNMPv2中有定义,由零或更多的指定值的位组成。网络地址表示一个来自特殊协议族的地址。SNMPv1只支持32位IP地址,但SNMPv2能支持其他类型的地址。计数器是非负整型,增加直到它们达到最大值,然后返回到零。在SNMPv1中,32位计数器大小是指定的。在SNMPv2中,32位和64位计数器被定义。
管理信息结构信息模块:SNMPv2管理信息结构也指定信息模块,指定一组关联的定义。有三种类型的管理信息结构信息模块:MIB模块,顺从声明和性能声明。MIB模块包含相关的被管理对象的定义。顺从声明提供描述一组被管理对象的一种系统方法,必须实现与标准一致。性能声明显示支持的精确层次,代理要求考虑MIB组。为了代理依照性能声明关联到每个代理,网络管理系统可以调整它的行为。
SNMPv2协议操作:Get,GetNext和Set操作用于SNMPv1中,在SNMPv2中可以正确地同样使用。SNMPv2增加和增强一些协议操作。SNMPv2 Trap操作,例如,提供同样的功能在SNMPv2中,但是它使用一种不同的消息格式,被设计用于替代SNMPv1 陷阱。
SNMPv2也定义两种新的协议操作:GetBulk和Inform。GetBulk操作被网络管理系统有效地重新取得大块的数据,例如表中的多行。GetBulk填充一个合适的并足够多的被请求的应答消息。Inform操作允许一个网络管理系统发送陷阱信息到另一个网络管理系统,然后重新行到一个应答。在SNMPv2中,如果代理应答GetBulk操作不能提供链表中所有变量的值,它将提供部分结果。
SNMPv2对SNMPv1的一个大的改进,就是增强了安全机制。对管理系统安全的威胁主要有下面几种:信息篡改(modification):SNMPv2标准中,允许管理站(manager)修改agent上的一些被管理对象的值。破坏者可能会将传输中的报文加以改变,改成非法值,进行破坏。因此,协议应该能够验证收到的报文是 否在传输过程中被修改过。冒充(masquerade):SNMPv2标准中虽然有访问控制能力,但这主要是从报文的发送者来判断的。那些没有访问权的用户可能会冒充别的合法用户进行破坏活动。因此 ,协议应该能够验证报文发送者 的真实性,判断是否有人冒充。报文流的改变(message stream modification):由于SNMPv2标准是基于无连接传输服务的,报文的延迟、重发以及报文流顺序的改变都 是可能发生的。某些破坏者可能会故意将报文延迟、重发,或改变报文流的顺序,以达到破 坏的目的。因此,协议应该能够防止报文的传输时间过长,以给破坏者留下机会。报文内容的窃取(disclosure) :破坏者可能会截获传输中的报文,窃取它的内容。特别在创建新的SNMPv2 Party时,必 须保证它的内容不被窃取,因为以后关于这个Party的所有操作都依赖于它。因此,协议应该 能够对报文的内容进行加密,保证它不被窃听者获取。 针对上述安全性问题,SNMPv2中增加了验证(Authentication)机制、加密(Privacy)机 制,以及时间同步机制来保证通信的安全。
SNMPv3的体系结构
RFC 2271定义的SNMPv3体系结构,体现了模块化的设计思想,可以简单地实现功能的增加和修改。其特点:
适应性强:适用于多种操作环境,既可以管理最简单的网络,实现基本的管理功能,又能够提供强大的网络管理功能,满足复杂网络的管理需求。
扩充性好:可以根据需要增加模块。
安全性好:具有多种安全处理模块。
SNMPv3主要有三个模块:信息处理和控制模块、本地处理模块和用户安全模块。
(1)信息处理和控制模块
信息处理和控制模块(Message Processing And Control Model)在RFC 2272中定义,它负责信息的产生和分析,并判断信息在传输过程中是否要经过代理服务器等。在信息产生过程中,该模块接收来自调度器(Dispatcher)的PDU,然后由用户安全模块在信息头中加入安全参数。在分析接收的信息时,先由用户安全模块处理信息头中的安全参数,然后将解包后的PDU送给调度器处理。
(2)本地处理模块
本地处理模块(Local Processing Model)的功能主要是进行访问控制,处理打包的数据和中断。访问控制是指通过设置代理的有关信息使不同的管理站的管理进程在访问代理时具有不同的权限,它在PDU这一级完成。常用的控制策略有两种:限定管理站可以向代理发出的命令或确定管理站可以访问代理的MIB的具体部分。访问控制的策略必须预先设定。SNMPv3通过使用带有不同参数的原语使用来灵活地确定访问控制方式。
(3)用户安全模块
与SNMPv1和SNMPv2相比,SNMPv3增加了三个新的安全机制:身份验证,加密和访问控制。其中,本地处理模块完成访问控制功能,而用户安全模块(User Security Model)则提供身份验证和数据保密服务。身份验证是指代理(管理站)接到信息时首先必须确认信息是否来自有权的管理站(代理)并且信息在传输过程中未被改变的过程。实现这个功能要求管理站和代理必须共享同一密钥。管理站使用密钥计算验证码(它是信息的函数),然后将其加入信息中,而代理则使用同一密钥从接收的信息中提取出验证码,从而得到信息。加密的过程与身份验证类似,也需要管理站和代理共享同一密钥来实现信息的加密和解密。
下面简要介绍身份验证和加密的数学工具。SNMPv3使用私钥(privKey)和验证密钥(authKey)来实现这两种功能。
身份验证:RFC2104中定义了HMAC,这是一种使用安全哈希函数和密钥来产生信息验证码的有效工具,在互联网中得到了广泛的应用。SNMP使用的HMAC可以分为两种:HMAC-MD5-96和HMAC-SHA-96。前者的哈希函数是MD5,使用128位authKey作为输入。后者的哈希函数是SHA-1,使用160位authKey作为输入。
加密:采用数据加密标准(DES)的密码组链接(CBC)码,使用128位的privKey 作为输入。
公共管理信息CMIP
CMIP协议是在OSI制订的网络管理框架中提出的网络管理协议。与其说它是一个网络管 理协议,不如说它是一个网络管理体系。这个体系包含以下组成部分:一套用于描述协议的 模型,一组用于描述被管对象的注册、标识和定义的管理信息结构,被管对象的详细说明以 及用于远程管理的原语和服务。CMIP与SNMP一样,也是由被管代理和管理者、管理协议与管 理信息库组成。在CMIP中,被管代理和管理者没有明确的指定,任何一个网络设备既可以是 被管代理,也可以是管理者。
CMIP管理模型可以用三种模型进行描述:组织模型用于描述管理任务如何分配;功能模 型描述了各种网络管理功能和它们之间的关系;信息模型提供了描述被管对象和相关管理信 息的准则。从组织模型来说,所有CMIP的管理者和被管代理者存在于一个或多个域中,域是 网络管理的基本单元。从功能模型来说,CMIP主要实现失效管理、配置管理、性能管理、记 帐管理和安全性管理。每种管理均由一个特殊管理功能领域(SMFA,Special Management F unctional Area)负责完成。从信息模型来说,CMIP的MIB库是面向对象的数据存储结构,每 一个功能领域以对象为MIB库的存储单元。
CMIP是一个完全独立于下层平台的应用层协议,它的五个特殊管理功能领域由多个系统 管理功能(SMF)加以支持。相对来说,CMIP是一个相当复杂和详细的网络管理协议。它的设 计宗旨与SNMP相同,但用于监视网络的协议数据报文要相对多一些。CMIP共定义了11类PDU 。在CMIP中,变量以非常复杂和高级的对象形式出现,每一个变量包含变量属性、变量行为 和通知。CMIP中的变量体现了CMIP MIB库的特征,并且这种特征表现了CMIP的管理思想,即基于事件而不是基于轮询。每个代理独立完成一定的管理工作。
CMIP的优点在于: 它的每个变量不仅传递信息,而且还完成一定的网络管理任务。这是CMIP协议的最大 特点,在SNMP中是不可能的。这样可减少管理者的负担并减少网络负载。完全安全性。它拥有验证、访问控制和安全日志等一整套安全管理方法。
但是,CMIP的缺点也同样明显: 它是一个大而全的协议,所以使用时,其资源占用量是SNMP的数十倍。它对硬件设备 的要求比人们所能提供的要高得多。 由于它在网络代理上要运行相当数量的进程,所以大大增加了网络代理的负担。它的MIB库过分复杂,难于实现。迄今为止,还没有任何一个符合CMIP的网络管理系统。
SNMP安全
SNMP缺乏任何的证明能力,导致多种安全攻击威胁。包括伪装事件,修改信息,消息序列,定时修改和揭发。伪装事件包括一个未授权的实体企图通过伪装成一个经授权的管理实体来执行管理操作。修改信息包括未授权的实体企图更改一个经授权的实体产生的消息,从而消息导致未授权管理或配置管理操作。当一个未授权的实体重新排序,延迟或拷贝和更新重放一个经授权实体产生的消息,消息序列和定时修改发生。当一个未经授权的实体析取存储在被管理对象中的值或学习须申报的监视管理器与代理间的交换事件时,揭发结果。因为SNMP没有实现鉴定,许多卖主没有实现Set操作,因此削减了SNMP的监控能力。
发表评论
- 浏览: 9611 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
我的相册
共 6 张
最近加入圈子
链接
最新评论
-
Snmp4j编程简介之二:PDU
Hi LZ Sorry for typing English..I don't ...
-- by vincent2001 -
Snmp4j编程简介之二:PDU
...
-- by jinyan798 -
Snmp4j编程简介之一:Targ ...
,明白了,
-- by jinyan798 -
用java取得linux系统cpu ...
真是哥们 我这些天正在收集这些资料
-- by chixianhuadeyu -
snmp4j完整示例
建议楼主从设计上讲一下。
-- by mindxw






评论排行榜