简单网络管理协议SNMPv2、Windows和SNMP | |||||||||
---|---|---|---|---|---|---|---|---|---|
http://www.sina.com.cn 2006/10/12 11:44 北京自考热线 | |||||||||
第五章简单网络管理协议SNMPv2 5.1SNMP的演变(识记): SNMP基与SGMP,由简单容易实现的优点。SNMP的缺点也是明显的:没有实质性的安全措施,无数据源认证功能,不能防止偷听。为此SNMP又增加了报文摘要算法MD5保证数据的完
总体SNMPv2对SNMP增加了以下3个方面的内容: 管理信息结构的扩充 管理站和管理展示间的通信能力 新的协议操作。 SNMPv2对定义对象类型的红进行了扩充,引入了新的数据类型,增强了对象的表达能力;吸收了RMON中有关表行增加和删除的约定,提供了更完善的表操作功能;SNMPv2还定义新的MIB组,包含协议操作的通信消息,以及有关管理站和代理系统配置的信息;在协议操作方面引入了两种PDU,分别用于大数据块的传送和管理站之间的通讯。 5.2网络安全问题 1、计算机网络安全的威胁 计算机网络需要以下3个方面的安全 保密性:计算机中的信息只能由授权了访问权限的用户读取 数据完整性:计算机中的信息资源只能被授权用户修改 可利用性:具有访问权限的用户在需要时可以利用计算机系统中的信息资源 中断:通信被中断,对可用性威胁 窃取:未经授权访问,对保密性威胁 篡改:未经授权访问并篡改了信息,对数据完整性威胁 假冒:未经授权加入伪造内容,对数据完整性威胁 2、网络管理的安全威胁 3个方面威胁: 伪装的用户:没有得到授权的一般用户企图访问网络管理应用和管理信息 假冒管理程序:无关的计算机伪装成网络管理站实施管理功能 侵入管理站和代理站之间的信息交换过程:网络入侵者通过观察网络活动窃取了敏感的管理信息,更严重的危害是可能穿该管理信息或中断管理站和代理站的通信。 系统或网络的安全设施由一系列安全服务和安全机制的集合组成: 安全信息的服务:网络管理中的安全管理之保护管理站和代理之间信息交换的安全。有关安全的管理对象包括密钥、认证信息、访问权限信息以及有关安全服务和安全机制的操作参数信息。安全管理要跟踪网络活动和试图发起的网络哦活动,以便检测未遂或成功的安全攻击,并从这一攻击中恢复网络的正常运行。 安全维护信息包括: n记录系统中出现的各类事件 n跟踪安全审计试验,自动记录有关安全的重要事件。 n报告和接受侵犯安全的警示信号 n维护和检查那全记录 n备份和保护敏感文件 n研究每个正常用户的活动形象,预先设定敏感资源的使用形象,以便检测异常活动 资源的访问控制:包括认证服务和授权服务 n安全编码 n源路由和路由记录信息 n路由表 n目录表 n报警门限 n记帐信息 报文的加密:对管理站和代理之间交换的报文进行加密 3、安全机制: 一般从保密、认证、非认证和数据完整性4方面 数据加密:是防止未经授权的用户访问敏感信息的手段。研究数据加密的科学叫密码学,它分为设计密码体制的密码编码学和破译密码的密码分析学。 认证——防止主动攻击的方法 认证分为实体认证和消息认证。实体认证是识别通信对方的身份,防止假冒,可以采用数字签 名的方法。消息认证是验证消息在传送或存储过程中没有被篡改通常采用消息摘要法。 n数字签名——防止否认的方法,基于密钥的数字签名 n消息摘要——验证消息的完整性,用差错控制,冗余位 5.3管理信息结构(领会) 1、对象的定义P131 2、表的定义、索引和操作P136 行的生成4步骤P136 行的挂起:用set命令把状态列由active改为notInService 行的删除:set命令把状态列改为destroy 4、通告的定义和作用:用于异常条件出现时SNMPv2实体发送的信息。 5.4管理信息库(简单应用) 1、系统组SNMPv2的系统组是MIB-2系统组的扩展。之增加了与对象资源(ObjectResource)有关的一个标量对象sysORLastChange和一个表对象sysORTable. 所谓对象资源:是由代理实体使用和控制的,可以由管理站动态配置的系统资源。 标量对象sysORLastChange记录着对象资源表中描述对象实例改变状态的时间。 2、SNMP组与SNMPv2操作的关系:这个组是由MIB-2的对应组改造而成,增加了一些新的对象,但新的SNMP组对象少了,他删除了对排错作用不大的许多变量。 3、MIB对象组的作用:这个组的对象与管理对象的控制有关,分为两个子组。的一个子组snmpTrap由snmpTrapOID和snmpTrapEnterprise组成。前者是正在发送的陷入或统治的对象标识符。后者是正在发送的陷入有关的制造商标识符。第二个子组snmpSet只有snmpSerialNo一个对象,用于解决Set操作中可能出现的问题:一个管理站向同一MIB对象发送多个,需保证顺序执行;多个管理站对MIB的并发操作可能破坏数据库的一致性和精确性。 5、适应性声明主要内容的:适应性是对具体实现的限制,是具体实现必须达到的最小级别。说明适应性要用到四个文件: OBJECT-GROUP(对象组宏):一组有关的对象 NOTIFICATION-GROUP(通知组宏)一组已经实现的通知 MODULE-COMPLIANCE(模块依从性宏):说明对MIB实现的最小要求 AGENT-CAPABILITIES(代理能力宏):定义了一个代理系统的能力,及代理对MIB的支持程度。 6、接口组增加的对象及应用 原来的接口组的功能和不足之处: 接口编号 接口子层 虚电路问题 不同传输特性的接口 计数长度 接口速度 组播/广播分组的计数 ifSpecific问题 增加了4个新表: 接口扩展表:各种接口对象 接口堆栈表:说明接口表中属于同一物理接口的各个行之间的关系,指明哪些子层运行于那些子层之上。 接口测试表:作用是由管理站知识代理系统测试接口故障 接收地址表:包含每个接口对应的各种地址。 5.5SNMPv2协议和操作(简单应用) 1、SNMPv2提供了3种访问管理信息的方法 管理站和代理之间的请求/响应通信 管理站和管理站之间的请求/响应通信 代理系统到管理站的非确认通信 2、SNMPv2报文结构和交换序列 SNMPv2报文的结构分为3部分:版本号、团体名和作为数据传送的PDU.SNMPv2版本号为1SNMPv1版本号为0 SNMPv2发送序列: n根据协议需要构造PDU n把PDU、源和目标端口地址以及团体名传送给认证服务,认证服务产生认证码或对象数据进行加密。 n加入版本号、团体名构造报文。 n进行BER编码,产生0/1比特流,发送出去 接收序列 n对报文进行语法检查,丢弃出错报文 n把PDU部分、源和目标端口教给认证服务。如果失效,发送一个陷入,丢弃报文。 n认证通过,把PDU转换成asn.1的形式 n协议实体对PDU作句法检查,如果通过,根据团体名和适当的访问策略作相应的处理。 3、SNMPv2PDU格式功能和操作P152: 6种协议数据单元,3种格式。 GetRequest,GetNextRequest,SetRequest,InformRequest和TrapPDU PDU类型请求标识00变量绑定表 ResponsePDU PDU类型请求标识错误状态错误索引变量绑定表 GetBulkRequestPDU PDU类型请求标识非重复数N最大后继数变量绑定表 变量绑定表 变量名1值1变量名2值2 GetRequest:SNMPv2对这种操作的响应方式与SNMPv1不同。SNMPv1响应是原子性的,即只要有一个变量检索不到,就不返回任何值。SNMPv2不是原子性,允许部分响应。规则如下: 如果改变量的对象标识符前缀不能与这一请求可访问的任何变量的对象标识符匹配,返回错误值noSuchObject. 如果变量名不能与这一请求可访问的任何变量名完全匹配,则返回一个错误值noSuchInstance. 不属于以上情况,在变量绑定表中返回被访问的值。 其他原因导致处理失败,返回错误状态genErr. 如果生成的响应PDU过大,则放弃这个PDU,构造新的相应PDU,错误状态tooBig GetNextRequestPDU的响应: 对变量绑定表中指定的变量在MIB中查找按字典顺序的后继变量,如果找到,返回改变量的名字和值。 如果找不到字典顺序的后继变量,返回endOfMibView. 其他情况导致相应PDU构造失败,以与GetRequest类似的方式返回错误值 GetBulkRequestPDU:是SNMPv2对原标准的主要增强,目的是以最少的交换次数检索大量的管理信息,或者要求管理站尽可能大的响应报文。原理与GetNextRequestPDU的响应 例题:P155 GetRequestPDU:的请求与SNMPv1相同,具有原子性。差别是处理相应的方式不同。分两个阶段处理这个请求:检验操作的合法性;更新变量。检验合法性包括: 如果有一个变量不可访问,返回noAccess 如果与绑定表中变脸共享对象标识符的任MIB变量多不能生成、不能修改。也不解后制定的值,返回错误状态notWritable 设置类型不是和,WrongType 设置值的长度限制不同,WrongLength 要设置的ASN.1编码不是合变量的ASN.1标签,wrongEncoding 指定值在任何情况下都不能赋予变量,wrongvalue 变量不存在,也不能生成,noCreation 变量存在,当前情况不能生成,inconsistaneName 变量存在,但不能修改,notWritable 当前情况下不能为变量赋与制定的值,inconsistanevalue 缺乏资源,resourceUnavailable 其他原因导致处理变量绑定对失败,genErr TrapPDU:陷入是代理发给管理站的非确认信息,包含sysUpTime.0(发出陷入时间),snmpTrapOID.0(陷入对象标识符),有关通知宏定义中的各变量名及其值,代理系统选择的其它变量的值。 InformRequestPDU:管理站发给代理站的消息 4、SNMPv2操作管理: SNMPv2的操作管理框架主要涉及4个基本概念:参加者、上下文、MIB视图、访问控制策略。 5、SNMPv2实体:所谓实体就是执行网络管理操作的多线程进程。 6、SNMPv2上下文:SNMPv2实体可以访问的管理对象的资源的集合,分为本地上下文和远程上下文。 7、本地上下文是本地MIB对象的一个子集,也叫做MIB视阈 8、访问控制策略:SNMPv2实体发送一个PDU后首先检查协议操作的合法性,及双方参加者、操作的上下文是否有效,指定的操作是否允许等。 9、SNMPv2的发送和接收P161、P162 10、管理站之间的通信:SNMPv2增加管理站之间的通信机制是分布式网络管理所需要的功能特征。为此引入了通知报文InformRequest和管理站数据库(manger-to-mangerMIB)。 管理站数据库有3个表组成: snmpAlarmTable:报警表提供被监视的变量的有关情况。 snmpEventNotifyTable:事件表记录SNMPv2实体产生的重要事件,或者是报警事件、或者是通知类型宏定义事件。 snmpEventNotifyTable:事件通知表定义了发送通知的目标和类型。 5.6SNMPv2的实现 1、可利用的各种传输服务: a)UDP:用户数据报协议 b)CLNS:OSI面线非连接的传输服务 c)CONS:OSI面线连接的传输服务 d)DDP:AppleTalk的DDP传输服务 e)IPX:Novell公司的网间网分组交换协议 2、与OSI的兼容性:使用RFC1006在TCP/IP网络之上模拟ISO的TP0传输服务。通过RFC1006,OSI的电子邮件、系统管理等应用程序都可以运行在TCP/IP网络上。TP0是最简单的面向连接的传输协议,只提供连接的建立和释放,不支持错误检测,也不支持QoS.RFC1006对TP0有所增强,主要是在连接建立阶段交换少量数据,支持加急投送服务,特长协议数据单元。 3、在TCP/IP网络中实现OSI系统管理功能的方法:SNMP的管理信息库MIB主要是根据协议分组的,并没有按照OSI的系统管理功能域分类。 4、SNMP的局限性: 没有按OSII系统管理功能域分类 管理对象功能方面并没有统一的分类标准。 MIB对象驻在各种代理系统中,如何合理地分布各种管理对象。 不是每个代理实现所有的MIB对象 第六章Windows和SNMP NT指定了远程过程调用和系统管理服务(SMS)标准,作公司专用网络管理平台。后来微软推出TCP/IP32协议族是包含了一个SNMP服务选件,可以安装在NT服务器或工作站上,接收和发送SNMP请求、响应和陷入。 6.1WindowsSNMP服务的基本概念 1、SNMP代理和陷入服务的概念:SNMP管理站和代理功能,包括发送和接收陷入的能力。 2、Win95只支持SNMP代理功能。 3、所谓服务是一种特殊的WIN32应用软件,他通过Win32API与NT服务控制管理器(SCM)接口,一般在后台运行。作用是监视硬件设备和其他系统进程,提供访问外围设备和操作系统辅助功能。系统服务在系统启动时或用户登录时自动开始,用户退出或系统关机时停止运行。SNMP服务就是Win32应用软件。 4、SNMP服务包括两个应用程序:SNMP代理服务程序Snmp.exe和SNMP陷入服务程序SNMPPTRAP.EXE. 5、代理服务程序Snmp.exe接收SNMP请求报文,根据要求发送响应报文,能对SNMP报文进行语法分析,ASN.1和BER编码/译码,也能发送陷入报文,并处理与WinSockAPI的接口。 6、SNMPPTRAP.EXE监听发送给主机的陷入报文,然后把其中的数据传送给SNMP管理API.Win95没有陷入服务文件。 7、NT的SNMP代理服务是可扩展的,允许动态的加入或减少MIB信息。这就意味着程序员不必修改和重新编译代理程序,只需要加入或删除一个能处理指定信息的子代理就可以。微软把这种子代理叫做扩展代理,它处理私有的MIB对象和特定的陷入条件。 8、SNMPAPI是微软为SNMP协议开发的应用程序接口,是一组用于构造SNMP服务、扩展代理和SNMP管理系统的库函数。 9、SNMP服务的安装、配置和测试:SNMP服务向其他NT网络服务一样,唯一差别是必须先安装TCP/IP32协议栈。 10、SNMP服务的安装配置和测试方法 NT安装:登录超级用户,控制面板、服务条、添加、列表中选择SNMP服务选项、确定95安装:95安装光盘中ADMINNETTOOLSSNMP下有一个自解压文件SNMPZP.EXE,执行,产生一些文件,控制面板,网络,配置,添加,选择网络组件、服务,磁盘安装snmp.inf 配置:修改属性 测试:SNMPUTIL:snmputil[get│getnext│walk]agent-addresscommunityoid[oid…]snmputiltrap 用GetRequest查询变量sysDest:SNMPUTILget189.112.208.25public1.1.0 用GetNextRequest查询变量sysDest:SNMPUTILgetnext189.112.208.25public1.1 用GetNextRequest查询非MIB-2变量:SNMPUTILgetnext189.112.208.25public.1.3.6.1.4.1.77.1.3 用walk遍历MIB-2系统组变量:SNMPUTILwalk189.112.208.25public1 用walk遍历MIB-2子树:SNMPUTILwalk189.112.208.25public.1.3.6.1.4.1 测试SNMP陷入服务:SNMPUTILtrap,在另一个窗口中:SNMPUTILgetnext189.112.208.25fred1.1;由于团体名认证出错,在陷入窗口中出现一个陷入认证:snmputil:trapgeneric=4specific=0from189.112.208.25 测试冷启动陷入:保持监听陷入,停止SNMP服务,在启动SNMP服务,陷入窗口收到由扩展代理发出的冷启动陷入:snmputil:trapgeneric=1specific=0from189.112.208.25 6.2SNMP应用程序接口(领会) 1、SNMPAPI由4部分组成:扩展API、管理API、实用程序API、服务API. 2、扩展API的概念:4个函数组成,SNMP服务和扩展代理DLL使用这些函数交换数据。 3、管理API概念:7个函数组成,管理应用程序调用这些函数发送请求,接受响应和陷入。 4、使用程序API:14各函数,分为存储器分配和数据管理两个组。 6.3扩展代理的实现(综合应用) 1、建立扩展代理动态链接库的方法 4个函数中snmpEetensionInit(扩展代理初始化和MIB对象注册)、snmpEetensionQuery(处理Get,GetNext,Set请求)、snmpEetensionTrap(从扩展代理收集Trap数据)出现在每一个扩展代理中,snmpEetensionInitEx(提供多个MIB对象注册)是任选的。 当扩展代理被SNMP服务装入后,首先调用入口函数,然后调用snmpExtensionInit(或snmpEetensionInitEx)完成必要的初始化功能。 nDDL入口函数:DLLmain实现 BOOLWINAPIDllmain(HANDLEhDLL,DWORDdwreason,LPVOIDlpReserved) {BOOLbReturn=TRUE Switch(dwReason)交换参数dwReason {caseDLL-PROCESS-ATTACH:;如果为DLL-PROCESS-ATTACH ghDll=hDll; ghEvent=CreatEvent(NULL,FAULSE,FALSE,NULL); if(ghEvent==NULL);如果初始化失败 bReturn=FALSE;;DLL的装入夭折入口函数返回值FAULSE. break; caseLL-THERAD-ATTACH:;如果不是DLL-PROCESS-ATTACH break;;DllMain的返回植被系统忽略 caseLL-THERAD-DETACH: break; caseDLL-PROCESS-DETACH:;当扩展代理被卸载时,值为…… CloseHandle(ghEvent);;关闭句柄,释放内存 break; default: break; } return(bReturn); } n初始化函数:DLL装入成功后就调用SnmpExtensionInit函数进行初始化操作。如果DLL中没有这种初始化函数,则SNMP服务就在系统事件记录中写入一条消息,以后不再调用该扩展代理。 如果两个函数DLLmain和SnmpExtensionInit调用成功,SNMP服务就检查代理中是否有SnmpExtensionInitEx函数,如果有,则SNMP服务就反复调用这个函数,每次登记一个MIB子树,直到所有扩展代理支持的MIB子树登记完毕,SnmpExtensionInitEx返回FALSE为止。 SnmpExtensionQuery的作用是处理请求报文中的变量绑定对,生成应答报文(GetResponse)中的变量绑定对,并决定错误状态值。 2、安装、启动、测试扩展代理的方法:综合前面内容 3、MIB数据库的实现方法:将MIB数据库文件(。MIB)组织成一维数组,每个元素是结构类型MIBVARS. 6.4陷入的实现(领会) 1、陷入的设计方法 代理的作用是检测陷入事件,收集陷入数据,发送陷入消息等。 陷入事件可分为两类:但状态事件,多状态事件。单状态事件:如用户击键,输入口令,SNMP报文认证失败,数据被修改等可以用计数器跟踪的单状态事件;多状态事件:被监视的变量值在多个状态之间变换。 陷入的设计关系到两个决策问题:哪些事件可以引起陷入;陷入报文中应该包含哪些数据。 如果基于已有的MIB,则可陷入事件都已确定了。如果对于企业专用MIB则要根据企业标准或设备特点决定。 陷入一般要分优先级别,区分通知性陷入和灾难性陷入。对于掉电等陷入具有高优先级。 陷入报文时轻量级的,值传达必要的管理信息。有效地管理模式应该是陷入制导的轮询。陷入可能是很紧急的报警,同时收集陷入数据不能占用太多的CPU时间,所以只要把必 要的信息发送给管理站。 陷入信息的归宿是管理站的陷入记录,管理站通常有一个叫做陷入管理员的进程,负责把接收到的陷入信息写进陷入记录。同时陷入的格式也要充分考虑到信息的大小。 2、由扩展代理支持陷入的方法: 用扩展代理实现陷入关系到两个函数snmpExtensionInit和snmpExtensionTrap.SnmpExtensionInit调用函数CreateEvent产生一个事件,用于把它支持的陷入句柄通知SNMP服务。如果失败返回FALSE.SnmpExtensionTrap为一个陷入收集数据,这些数据来自全局变量。 3、事件检测方法:主动轮询和被动等待 4、陷入的触发条件 6.5SNMP管理应用程序接口(综合应用) 1、微软MIB编译器的作用:是把人工可读的MIB模块转换成程序可读的数据格式,产生的二进制文件MIB.BIN由管理应用程序使用。 2、管理API头文件的内容和作用:管理API使用的参数和数据类型包含在头文件MGMTAPI.H中。内容包括: #include #include #ifdef-cplusplus extrn“c” #endif 3、管理API的功能 nsnmpMgrOpen:发送之前调用它打开SNMP代理的连接,句法如下: LPSNMP-MGR-SESSIONSNMP-FUNC-TYPESnmpMgrOpen(代理地址,代理域,超时时间,重复次数),如 LPSNMP-MGR-SESSIONlpSession lpSession=snmpMgrOpen(“128.128.128.1”,“public”,1400,2) nsnmpMgrclose:关闭代理连接管套 BOOLSNMP-FUNC-TYPESnmpMgrClose(LPSNMP-MGR-SESSIONlpSession) nsnmpMgrRequest:这个函数可以发送Get,Getnext和Set请求报文。该函数是异步操作。 句法如下: SNMPAPISNMP-FUNC-TYPESNMPSnmpMgrRequest(lpSession,ASN-RFC1157-GETERQUEST,&VBList,nErrorStatus,nErrorIndex) nsnmpMgrStrToOid:利用MIB.bin中数据把对象标识符转变成等价的AsnObjectIdentifier类型。BOOLSNMP-FUNC-TYPEsNMPMgrStrToOid( LPSTRpString, AsnObjectIdentifierpOid nsnmpMgrOidToStr:与前一函数功能相反。 nsnmpMgrGetTrap:SNMP接收的陷入报文交给这个函数,他被陷入服务周期的调用,以便轮训需要接收的陷入报文。 nsnmpMgrTrapListen:在陷入服务和管理API之间建立命名管道,使的管理应用可以接受陷入报文。 6.6网络管理应用程序设计(综合应用) 1、管理应用程序类型 2、windows环境下管理应用程序实现方法 更多信息请访问:新浪自考频道 |