SNMPV3.ppt_第1页
SNMPV3.ppt_第2页
SNMPV3.ppt_第3页
SNMPV3.ppt_第4页
SNMPV3.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、简单网络管理协议, SNMP V3,作为网络管理协议,SNMP在制定最初并没有过多的考虑其安全性,而且V1和V2版本采用明文传输团体名,这使得早期版本存在着很大的安全隐患。 但是随着网络安全的日趋重要,在SNMP发展的过程中也出现了一些安全方面的增强方案,这些方案虽然没有形成统一的标准,也没有得到广泛地应用,但是,这些对后来的SNMP V3的形成具有很大的借鉴意义。,SNMP协议概述发展历程,1、SNMPv1发展过程,SNMPv1是SNMP协议的最初版本,提供最小限度的网络管理功能,并在90年代得到了迅猛的发展。同时也暴露出明显的不足。例如:难以实现大量数据的传输、缺少身份验证和加密机制,也不

2、支持除TCP/IP之外的协议平台,过于集中式的管理、无法实现对网络的监控功能。 同时,在SNMP V1中只提出了基于Community的安全机制。一个SNMP团体就是一个SNMP代理和任意一组SNMP管理站之间的关系,它定义了认证和访问机制的特性。,Community是定义在代理上的一个本地概念。代理为每个必要的认证和访问特性的联合定义一个团体,每个community拥有唯一的名字。community中的管理站必须使用该团体名进行get和set操作。 Community的名字起到了一个密码的作用,用来实现管理站对代理的访问。如果SNMP报文携带的团体名没有得到设备的认可,则丢弃该报文。同时可以

3、通过定义多个Community,代理就能够为多个不同的管理站来提供不同的MIB访问权限。,2、SNMPv2发展过程,基于以上SNMPv1的种种缺陷与不足,于是在1993年发布了SNMPv2,并进一定的完善工作, 具有以下特点: -支持分布式网络管理(M2M-MIB提供了对分布式管理的支持) -扩展了数据类型(Usigned32、Counter64) -可以实现大量数据同时传输,提高了效率性能(GetBulkRequest) -丰富了故障处理功能(丰富的错误提示信息,更细致的区分错误) -增加了集合处理功能 -加强了数据定义的语言(扩充了对象类型的宏),SNMPV2新增具体内容,扩充了对象类型的

4、宏定义(UnitsPart、MAX-ACCESS、STATUS),引入新的数据类型(Unsigned32和Counter64)。 提供了更完善的表操作功能。 在协议方面引入两种新的PDU(GetBulkRequest和InformRequest)。 定义了两个新的MIB信息库,SNMPv2 MIB和M2M MIB(Manager to Manager MIB),前者是对基本的MIB的支持,后者提供了对分布式管理结构的支持。 SNMPv2也采用了Community来认证,它在兼容SNMPv1的同时,也扩充了其功能。,相对于SNMPv1而言,SNMPv2新增加了GetBulk操作报文,GetBul

5、k所对应的基本操作类型就是GetNext操作,通过设置参数Non Repeaters(非重复数)和Max Repetitions(最大后继数),从而高效地从Agent处获取大量管理数据。也增加了一个InformRequest报文,与其他报文格式相同。 同时,SNMPv2修改了Trap报文格式,SNMPv2的Trap PDU采用了SNMPv1的Get/GetNext/Set PDU的格式,并将sysUpTime(发出陷入时间)和snmpTrapOID(陷入对象标识符)作为Variable bindings中的变量来构造报文。,SNMPv2 报文格式,SNMPv2 共有7种协议数据单元,分为3种P

6、DU结构:,3、SNMPv3发展过程,但是,SNMPv2并没有实现预期的目标,尤其是在安全性方面并没有得到提高,例如身份验证、加密、授权和访问控制、适当的远程安全配置和管理能力都没有实现。之后经过进一步的修改和完善,在1998年1月,正式形成了SNMPv3。这一系列文件定义了包括SNMPv1、SNMPv2所有功能在内的体系框架和包含验证服务、加密服务在内的全新的安全机制,同时还规定了一套专门的网络安全和访问控制规则,可以这样说,SNMPv3是在SNMPv2基础上增加了安全和管理机制。,SNMP V3 介绍,一、 SNMP V3 协议框架 1、SNMP v3 体系结构 2、SNMP v3 协议操

