0


网络安全协议及分析 第七章 网管安全SNMPv3

第七章 网管安全SNMPv3

SNMPv3的基本概念

SNMPv3协议可看作一个安全规范,它定义一种标准化的SNMP框架结构,为两种SNMPv1与SNMPv2消息提供各种安全功能

SNMPv3提供数据完整性保护和数据源发认证功能,并把该类安全服务作为其首要目标。此外,它还提供机密性和有限的传输流机密性保护,并且能够防止重放攻击。它把安全服务分为三个级别:

  • 不认证不加密(NoAuthNOPriv,用1表示);
  • 认证不加密(authNoPriv,用2表示);
  • 认证且加密(authPriv,用3表示)。

SNMPv3的体系结构

SNMPv3没定义新的网管操作、消息类型与PDU结构,主要改进在于安全性

  • 定义一种标准化的SNMP框架结构
  • 为两种SNMPv1与SNMPv2消息提供各种安全功能

SNMPv3实体的主要类型

  • 管理器(Manager):请求发送与响应接收
  • 代理(Agent):请求接收与响应发送
  • 代理服务器(Proxy):请求与响应转发

SNMP引擎与SNMP实体是一对一的关系,它包括消息发送与接收以及认证与加密功能,同时能够提供对被管对象的访问控制。每个SNMP引擎都有一个ID(snmpEngineID),处于同一管理域的每个引擎ID应该不同。

  • 调度程序(Dispatcher Model):负责SNMP消息的发送与接收
  • 消息处理模块(Message Processor Model):负责SNMP消息的分析与处理
  • 安全模块(Security Model):负责SNMP消息的认证与加密
  • 访问控制模块(Access Control Model):负责MIB中对象的访问控制

SNMPv3的消息及消息处理模型

消息:版本、首部、安全参数、ScopedPDU数据

  • 首部:消息ID、最大长度、标志、安全模型
  • 加密的PDU:二进制串
  • 明文ScopedPDU:contextEngineID、contextName、数据
  • PDU:请求ID、错误状态、错误索引、VBL
  • VBL:变量1、变量1值、…、变量n、变量n值

SNMPv3定义了8种ScopedPDU:

  • 读类:读管理信息,包括GetRequest-PDU、GetNextRequest-PDU以及CetBulkRequest-PDU;
  • 写类:更改管理信息,即SetRequest-PDU;
  • 响应类:对请求的响应,包括Response-PDU和Report-PDU
  • 通知类:通知操作,包括SNMPv2-Trap-PDU和InformRequest-PDU;
  • 内部类:用于SNMP引擎之间的通信,即Report-PDU。
GetRequest-PDU
  • 请求读取对象值时,发送方使用GetRequest-PDU。接收方会处理其VBL中包含的所有对象。如果在本地MIB中找到这个对象,会读取相应的值以构造响应信息,否则值字段应被设置为空。
  • 当所有的对象都处理完成后,接收方通过Response-PDU返回应答,其“消息ID”和“请求ID"字段值与请求消息相同,“错误状态"和“错误索引"字段根据对变量的处理结果设置。
GetNextRequest-PDU

GetNextRequest-PDU既可以读取单个对象,也可以读取表格。

GetBuIkRequest-PDU

GetBulkRequest-PDU的处理方式与GetNextRequest-PDU类似,但它为SNMP通信双方提供了批量交互数据的能力,从而提高了通信效率。

SetRequest-PDU

SetRequest-PDU用于更改管理对象的值。在收到该请求后,回应方会对PDU进行两步检查:第一步检查OID的合法性,第二步修改对象值。

InformRequest-PDU
  • InformRequest-PDU用于一个管理站向另一个管理站发送通知消息或者请求其控制的管理信息。
  • 回应方收到InformRequest-PDU后,应返回Response-PDU应答。在不发生差错的情祝下,应答与请求的内容相同。
Response-PDU

Response-PDU用于对上述5类PDU的响应

SNMPv2-Trap-PDU

被管节点通过SNMPv2-Trap-PDU向管理站报告某个事件发生或某个条件具备。它的VBL设置与InformRequest-PDU类似,但它不需要应答。

Report-PDU
  • 不是用于管理站和被管节点之间交互管理信息,而是用于错误通告。
  • 这种错误通告并不是像发送Trap信息那样通告设备的异常情况,而是表示协议操作过程中所发生的错误。

基于用户的安全模型USM

  • 用户提供用户名/口令,USM则将口令转化为共享密钥,这个过程称为密钥本地化。
  • USM提供数据完整性、机密性保护,提供数据源发认证功能,并能够防止重放攻击。

用户:用户是USM的主体

  • 一个SNMPv3引擎可以有多个用户,它会维护这些用户的信息。
  • 当它需要与另一个引擎通信时,它也必须了解这个引擎已知的用户信息。
  • 同一个用户可以被定义于多个SNMP引擎。 - “用户名(userName)"字符串,用于标识用户,与所使用的安全模型相关。- “安全名(securityName)”字符串,用于标识用户,与所使用的安全模型无关。- 用户名和安全名存在一一对应关系。SNMP应用看到的是安全名,USM看到的则是用户名,USM负责将安全名转化为用户名。

