• 1. 第七章 SNMPv3分析 7.1 SNMP的安全问题 7.2 SNMPv3协议框架 7.3 SNMPv3安全机制
  • 2. 7.1 SNMP的安全问题 SNMP制定之初并没有过多地考虑其安全性,这使其早期版本存在安全隐患。 随着网络安全的日趋重要,在SNMP的发展过程中也出现了一些安全方面的增强方案。这些方案虽然没有形成统一的标准,也没有得到广泛应用,但是对后来SNMPv3的形成具有借鉴意义。
  • 3. 7.1.1 SNMP早期版本的安全机制及其缺陷 SNMPv1存在一些明显的缺陷,其中之一就是忽视了安全问题。SNMPv1只提出了基于团体(community)的安全机制。一个SNMP团体是一个SNMP代理和任意一组SNMP管理站之间的一种关系,它定义了认证和访问控制的特性。 团体是定义在代理上的一个本地概念。代理为每一个必要的认证和访问控制特性的联合建立一个团体,每个团体拥有唯一一个名字。团体之中的管理站必须使用该团体的团体名进行Get和Set操作。
  • 4. (1)认证服务 认证服务用于保证通信是可信的。在SNMP消息中,认证服务将向消息接收者保证该消息的确是从它所声明的来源发出的。SNMP仅提供了一种很简单的认证方式:从管理站发往代理的每个消息都包括一个团体名,起口令的作用。如果该团体名存在于代理已知的团体名列表中,则该消息被认为是可信的,接收该消息;否则,消息不可信,丢弃该消息。 (2)访问控制策略 通过定义团体,代理可以限制它的MIB只能被选定的一组管理站访问。而通过定义多于一个的团体,代理能够为不同的管理站提供不同的MIB访问权限。
  • 5. 但是,团体名通常以明文形式随SNMP报文传输。对于熟悉SNMP的人来说,可以很容易地从网络上捕获的SNMP报文中分析得到团体名,从而盗用某些权限、进行非法的操作。
  • 6. 7.1.2 SNMP面临的安全威胁 在实际中广泛使用的SNMPv1/v2c采用以明文传输的团体名作为认证手段。这种脆弱的保护机制使得SNMP面临着一系列安全威胁。这些威胁包括: (1)伪装(Masquerade) 一些未授权的实体可以伪装为已授权实体的身份,去执行只有授权实体才可以执行的管理操作,从而获得额外的特权。
  • 7. (2)信息更改(Modification of Information): 一个实体可以更改由另一授权实体产生的正在传输的报文,从而导致越权的管理操作。这种威胁的本质就是未授权的实体可以修改任何管理参数,包括配置、操作和计费方面的参数。 (3)信息泄漏(Disclosure of Information): 实体可以观测管理者与代理之间的信息交换,从而获得管理对象的值,并获知所报告的事件。例如,通过观测更改口令的Set命令,可以使攻击者获知新口令的内容。
  • 8. (4)消息流更改(Message Stream Modification): SNMP被设计成在无连接的协议上运行。因此,SNMP消息有可能被重排、延迟或者重放(复制),从而导致越权的管理操作。例如,一个重新启动设备的消息可能被复制,并在将来某一时刻重放,导致非授权的操作。 (5)拒绝服务(Denial of service): 阻止管理者与代理之间的信息交换,或阻止通信设备的正常使用和管理。这种攻击或者是阻止所有发往特定目的站点的消息、或者是对网络进行破坏使其不能运行、或者是发送大量消息使网络过载从而降低其性能。 (6)流量分析(Traffic analysis): 分析管理者和代理之间信息交换的一般模式。
  • 9. 7.2 SNMPv3协议框架 7.2.1 SNMPv3的体系结构 SNMPv3定义了新的体系结构,并在其中包含了对SNMPv1和SNMPv2的兼容,即这个新的体系结构也适用于SNMPv1及SNMPv2,弥补了SNMP没有完整体系结构的缺点。 在SNMPv3中,管理进程与代理统称为SNMP实体(entity)。SNMP实体由SNMP协议引擎(engine)和应用程序(application)组成。SNMP实体包含一系列模块,模块之间相互作用来提供服务。
  • 10. SNMPv3实体的组成结构图
  • 11. 1 SNMP协议引擎 SNMP协议引擎负责执行SNMP协议操作,为各类SNMP应用程序提供服务。每个SNMP协议引擎由一个SNMP协议引擎ID来标识。在整体上执行两种功能: 1)从SNMP应用中接收流出的PDU执行必要的处理,包括插入鉴别代码和加密,然后把PDU封装到用于传输的消息中去。 2) 从传输层接收流进的PDU,执行必要的处理,包括鉴别和解密,然后从消息取出PDU,并把PDU传送到适当的SNMP应用中去。
  • 12. 2 SNMP协议引擎包含如下模块: (1)调度器 调度器是同应用程序及消息处理模型进行交互,负责SNMP消息的分发、传输和接收。每个SNMPv3协议引擎含有一个调度器,它可以对多种版本的SNMP消息提供支持。其主要功能如下: 接收和发送SNMP消息; 根据消息的版本号,将其交给相应的消息处理模型处理; 从消息中得到SNMP PDU,传给应用程序; 从应用程序接收需发送的SNMP PDU。
  • 13. (2)消息处理子系统 消息处理子系统由一个或多个消息处理模型组成,主要负责完成以下功能:准备要发送的消息;从接收到的消息中提取数据。 消息处理子系统包括SNMPv1、SNMPv2c、SNMPv3等消息处理模型,分别处理不同版本的消息。消息处理模型定义了特定版本的SNMP消息的格式,以及如何对该版本的SNMP消息进行解析、从中提取数据和如何构造该版本的SNMP消息。
  • 14. (3)安全子系统 安全子系统提供SNMP消息的认证和加密服务。它可以包含多个安全模型,标准协议使用的安全模型为RFC3414定义的基于用户的安全模型(USM)。用户也可以定义自己的安全模型。 安全模型要指出它所防范的安全威胁、服务的目标和为提供安全服务所采用的安全协议。安全协议的内容包括一系列安全机制和为实现安全服务所定义的MIB对象等。
  • 15. (4)访问控制子系统 访问控制子系统通过一个或多个访问控制模型提供确认对被管理对象的访问是否合法的服务。SNMPv3默认的访问控制模型为RFC3415所描述的基于视图的 访问控制模型(VACM)。 访问控制模型还可以定义访问控制处理过程中使用的MIB模块,以实现对访问控制策略的远程配置。
  • 16. 3 SNMP应用程序 SNMP应用程序利用SNMP协议引擎提供的服务完成特定的网络管理任务。不同SNMP实体的应用程序相互间通过SNMP消息进行通信。应用程序主要包括以下几类: (1)命令产生器:产生SNMP请求消息,并处理对这些请求的响应。 (2)命令响应器:提供对SNMP请求消息的应答。 (3)通知产生器:产生和发送异步的通知消息。 (4)通知接收器:接收并处理异步的通知消息。当通知消息需要确认时,通知接收器应用程序还需生成相应的应答消息。 (5)委托转发器:用于在网管实体之间转发网管消息。
  • 17. 7.2.2 SNMPv3协议操作 SNMPv3协议
  • 18. SNMP v1SNMP v2cSNMP v3 支持的PDUGetrequest Getnextrequestgetresponse Setrequest trap五种Getrequest Getnextrequest Response setrequest Getbulkrequest Informrequest trap、report八种Getrequest Getnextrequest Response Setrequest getbulkrequest Informrequest trap、report八种 安全性使用明文传输的团体名进行安全机制管理,安全性低 使用明文传输的团体名进行安全机制管理,安全性低基于用户的安全模型(认证和加密),基于视图的访问控制模型,安全性很高 复杂性简单,使用广泛简单,使用广泛开销大,比较繁琐SNMP目前有v1、v2c、v3三个版本
  • 19. 名称 编码 功能说明 GetRequest 0 管理站至代理,查询指定变量的值GetNextRequest 1 管理站至代理,查询下一变量的值Response 2 代理至管理站,回送执行结果(正确/差错)SetRequest 3 管理站至代理,设置代理维护的某个变量的值GetBulkRequest 4 管理站至代理,传递批量信息InformRequest 5管理站至管理站,传递参数处理请求Trap 6 代理至管理者的警告消息Report 7 Snmpv2未定义;snmpv3定义为在消息的PDU部分不能解密时,发起报告。
  • 20. 报头由下列部分组成: msgVersion:表示消息的版本号,在SNMPv3中它的值是3. msglD:消息标识符,用来标识PDU.取值范围是 0~231-1 msgMaxSize:表示消息发送器支持的最大消息尺寸,取值范围是484~231-1
  • 21. msgFlags:包含若干标志的8位位组字符串,有3个特征位:reportableFlag, privFlag和authFlag。 如果reportable=1,那么在能够导致Report PDU生成的情况下,消息接收方必须向发送方发送Report PDU; 当reportable=0时,消息接收方则不必发送ReportPDU。 只有在消息的PDU部分不能被解码时(例如由于密钥错误而解密失败)才会用到。
  • 22. 后两个标志privFlag和authFlag被发送方用来指示消息的安全级别, 如果privFlag=1,则应用了加密, 如果authFlag=1,则应用了鉴别。 除了privFlag=1, authFlag=0的情况外,其它 任意组合都是可以接受的,也就是说没有鉴别的加密是无意义的。
  • 23. msgSecurityModel:消息安全模型,用于标识发送方用于生成该消息的安全模型,发送方和接收方必须采用相同的安全模型。msgSecurityParameters:安全参数,由发送方安全子系统生成的安全参数,例如用 户名、消息鉴别码(MAC)、加密参数等,用于保护消息传输的安全,并由接收方安全子系统用来对消息进行解密和鉴别等安全处理.
  • 24. contextEngineID:唯一识别SNMP实体的标识符。对于流入消息,该字段用于确定将PDU递交给哪个应用进行处理;对于流出消息,该值由上层应用提供,并代表那个应用程序; contextName:携带的管理对象所在的上下文的名称; PDU: 带有对象绑定列表的PDU。 其中最后三个字段(contextEngineID, contextName和PDU)合起来称为scoped PDU.
  • 25. 7.3 SNMPv3安全机制分析 SNMPv3的安全机制包括:认证、加密、访问控制 7.3.1 基于用户的安全模型(USM) SNMPv3提出了四个安全目标: 1)对每一个接收到的SNMP消息进行认证检查,确认其在传输过程中没有被修改(包括非故意修改),即数据完整性认证; 2)提供对发送消息的用户的身份认证,防止伪装用户; 3)提供对过时消息的检测,防止消息的重定向、延迟或重发;
  • 26. 4) 必要时提供对消息的加密保护,避免管理信息的暴露。 为实现上述目标,SNMPv3采用了基于用户的安全模型(USM)。定义了USM的规范,包括: 鉴别:提供数据整体性和数据发送源鉴别。消息鉴别代码HMAC和散列函数MD_5或SHA-1一起来提供鉴别。 及时性:保护消息在传输过程中不被延时或重播。 保密:保护消息有效内容不被泄密。
  • 27. 发现:定义一个SNMP引擎获得关于另一个SNMP引擎的信息的过程。 密钥管理:定义了密钥产生、更新和使用的过程。
  • 28. 1基本概念 1)用户 SNMPv3用户是一个发出SNMP操作的实体,可以是一个或一些管理员,或是执行网管操作的应用程序等。用户的身份和目标代理的相关配置一起决定了将要调用的安全机制——认证、加密和访问控制等。 2)权威的(authoritative)SNMP协议引擎 为了防御重放、延迟等攻击,在参与通信的SNMP协议引擎中应有一方被指定为权威的SNMP协议引擎。当一个SNMP消息需要应答时,消息接收方的SNMP协议引擎就是权威的SNMP协议引擎;当SNMP消息不需要应答时,则消息发送方的SNMP协议引擎是权威的SNMP协议引擎。相应的,通信中另一方的SNMP协议引擎被称为非权威的SNMP协议引擎。
  • 29. 3)本地化密钥 USM的认证和加密机制需要在通信的两个协议引擎之间共享认证密钥和加密密钥。为了简化密钥的管理,SNMPv3允许管理员不直接指定每个用户的实际密钥,而是为用户配置口令(password)。口令经过处理生成中间密钥,然后再由中间密钥和权威引擎ID一起进行密钥的本地化,将中间密钥转换成用户相对于某个权威引擎的本地化密钥,以区别于用户在其它SNMP协议引擎上的密钥。这样,即使已知某个用户对应某个SNMP协议引擎的密钥,也不能猜测出该用户对应其它SNMP协议引擎的密钥。
  • 30. 2 认证 USM采用HMAC(Keyed-Hashing for Message Authentication)来实现消息的数据完整性和数据源身份认证。它使用一个安全的HASH函数和一个认证密钥来生成消息的身份鉴别码。标准协议使用MD5和SHA1作为HASH函数,并截取HASH值的前96比特作为有效认证码,因此被相应地称为HMAC-MD5-96认证协议和HMAC-SHA-96认证协议。
  • 31. 1)数据完整性认证 通信的两个SNMP实体共享一个认证密钥。发送方在发送SNMP消息之前,利用认证密钥和HASH函数为SNMP消息计算认证码,并将认证码插入到消息中 一起传输。接收方收到该消息后,使用同样的方法计算该消息的认证码。得到的认证码如果与消息附带的认证码相同,即说明该消息在传输过程中未被修改。 对SNMP消息的认证确保了消息数据的完整性,从而防止对网管信息的更改攻击。
  • 32. 2)数据源认证 由于认证码的产生与使用的认证密钥相关,而认证密钥与用户有着一一对应的关系。如果不知道用户的认证密钥,就无法以该用户的身份生成正确的认证码。所以,通过比较认证码就能够确认数据源身份的真实性。 数据源认证能防止伪装攻击。
  • 33. 3)及时性认证 提供对报文延迟和重发的保护。在SNMP报文中设置一个时间戳记来进行时间检查。该时间戳记值预先测定,若信息在以该时间戳记为中心的某一个窗口到 达,则认为未被延时。窗口一般默认为150秒。 及时检查只有在对报文进行认证时才执行。它可以防止消息流更改攻击。
  • 34. 3 加密 为了防止信息泄露,USM对SNMPv3报文负载进行加密保护。报文负载是指由上下文引擎ID(contextEngineID)、上下文名(contextName)和SNMP协议数据单元(PDU)组成的范围协议数据单元(scopedPDU)。标准协议通过密码块链接模式的数据加密标准(CBC-DES)为报文负载提供保护。使用加密功能的通信双方共享一个私有秘密值。该秘密值包含加密密钥和其它信息(如CBC模式所需的初始化向量(IV)的预设值pre-IV)。并可采用一个“salt”值,用于每次加密时改变初始化向量。报文的接收方使用这个共享私有秘密值得出加密密钥,并利用pre-IV和报文中携带的“salt”值计算得出初始化向量,以解密数据。
  • 35. 加密功能可以有效地防止信息泄露。经过加密处理的SNMPv3消息即使被非法获取,攻击方因为不知道密钥也不能提取其中的网管信息。SNMPv3规定,如果使用加密功能,则必须同时使用认证功能。
  • 36. 4 SNMPv3中的加密、认证算法和过程 对称密码体制和非对称密码体制 对称密码体制又称为秘密密钥密码体制(或单密钥密码体制/隐蔽密钥密码体制),即加密密钥和解密密钥相同或一个可由另一个导出。 非对称密码体制又称为公开密钥密码体制,即加密密钥公开,解密密钥不公开,从一个推导出另一个是不可行的。 1) 现代密码体制
  • 37. 分组密码体制和序列密码体制 对称密码体制,又可以分为分组密码体制和序列密码体制。是根据密码算法对明文信息的加密方式进行分类的方法。如果密文仅与给定的密码算法和密钥有关,与被处理的明文数据段在整个明文(或密文)中所处的位置无关,则称为分组密码体制。分组密码体制就是将明文分成固定长度的组,如64bit一组,用同一密钥和算法对每一组加密,输出也是固定长度的密文。 如果密文不仅与给定的密码算法和密钥有关,同时也是被处理的明文数据段在整个明文(或密文)中所处的位置的函数,则称为序列密码体制。
  • 38. 确定型密码体制和概率密码体制 如果一个加密过程可以描述为:当明文和密钥确定后,密文的形式也就惟一地确定,则称为确定型密码体制。前面提到的加密方法中,多数属于这一类。 如果一个加密过程可以描述为:当明文和密钥确定后,密文的形式仍是不确定的,最后产生出来的密文通过客观随机因素从一个密文集合中选出,则称为概率密码体制。
  • 39. SNMPv3的显著特点是其安全性的增强,为增强其安全性,SNMPv3规定使用DES-CBC作为加密算法, HMAC-MD5-96、HMAC-SHA-96作为认证协议。 DES-CBC (Data Encryption Standard-Cipher Block Chaining )为对称密码体制, 1977年被美国国家标准局所采用。 在DES-CBC中,数据按64位块进行加密,使用56位密钥。一个明文分组在被加密之前要与前一个的密文分组进行异或运算。加密算法除密钥外,还需协商一个初始化向量(IV),在第一次计算的时候需要用到。该算法在一系列步骤中对64位的输入进行变换,按64位进行输出。在相同的步骤中使用相同的密钥来进行解密。
  • 40. MD5 报文摘要算法 它可以对任何文件产生一个唯一的MD5验证码,每个文件的MD5码就如同每个人的指纹一样,都是不同的,这样,一旦这个文件在传输过程中,其内容被损坏或者被修改的话,那么这个文件的MD5码就会发生变化,通过对文件MD5的验证,可以得知获得的文件是否完整。 MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
  • 41. 安全散列函数(SHA) 美国国家标准局(NIST)为配合数字签名算法(DSA),在1993年对外公布为安全散列函数。 SHA对任意长度明文的预处理和MD5的过程是一样的,即预处理完后的明文长度是512位的整数倍。SHA的输出是160位,分别存储于5个32位的记录单元中。
  • 42. HMAC 基于加密哈希函数的 MAC 机制 MAC算法使用一个密钥来产生小块的数据,称之为消息鉴别代码,并被添加在消息之后。这种技术假设通信的双方A和B共享一个公用的密钥K。当A要发消息给B时,它便把消息鉴别代码作为消息和密钥的函数计算出消息鉴别代码。消息和鉴别代码一起传输到既定的接收者。 接收者也对所接收到的消息进行相同的计算,使用相同的密钥来产生新的消息鉴别代码, 然后将接收到的代码和计算出来的代码相比较。如果只有发送者和接收者知道密钥的识别号,并且如果接收到的代码和下列计算出来的代码相匹配,则保证完整性。
  • 43. 散列函数的目的是为文件、报文或其他的分组数据产生“指纹”。要用于报文鉴别,散列函数H必须具有如下性质: H能用于任何大小的数据分组x。 H产生定长散列函数值输出。 对任何给定的x,H(x)要相对易于计算,使得硬件和软件实现成为实际可行。 对任何给定的H(x),从H(x)计算x,在计算上是不可行的。这就是所谓的单向性质。 对于任意给定的数据分组X,寻找满足H(Y)=H(X),Y≠X,在计算上是不可行的。这也称为弱碰撞抵抗。 寻找满足H(Y)=H(X)的(X,Y)对,在计算上是不可行的。这也称为强碰撞抵抗。
  • 44. 2) 认证和加密的过程 在SNMPv3消息的安全参数域(msgSecurityParameters)中,USM处理安全字段有: .msgAuthoritativeEngineID:消息相关的权威引擎标识符; .msgAuthoritativeEngineBoots:权威引擎启动/重启次数; .msgAuthoritativeEngineTime:权威引擎时间; .msgUserName:消息所代表的用户; .msgAuthenticationParameters:鉴别码(MAC) ; .msgPrivacyParameters:加/解密参数,用于生成初始向量IV; .scopedPDU:需SNMP应用程序处理的有效载荷。
  • 45. 当接收方收到消息时,引擎首先从消息的msgUserName字段取出用户名(userName ) , 检索用户信息;如果消息需要鉴别,则根据用户的鉴别协议和鉴别密钥对整个消息重新生成MAC码,并与消息携带的MAC比较,若相同,认为消息完整、来源可靠,反之,认为不可靠,丢弃;然后,如果消息经鉴别是可靠的,还要进行及时性检查,即比较消息携带的时间与本地时间,若在时间窗口内,则认为消息未被延迟、重放,是可信的,若在时间窗口外,则丢弃;最后,如果消息是加密的,对消息进行解密。
  • 46. 当发送消息时,引擎检索用户属性信息;如果需要加密,使用用户的加密协议和密钥对消息的scopedPDU域进行加密,设置msgPrivacyParameters参数;如果需要鉴别,将用户名(userName)、权威引擎ID和当前时间插入消息的相应安全参数字段(msgUserName, msgAuthoritativeEngineID, msgAuthoritativeEngienBoots, msgAuthoritativeEngineTime),然后根据用户的鉴别协议和鉴别密钥对整个消息生成鉴别码(MAC),插入msgAuthenticationParameters字段。
  • 47. 5 USM的局限 安全威胁与USM安全机制的对应关系如下表:
  • 48. 但是,USM目前并没有包含应对拒绝服务和流量分析这两种威胁的措施。原因是: 1) 拒绝服务在许多情况下与网络失效无法区别,而网络失效是任何网络管理系统理所当然应该处理的问题,安全机制不宜自行处理; 2)拒绝服务攻击可能破坏所有类型的信息交换,它是整个安全工具的问题,而不是仅仅局限于网络管理协议这一部分。 3) 没有针对流量分析的措施则是因为这种威胁难以发现和控制,并且其危害性相对较小。
  • 49. 7.3.2基于视图的访问控制模型(VACM) 安全性的另一个主要内容是访问控制。在SNMPv1和SNMPv2c中主要采取了基于团体的访问控制机制。SNMPv3引入了更加安全灵活的访问控制方式——基于视图的访问控制模型(VACM)。 它使得管理员可以对SNMP协议引擎进行配置,控制管理站对管理信息的访问。对MIB中管理对象的访问控制主要有两部分内容: 1)限制用户只能访问全部管理对象的一部分; 2)是限制用户对该部份管理对象只能进行限定的操作。
  • 50. 1基本概念 1) SNMP上下文(SNMP context) SNMP上下文,简称上下文(context),是SNMP实体可访问的管理信息(对象实例)的集合。一条管理信息可以存在于多个上下文中。一个SNMP实体可访问多个上下文。由于一种管理对象类型在一个管理域中可能存在多个对象实例,因此可能出现在一个管理域中不能唯一的标识出一个对象实例的情况。针对这种情况可将一个管理域划分为多个范围,即“上下文”。在上下文中可以单独标识出一个实例。通常,一个上下文可以是一个物理设备,或是一个逻辑设备,或是一个物理设备的一部分,也可以是多个设备的组合。
  • 51. 2)视图子树(view subtree) 一个视图子树代表一个管理对象实例的集合,这些管理对象实例的对象标识符含有相同的前缀。一个视图子树由该子树中所有对象实例都具有的最长对象标识符前缀来标记。 例如:1.2.3.4.1、1.2.3.4.2、1.2.3.4.3同属于一个视图子树1.2.3.4。
  • 52. 3)视图树家族(ViewTreeFamily) 视图树家族可以看作一系列结构相似的视图子树的集合。一个视图树家族包含一个对象标识符(称为家族名)和一个位串(称为家族掩码)。家族掩码是一个二进制串,指示家族名中某一个子标识对家族的定义是否有意义。掩码的每一位对应于一个子标识位置,最高位对应第一个子标识、次高位对应第二个子标识,以此类推
  • 53. 一个管理对象若能与某个特定的视图树家族相匹配(match,即包含于该视图树家族中),则必须满足两个条件:一是管理对象的标识符包含的子标识至少与该视图树家族名的子标识一样多;二是当家族掩码的某一位为1时,该对象的对象标识符在该位置上的子标识与家族名在对应位置上的子标识必须相等。掩码为0的位对应的子标识则可以视作通配符处理。 若家族掩码的位数小于对应家族名的子标识数目,则默认用比特1扩展家族掩码的长度。如果对一个家族名指定一个长度为0的掩码,这种扩展规则将导致使用一个所有位均为1的掩码,即家族名的所有子标识都需进行匹配。
  • 54. 例如:一个视图树家族的家族名为1.2.3.4,家族掩码为1010(二进制)。则任何具有1.x.3.y形式前缀(x、y为任意子标识)的管理对象,如1.1.3.4、1.2.3.4、1.2.3.1、1.1.3.1等,都能与这个视图树家族匹配。
  • 55. 4)MIB视图(MIB View) MIB视图是全部MIB管理对象的一个子集。由于MIB是以树状结构定义的,因此MIB视图可以方便地用一系列视图子树来定义。VACM用视图树家族来代表一系列视图子树,再基于视图树家族来定义MIB 视图。一个简单的MIB视图可以被定义成一个视图树家族,而复杂的MIB视图可以由许多视图树家族组成。这些视图树家族可以包含(included)于MIB视图之内,或是排除(excluded)在该MIB视图之外。包含于某个视图之内的视图树家族所代表的视图子树的全部叶结点就是该视图所包含的管理对象集合。
  • 56. 2 VACM的工作原理 VACM定义了一组根据用户身份来确定其访问权限的服务机制,主要处理谁能够访问网络管理信息以及它能访问到哪些管理信息。 VACM首先定义了组(group)的概念。一个组是一个集合,由零到多个<安全模型,安全名>对组成,以组名表示。每个<安全模型,安全名>至多只能属于一个组,它们被作为访问控制模块进行访问权限检查的输入参数。访问权限的分配是按组进行的,对每个组可以分配不同的访问权限。
  • 57. VACM的访问权限定义分为两个部分:一是指明某个组的用户能够访问哪些管理对象,二是指明该组的用户能对这些管理对象进行何种操作(读/写/通告)。 用户可以访问的管理对象通过一个MIB视图来指明。通常,可定义一个MIB视图来包含所有的管理对象,而定义其它MIB视图则只包含部分的管理信息。这样就可以根据需要限制某些用户只能访问某个特定的视图。
  • 58. 用户对管理信息可能执行的操作有读、写、通知三种类型。通过指明每个组在每种操作下可见的视图,就定义了每个组对特定的管理对象能够进行何种操作。 此外,SNMPv3定义了不同的安全级别,包括无认证无加密、认证但无加密、认证并加密。执行访问控制检查时,用户的安全级别也作为输入参数。同一个组名在不同的安全级别下可以分配不同的访问权限。
  • 59. 由上可知,使某个视图对某个组的用户在某种操作下可见的过程就是为组授权的过程,可以描述为以下几步: 1)将具有相同权限的用户划分到同一个组当中; 2)明确该组的每种操作有权访问的对象,即每种操作可以访问的视图; 3)确保相关视图已经存在。在这个步骤中可能需要创建或修改视图; 4)建立视图与组的关联。
  • 60. 3 VACM的特点 VACM引入了组的概念使得访问控制可以建立在对主体权限划分的基础之上。定义访问控制时针对的是组而不是用户,避免了大量从用户到管理信息的映射,减少了需要制定的访问控制规则。 同时,VACM与USM结合为管理员提供了一种基于安全策略的访问控制机制。管理员不仅可以按照用户安全级别、管理信息机密程度的高低来定义用户访问权限,还可以根据用户的工作职能来定义用户的权限。
  • 61. 1)类似将网络用户划分为管理员、超级用户、普通用户等不同的类别,分别规定其所能执行的操作 (例如规定只有在“认证且加密”安全级别下才允许对管理对象进行“写”操作)和访问内容的多寡。 2)类似网络用户中有人负责软件设施维护,有人负责网络硬件设备的维护;对硬件设备的维护又可能分为对路由、交换设备的维护、对服务器的维护等。不同用户所关心的管理信息的侧重点不同,同时可能需要保持一些信息对不相关的人员的隐蔽性。VACM可以根据用户的工作职能分别为他们定义能访问的视图,达到“需者才知”的安全目的。 因此,对于网络管理的实际需求来说,VACM是一种简明而有效的访问控制模型。
  • 62. 7.3.3 VACM 的缺陷及扩展方法 VACM使用强大、灵活的手段将主体可访问的管理信息限定在必需的范围内,提供了对网络管理信息访问的授权和控制决策,但既便如此,仍存在如下安全风险: .较高权限的网络管理员被人利用或自己故意地窜改管理信息; .具有写权限的管理员由于错误或疏忽无意中改变了管理信息,或将敏感信息透漏给别人;
  • 63. .恶意的攻击者多次尝试访问某些敏感信息; .由于错误的授权使敏感信息遭到泄漏或破坏。 这些风险对于某些关键的网络设备,例如核心网路由器、网关、防火墙,是很致命的。 显然,VACM没有提供应付这些风险的能力,所以对其进行扩展,加入审计功能。