7、作 3、SNMP v3 安全机制分析,一 SNMP V3 协议框架,SNMP v3相对于SNMP v2最大的改进就是主要是在安全性和管理方面的改进。SNMP v3采用基于User-Based安全模型(USM)和View-Based访问控制模型(VACM)为其提供网络管理的安全性,并采用加密的机制来避免信息的泄漏,保证信息的安全。 USM:引入了用户名和组的概念,可以设置认证和加密功能。认证是用于验证报文的发送方的合法性,避免非法用户的访问;加密则对NSM和Agent之间传送的报文进行加密,避免被窃听。通过认证和加密的组合,可以为NSM和Agent之间的通信提供更高的安全性。,VACM:基于视图

8、的访问控制模型在技术上定义了组、安全等级、上下文、MIB视图和访问策略等五个元素,这些元素同时决定用户是否具有访问权限。在同一个SNMP实体里可以定义不同的组,组与MIB绑定,组内又可以定义多个用户。当使用某一个用户名进行访问的时候,只能访问对应的MIB视图定义的对象,这相对于通过团体名来进行安全控制来说,在安全性上有了很大的提高。,1、SNMP v3 体系结构,SNMP v3定义了新的体系结构,并在其中包含了v1和v2的兼容,也就是说这个新的体系结构也适用于以前版本网络管理协议。 在SNMP v3中,管理进程和代理进程统称为实体Entity,SNMP实体由SNMP协议引擎Engine和应用程

9、序Application组成。实体包含一系列模块,通过模块之间相互作用来提供服务。,SNMP v3实体组成结构图,1.1 SNMP协议引擎,SNMP协议引擎负责执行协议操作,为各类SNMP应用程序提供服务。每个协议引擎由一个SNMP协议引擎ID来标识。由于引擎和实体之间是一一对应的,引擎ID也能在管理域中唯一地标识实体。但在不同的管理域中,SNMP的实体可能会有相同的snmpEngineID。在整体上执行两种功能: 1)从SNMP应用中接收流出的PDU执行必要的处理,包含插入鉴别代码和加密,然后把PDU封装到用于传输的消息中去。 2)从传输层接收流进的PDU,执行必要的处理,包括鉴别和解密,然

10、后从消息中取出PDU,并把PDU传送到适当的SNMP应用中去。,1.1.1 调度器(Dispatcher),调度器是同应用程序及消息处理模型进行交互,负责SNMP消息的分发、传输和接收,它是SNMPV3引擎的关键部件,一个引擎只有一个调度器,它可以并发的处理多个版本的SNMP报文。 主要功能有: 1)接收和分发SNMP报文 2)根据消息的版本号将其转交给相应的消息处理模块处理。 3)从消息中获取PDU,传给应用程序。 4)从应用程序中接收需要发送的PDU。,1.1.2 消息处理子系统 Message Processing Subsystem,消息处理子系统由一个或多个消息处理模块组成,每个处理

11、模块将按照相应的格式主要完成以下功能: 1)准备要发送的消息 2)从接收到的消息中提取数据 消息处理子系统包括 v1、v2c和v3等版本的消息处理模型,分别处理不同版本的消息。消息处理模型定义了特定版本的SNMP消息的格式,以及如何对该版本的SNMP消息进行解析,并从中提取数据和如何构造该版本的SNMP消息。,1.1.3 安全子系统 Security Subsystem,安全子系统提供SNMP消息的认证和加密服务。它可以包含多个安全模型,标准协议中使用的安全模型为RFC3414中定义的基于用户的安全模型(USM),当然,用户也可以定义其他类型的安全模型。 安全模型要指出它所防范的安全威胁、服务

12、的目标和为提供安全服务所采取的安全协议。安全协议内容包括一系列的安全机制和为实现安全服务所定义的MIB对象等。,1.1.4 访问控制子系统 Access Control Subsystem,访问控制子系统通过一个或多个访问控制模块提供确认对被管理对象的访问是否是合法的服务。SNMP v3所提供的访问控制模型为RFC3415所描述的基于视图的访问控制模型(VACM)。 访问控制模型还可以定义访问控制处理过程使用的MIB模块,以实现对访问控制策略的远程配置。,1.2 SNMP应用程序,SNMP应用程序利用SNMP协议引擎提供的服务完成特定的网络管理任务。不同SNMP实体的应用程序相互间通过SNMP