密钥本地化:

  • 认证和加密功能都需要使用共享密钥。
  • USM定义了将用户口令转化为密钥的方法。 - 一个“本地化的密钥”是用户U与一个特定权威引擎E之间共享的密钥。- 一个非权威引擎的本地用户将和远程的权威引擎建立密钥;- 一个权威引擎的本地用户也将与本地引擎建立密钥。

密钥更新

  • USM并未定义密钥交换方法,而是由用户直接指定相关值,即在安装SNMP引擎时,安装者需输入口令,而USM会利用密钥本地化功能将这个口令转化为密钥。
  • 这个密钥可通过人工或其他安全协议发送给远程SNMP引擎。一旦通信双方共享authKey和privKey,即可通过更改远程实体usmUserEntry中的密钥更新对象值以更新密钥。

USM安全机制

  • 安全参数:每个SNMP消息中都包含安全参数字段,用于消息认证和机密性保护。
  • 认证处理:基于MD5的HMAC、基于SHA的HMAC。
  • 加密处理:USM仅对SNMP消息的PDU部分进行加密处理。

基于视图访问控制模型VACM

VACM要素

  • 组:一个组包含了0个或多个<securityModel,securityName>二元组。每个二元组都描述了一个用户,同一组中的用户具有相同的访问权限。每个组用"groupName"标识。
  • 安全级别:SecurityLevel描述一个组的安全需求,其含义及取值与USM所定义的安全级别相同。
  • 上下文:上下文是SNMP实体可以访问的管理信息集合。一个上下文中可包含多条管理信息,一条管理信息也可以位于不同的上下文中。
  • MIB视图:一个上下文中管理对象的子集
  • 视图家族:由标识符(家族名)与字符串(家族掩码)组成
  • 访问策略:由不同视图获得的访问权限 - 读视图:包含这个组可以实施读访问的对象实例集合。- 写视图:包含这个组可以实施写访问的对象实例集合。- 通知视图:包含这个组生成的通知消息中可包含的对象实例集合。

认证流程:接口原语

所使用的安全模型、用户安全名、所需的安全级别、访问类型(读、写、通知)、待访问的上下文以及上下文中的变量。

执行流程:

  • 用contextName从vacmContextTable中查找上下文,如果没有找到,返回noSuchContext
  • 用securityModel与securityName从vacmSecurityToGroupTable中查找组,如果没有找到,返回noSuchGroup
  • 用securityModel、securityLevel、contextName与groupName从vacmAccessTable中查找行,如果没有找到,返回noAccessEntry
  • 用viewType从vacmAccessTable中查找视图类型,如果没有找到,返回noSuchView
  • 用viewName在vacmViewTreeFamilyTable中查找视图子树,如果没有找到,返回noSuchView
  • 用variableName在vacmViewTreeFamilyTable查找管理对象,如果找到,返回notInView;否则,返回accessAllowed

认证流程:

  • VACM配置 - Initial-minimum-security-configuration- Initial-semi-security-configuration- initial-no-access-configuration
  • 初始的访问权限 - noAuthNoPriv:不认证不加密- authNoPriv:认证不加密- authPriv:认证且加密

小结

SNMP是TCP/IP协议族下的网络管理框架

SNMP框架包括管理站、被管节点、通信协议和管理信息

SNMP最早的版本是SNMPv1,这个版本使用基于共同体名的访问控制机制,这个共同体名相当于一个明文口令。

SNMPv1不提供数据机密性和完整性保护。

SNMPv3沿用SNMPv2的框架

增加机密性、完整性保护功能,同时可以防止重放攻击。

SNMPv3实体由一个SNMP引擎和若干个应用构成,引擎包括:

调度程序、消息处理模块、安全模块、访问控制模块

SNMPv3应用包括:

命令生成器、命令接收器、通告生成器、通告接收器、代理转发器

SNMPv3定义了8种ScopedPDU:

  • 读类:读管理信息,包括GetRequest-PDU、GetNextRequest-PDU以及CetBulkRequest-PDU;
  • 写类:更改管理信息,即SetRequest-PDU;
  • 响应类:对请求的响应,包括Response-PDU和Report-PDU
  • 通知类:通知操作,包括SNMPv2-Trap-PDU和InformRequest-PDU;
  • 内部类:用于SNMP引擎之间的通信,即Report-PDU。

基于用户的安全模型USM

  • MAC实现消息完整性保护和数据源发认证
  • 认证协议可以使用HMAC-MD5-96和HMAC-SHA-96
  • 使用CBC-DES加密数据以实现机密性保护

基于视图的访问控制模型VACM

  • 包含组、安全级别、上下文、MIB视图和视图族、访问策略,描述主体、访问目标及访问方式。
  • 以组为单位设置访问权限,一个组中包含多个用户。一个上下文中可包含多个MIB视图和视图族,它们是这个上下文对象的子集。
  • VACM将视图分为读、写、通知,用以描述不同的访问策略。

本文转载自: https://blog.csdn.net/m0_60378969/article/details/139974711
版权归原作者 云边娃娃机 所有, 如有侵权,请联系我们删除。

“网络安全协议及分析 第七章 网管安全SNMPv3”的评论:

还没有评论