当前位置:文档之家› SNMPv3详解概要

SNMPv3详解概要


SNMPv3实体的组成结构图
1 SNMP协议引擎
SNMP协议引擎负责执行SNMP协议操作,为各类 SNMP应用程序提供服务。每个SNMP协议引擎由一个 SNMP协议引擎ID来标识。在整体上执行两种功能: 1)从SNMP应用中接收流出的PDU执行必要的处理, 包括插入鉴别代码和加密,然后把PDU封装到用于传 输的消息中去。 2) 从传输层接收流进的PDU,执行必要的处理, 包括鉴别和解密,然后从消息取出PDU,并把PDU传送 到适当的SNMP应用中去。
(4)访问控制子系统 访问控制子系统通过一个或多个访问控制模型提 供确认对被管理对象的访问是否合法的服务。SNMPv3 默认的访问控制模型为RFC3415所描述的基于视图的 访问控制模型(VACM)。 访问控制模型还可以定义访问控制处理过程中使 用的MIB模块,以实现对访问控制策略的远程配置。
3 SNMP应用程序 SNMP应用程序利用SNMP协议引擎提供的服务完成 特定的网络管理任务。不同SNMP实体的应用程序相互 间通过SNMP消息进行通信。应用程序主要包括以下几 类: (1)命令产生器:产生SNMP请求消息,并处理对这 些请求的响应。 (2)命令响应器:提供对SNMP请求消息的应答。 (3)通知产生器:产生和发送异步的通知消息。 (4)通知接收器:接收并处理异步的通知消息。当 通知消息需要确认时,通知接收器应用程序还需生成 相应的应答消息。 (5)委托转发器:用于在网管实体之间转发网管消 息。
SNMP v3
Getrequest Getnextrequest Response Setrequest getbulkrequest Informrequest trap、report八种
支持的 PDU
安全性
使用明文传输 使用明文传输的团 基于用户的安全模 的团体名进行 体名进行安全机制 型(认证和加密), 安全机制管理, 管理,安全性低 基于视图的访问控 安全性低 制模型,安全性很 高 简单,使用广 泛 简单,使用广泛 开销大,比较繁琐
(3)安全子系统 安全子系统提供SNMP消息的认证和加密服务。 它可以包含多个安全模型,标准协议使用的安全模 型为RFC3414定义的基于用户的安全模型(USM)。 用户也可以定义自己的安全模型。 安全模型要指出它所防范的安全威胁、服务的 目标和为提供安全服务所采用的安全协议。安全协 议的内容包括一系列安全机制和为实现安全服务所 定义的MIB对象等。
contextEngineID:唯一识别SNMP实体的标识 符。对于流入消息,该字段用于确定将PDU递 交给哪个应用进行处理;对于流出消息,该值 由上层应用提供,并代表那个应用程序; contextName:携带的管理对象所在的上下文 的名称; PDU: 带有对象绑定列表的PDU。 其中最后三个字段(contextEngineID, contextName和PDU)合起来称为scoped PDU.
7.1.1 SNMP早期版本的安全机制及其缺陷
SNMPv1存在一些明显的缺陷,其中之一就是忽视 了安全问题。SNMPv1只提出了基于团体(community)的 安全机制。一个SNMP团体是一个SNMP代理和任意一组 SNMP管理站之间的一种关系,它定义了认证和访问控 制的特性。
团体是定义在代理上的一个本地概念。代理为每 一个必要的认证和访问控制特性的联合建立一个团体, 每个团体拥有唯一一个名字。团体之中的管理站必须 使用该团体的团体名进行Get和Set操作。
•发现:定义一个SNMP引擎获得关于另一个SNMP引擎的 信息的过程。 •密钥管理:定义了密钥产生、更新和使用的过程。
1基本概念 1)用户 SNMPv3用户是一个发出SNMP操作的实体,可以是 一个或一些管理员,或是执行网管操作的应用程序等。 用户的身份和目标代理的相关配置一起决定了将要调 用的安全机制——认证、加密和访问控制等。 2)权威的(authoritative)SNMP协议引擎 为了防御重放、延迟等攻击,在参与通信的SNMP 协议引擎中应有一方被指定为权威的SNMP协议引擎。 当一个SNMP消息需要应答时,消息接收方的SNMP协议 引擎就是权威的SNMP协议引擎;当SNMP消息不需要应 答时,则消息发送方的SNMP协议引擎是权威的SNMP协 议引擎。相应的,通信中另一方的SNMP协议引擎被称 为非权威的SNMP协议引擎。
2 SNMP协议引擎包含如下模块:
(1)调度器 调度器是同应用程序及消息处理模型进行交互, 负责SNMP消息的分发、传输和接收。每个SNMPv3协议 引擎含有一个调度器,它可以对多种版本的SNMP消息 提供支持。其主要功能如下: •接收和发送SNMP消息; •根据消息的版本号,将其交给相应的消息处理模型 处理; •从消息中得到SNMP PDU,传给应用程序; •从应用程序接收需发送的SNMP PDU。
(1)伪装(Masque体的身 份,去执行只有授权实体才可以执行的管理操作,从 而获得额外的特权。
(2)信息更改(Modification of Information): 一个实体可以更改由另一授权实体产生的正在传 输的报文,从而导致越权的管理操作。这种威胁的本 质就是未授权的实体可以修改任何管理参数,包括配 置、操作和计费方面的参数。 (3)信息泄漏(Disclosure of Information): 实体可以观测管理者与代理之间的信息交换, 从而获得管理对象的值,并获知所报告的事件。例如, 通过观测更改口令的Set命令,可以使攻击者获知新 口令的内容。
(2)消息处理子系统 消息处理子系统由一个或多个消息处理模型组成, 主要负责完成以下功能:准备要发送的消息;从接收 到的消息中提取数据。 消息处理子系统包括SNMPv1、SNMPv2c、SNMPv3等 消息处理模型,分别处理不同版本的消息。消息处理 模型定义了特定版本的SNMP消息的格式,以及如何对 该版本的SNMP消息进行解析、从中提取数据和如何构 造该版本的SNMP消息。
(4)消息流更改(Message Stream Modification): SNMP被设计成在无连接的协议上运行。因此, SNMP消息有可能被重排、延迟或者重放(复制), 从而导致越权的管理操作。例如,一个重新启动设 备的消息可能被复制,并在将来某一时刻重放,导 致非授权的操作。 (5)拒绝服务(Denial of service): 阻止管理者与代理之间的信息交换,或阻止通 信设备的正常使用和管理。这种攻击或者是阻止所 有发往特定目的站点的消息、或者是对网络进行破 坏使其不能运行、或者是发送大量消息使网络过载 从而降低其性能。 (6)流量分析(Traffic analysis): 分析管理者和代理之间信息交换的一般模式。
7.3
SNMPv3安全机制分析 SNMPv3的安全机制包括:认证、加密、访问控制
7.3.1
基于用户的安全模型(USM)
SNMPv3提出了四个安全目标: 1)对每一个接收到的SNMP消息进行认证检查,确认 其在传输过程中没有被修改(包括非故意修改),即数 据完整性认证; 2)提供对发送消息的用户的身份认证,防止伪装用 户; 3)提供对过时消息的检测,防止消息的重定向、延 迟或重发;
第七章 SNMPv3分析 7.1 SNMP的安全问题
7.2 SNMPv3协议框架
7.3 SNMPv3安全机制
7.1 SNMP的安全问题 SNMP制定之初并没有过多地考虑其安全性, 这使其早期版本存在安全隐患。 随着网络安全的日趋重要,在SNMP的发展 过程中也出现了一些安全方面的增强方案。这 些方案虽然没有形成统一的标准,也没有得到 广泛应用,但是对后来SNMPv3的形成具有借鉴 意义。
4) 必要时提供对消息的加密保护,避免管理信息的暴 露。 为实现上述目标,SNMPv3采用了基于用户的安全模型 (USM)。定义了USM的规范,包括: •鉴别:提供数据整体性和数据发送源鉴别。消息鉴别 代码HMAC和散列函数MD_5或SHA-1一起来提供鉴别。 •及时性:保护消息在传输过程中不被延时或重播。 •保密:保护消息有效内容不被泄密。
后两个标志privFlag和authFlag被发送方用来 指示消息的安全级别, 如果privFlag=1,则应用了加密, 如果authFlag=1,则应用了鉴别。 除了privFlag=1, authFlag=0的情况外,其它 任意组合都是可以接受的,也就是说没有鉴别 的加密是无意义的。
msgSecurityModel:消息安全模型,用于标 识发送方用于生成该消息的安全模型,发送 方和接收方必须采用相同的安全模型。 msgSecurityParameters:安全参数,由发送 方安全子系统生成的安全参数,例如用 户名、消息鉴别码(MAC)、加密参数等,用于 保护消息传输的安全,并由接收方安全子系 统用来对消息进行解密和鉴别等安全处理.
但是,团体名通常以明文形式随SNMP报文传输。 对于熟悉SNMP的人来说,可以很容易地从网络上捕获 的SNMP报文中分析得到团体名,从而盗用某些权限、 进行非法的操作。
7.1.2
SNMP面临的安全威胁
在实际中广泛使用的SNMPv1/v2c采用以明文传输 的团体名作为认证手段。这种脆弱的保护机制使得 SNMP面临着一系列安全威胁。这些威胁包括:
7.2.2 SNMPv3协议操作 SNMPv3协议
SNMP目前有v1、v2c、v3三个版本
SNMP v1
Getrequest Getnextrequest getresponse Setrequest trap五种
SNMP v2c
Getrequest Getnextrequest Response setrequest Getbulkrequest Informrequest trap、report八种
msgFlags:包含若干标志的8位位组字符串,有3 个特征位:reportableFlag, privFlag和 authFlag。 如果reportable=1,那么在能够导致Report PDU生成的情况下,消息接收方必须向发送方 发送Report PDU; 当reportable=0时,消息接收方则不必发送 ReportPDU。 只有在消息的PDU部分不能被解码时(例如由 于密钥错误而解密失败)才会用到。
相关主题