13、消息进行通信。 应用程序主要包括以下几类: 1)命令产生器(Command Generator) 2)命令响应器(Command Responder) 3)通知产生器(Notification Originatior) 4)通知接收器(Notification Receiver ) 5)代理转发器(Proxy Forwarder) 应用模块部分由上述的一到多个应用构成,选择不同的应用构成不同功能的实体。,命令产生器:产生SNMP请求消息,并处理对这些请求的响应,例如getRequest。 命令响应器:提供对SNMP请求消息的应答,例如getResponse。 通知产生器:产生和发送异步的通知消

14、息,例如trap generation。 通知接收器:接收并处理异步的通知消息。当通知消息需要确认时,通知接收器应用程序还需生成相应的应答消息,例如trap processing。 代理转发器:用于在网管实体之间转发网管消息,例如get-bulk to get-next 其他:例如Special application。,2、SNMP v3 协议操作,SNMPv3协议,SNMP目前有v1、v2、v3三个版本,SNMP 报文格式,msgVersion:表示版本号,这里值为3。 msgId:消息标识,取值范围为0231-1。 msgMaxSize:表示消息发送器支持的最大消息长度,这里取值为484

15、231-1。 msgFlags由reportableFlag/privFlag/authFlag3个标志位组成,其中reportableFlag表示消息接收方是否需向发送方发送ReportPDU(只有在消息的PDU部分不能被解码时-例如由于密钥错误而解密失败,才会用到);privFlag表示是否加密;authFlag表示是否鉴别;除了privFlag=1, authFlag=0的情况外,其它任意组合都是可以接受的,也就是说没有鉴别的加密是无意义的。 msgSecurityModel:消息安全模型,用于标识发送方用于生成该消息的安全模型,发送和接收方必须采用相同的安全模型。,在SNMPv3消息的

16、安全参数域(msgSecurityParameters)中,USM处理安全字段有: .msgAuthoritativeEngineID:消息相关的权威引擎标识符; .msgAuthoritativeEngineBoots:权威引擎启动/重启次数; .msgAuthoritativeEngineTime:权威引擎时间; .msgUserName:消息所代表的用户; .msgAuthenticationParameters:鉴别码(MAC) ; .msgPrivacyParameters:加/解密参数,用于生成初始向量IV;,contextEngineID:唯一识别SNMP实体的标识符。对于流入消

17、息,该字段用于确定将PDU递交给哪个应用进行处理;对于流出消息,该值由上层应用提供,并代表那个应用程序; contextName:携带的管理对象所在的上下文的名称; scopedPDU:需SNMP应用程序处理的有效载荷。,SNMP v3 实现原理,SNMPv3各操作的实现机制同SNMPv1和SNMPv2c基本一样,其主要区别在于SNMPv3新增加了认证和加密、解密的处理。下面以SNMPv3使用认证和加密方式执行get操作为例来描述其实现机制,过程如下:,当发送消息时,引擎检索用户属性信息;如果需要加密,使用用户的加密协议和密钥对消息的scopedPDU域进行加密,设置msgPrivacyPar

18、ameters参数;如果需要鉴别,将用户名(userName)、权威引擎ID和当前时间插入消息的相应安全参数字段(msgUserName, msgAuthoritativeEngineID, msgAuthoritativeEngienBoots, msgAuthoritativeEngineTime),然后根据用户的鉴别协议和鉴别密钥对整个消息生成鉴别码(MAC),插入msgAuthenticationParameters字段。,当接收方收到消息时,引擎首先从消息的msgUserName字段取出用户名(userName ) , 检索用户信息;如果消息需要鉴别,则根据用户的鉴别协议和鉴别密钥对

19、整个消息重新生成MAC码,并与消息携带的MAC比较,若相同,认为消息完整、来源可靠,反之,认为不可靠,丢弃;然后,如果消息经鉴别是可靠的,还要进行及时性检查,即比较消息携带的时间与本地时间,若在时间窗口内,则认为消息未被延迟、重放,是可信的,若在时间窗口外,则丢弃;最后,如果消息是加密的,对消息进行解密。,3、SNMP v3 安全机制分析,SNMPv3的安全机制包括认证、加密和访问控制。 1)SNMP报文采用DES加密; 2)SNMP管理站和SNMP Agent通信时必须通过验证来保证身份的正确性、信息的完整性。 3)SUMP Agent实现了User-Based和View-Based访问控制

20、模型。,3.1 基于用户的安全模型USM,SNMP v3提出了四个安全目标: 1)对每一个接收到的SNMP消息进行认证检查,确认其在传输过程中没有被修改(包括非故意修改),即数据完整性认证; 2)提供对发送消息的用户的身份认证,防止伪装用户; 3)提供对过时消息的检测,防止消息的重定向、延迟或重发; 4) 必要时提供对消息的加密保护,避免管理信息的暴露,为实现上述目标,SNMPv3采用了基于用户的安全模型(USM)。定义了USM的规范,包括: 鉴别:提供数据整体性和数据发送源鉴别。消息鉴别代码和散列函数MD5或SHA-1一起来提供鉴别。 及时性:保护消息在传输过程中不被延时或重播。 保密:保护

21、消息有效内容不被泄密。 发现:定义一个SNMP引擎获得关于另一个SNMP引擎的信息的过程。 密钥管理:定义了密钥产生、更新和使用的过程。,使用USM时的SNMPv3消息格式;阴影部分的取值是经过USM创建/处理的。,3.1.1 涉及概念,1、用户:SNMPv3用户是一个发出SNMP操作的实体,可以是一个或一些管理员,或是执行网管操作的应用程序等。用户的身份和目标代理的相关配置一起决定了将要调用的安全机制认证、加密和访问控制等。 2、权威的(authoritative)SNMP协议引擎:为了防御重放、延迟等攻击,在参与通信的SNMP协议引擎中应有一方被指定为权威的SNMP协议引擎。当一个SNMP

22、消息需要应答时,消息接收方的SNMP协议引擎就是权威的SNMP协议引擎;当SNMP消息不需要应答时,则消息发送方的SNMP协议引擎是权威的SNMP协议引擎。,3、本地化密钥:USM的认证和加密机制需要在通信的两个协议引擎之间共享认证密钥和加密密钥。为了简化密钥的管理,SNMPv3允许管理员不直接指定每个用户的实际密钥,而是为用户配置口令(password)。口令经过处理生成中间密钥,然后再由中间密钥和权威引擎ID一起进行密钥的本地化,将中间密钥转换成用户相对于某个权威引擎的本地化密钥,以区别于用户在其它SNMP协议引擎上的密钥。这样,即使已知某个用户对应某个SNMP协议引擎的密钥,也不能猜测出

23、该用户对应其它SNMP协议引擎的密钥。,3.1.2 认证,USM采用HMAC(Keyed-Hashing for Message Authentication)来实现消息的数据完整性和数据源身份认证。它使用一个安全的HASH函数和一个认证密钥来生成消息的身份鉴别码。标准协议使用MD5和SHA1作为HASH函数,并截取HASH值的前96比特作为有效认证码,因此被相应地称为HMAC-MD5-96认证协议和HMAC-SHA-96认证协议。,1)数据完整性认证: 通信的两个SNMP实体共享一个认证密钥。发送方在发送SNMP消息之前,利用认证密钥和HASH函数为SNMP消息计算认证码,并将认证码插入到消

24、息中一起传输。接收方收到该消息后,使用同样的方法计算该消息的认证码。得到的认证码如果与消息附带的认证码相同,即说明该消息在传输过程中未被修改。 对SNMP消息的认证确保了消息数据的完整性,从而防止对网管信息的更改攻击。,2)数据源认证 由于认证码的产生与使用的密钥相关,而认证密钥与用户有着一一对应的关系。如果不知道用户的认证密钥,就无法以该用户的身份生成正确的认证码。所以通过比较认证码就能够确认数据源身份的真实性。数据源认证能防止伪装攻击。 3)及时性认证 提供对报文延迟和重发的保护。在SNMP报文中设置一个时间戳记来进行时间检查。该时间戳记值预先测定,若信息在以该时间戳记为中心的某一个窗口到

25、达,则认为未被延时。窗口一般默认为150秒。及时检查只有在对报文进行认证时才执行。它可以防止消息流更改攻击。,3.1.3 加密,为了防止信息泄露,USM对SNMPv3报文负载进行加密保护。报文负载是指由上下文引擎ID、上下文名和SNMP协议数据单元(PDU)组成的范围协议数据单元(scopedPDU)。标准协议通过密码块链接模式的数据加密标准(CBC-DES)为报文负载提供保护。使用加密功能的通信双方共享一个私有秘密值。该秘密值包含加密密钥和其它信息。并可采用一个“salt”值,用于每次加密时改变初始化向量。报文的接收方使用这个共享私有秘密值得出加密密钥,并利用pre-IV和报文中携带的“sa

26、lt”值计算得出初始化向量,以解密数据。,加密功能可以有效地防止信息泄露。经过加密处理的SNMPv3消息即使被非法获取,攻击方因为不知道密钥也不能提取其中的网管信息。SNMPv3规定,如果使用加密功能,则必须同时使用认证功能。,3.1.4 USM局限,安全威胁与USM安全机制的对应关系如下表:但是,USM目前并没有包含应对拒绝服务和流量分析这两种威胁的措施。原因是: 1) 拒绝服务在许多情况下与网络失效无法区别,而网络失效是任何网络管理系统理所当然应该处理的问题,安全机制不宜自行处理; 2)拒绝服务攻击可能破坏所有类型的信息交换,它是整个安全工具的问题,而不是仅仅局限于网络管理协议这一部分。

27、3) 没有针对流量分析的措施则是因为这种威胁难以发现和控制,并且其危害性相对较小,3.2 基于视图的访问控制模型VACM,安全性的另一个主要内容是访问控制。在SNMPv1和SNMPv2c中主要采取了基于团体的访问控制机制。SNMPv3引入了更加安全灵活的访问控制方式基于视图的访问控制模型(VACM)。 它使得管理员可以对SNMP协议引擎进行配置,控制管理站对管理信息的访问。对MIB中管理对象的访问控制主要有两部分内容: 1)限制用户只能访问全部管理对象的一部分; 2)是限制用户对该部份管理对象只能进行限定的操作。,3.2.1 基本概念,1) SNMP上下文(SNMP context):SNMP

28、上下文,简称上下文(context),是SNMP实体可访问的管理信息(对象实例)的集合。一条管理信息可以存在于多个上下文中。一个SNMP实体可访问多个上下文。由于一种管理对象类型在一个管理域中可能存在多个对象实例,因此可能出现在一个管理域中不能唯一的标识出一个对象实例的情况。针对这种情况可将一个管理域划分为多个范围,即“上下文”。在上下文中可以单独标识出一个实例。通常,一个上下文可以是一个物理设备,或是一个逻辑设备,或是一个物理设备的一部分,也可以是多个设备的组合。,2)视图子树(view subtree):代表一个管理对象实例的集合,这些管理对象实例的对象标识符有相同的前缀。一个视图子树由该

29、子树中所有对象实例都具有的最长对象标识符前缀来标记。例如:1.2.3.4.1、1.2.3.4.2、1.2.3.4.3同属于一个视图子树1.2.3.4 3)视图树家族(ViewTreeFamily):可以看作一系列结构相似的视图子树的集合,包含一个对象标识符(家族名)和一个位串(家族掩码)。家族掩码是一个二进制串,指示家族名中某一个子标识对家族的定义是否有意义。掩码的每一位对应于一个子标识位置,最高位对应第一个子标识、次高位对应第二个子标识,以此类推,4)MIB视图(MIB View) MIB视图是全部MIB管理对象的一个子集。由于MIB是以树状结构定义的,因此MIB视图可以方便地用一系列视图子

30、树来定义。VACM用视图树家族来代表一系列视图子树,再基于视图树家族来定义MIB视图。一个简单的MIB视图可以被定义成一个视图树家族,而复杂的MIB视图可以由许多视图树家族组成。这些视图树家族可以包含(included)于MIB视图之内,或是排除(excluded)在该MIB视图之外。包含于某个视图之内的视图树家族所代表的视图子树的全部叶结点就是该视图所包含的管理对象集合。,此外,SNMPv3定义了不同的安全级别,包括无认证无加密、认证但无加密、认证并加密,当然无认证但加密没有实际意义。执行访问控制检查时,用户的安全级别也作为输入参数。同一个组名在不同的安全级别下可以分配不同的访问权限。由上可知,使某个视图对某个组的用户在某种操作下可见的过程就是为组授权的过程,可以描述为以下几步:,1)将具有相同权限的用户划分到同一个组当中; 2)明确该组的每种操作有权访问的对象,即每种操作可以访问的视图; 3)确保相关视图已经存在。在这个步骤中可能需要创建或修改视图; 4)建立视图与组的关联。,3.2.2 工作原理,VACM定义了一组根据用户身份来

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论