SNMP协议详解<三>
2013-10-30 08:56
148 查看
在上篇文章中,说到了SNMPv3主要在安全性方面进行了增强,采用USM(基于用户的安全模型)和VACM(基于视图的访问控制模型)技术。下面我们就主要讲解SNMPv3的报文格式以及基于USM的认证和加密过程!
1、SNMPv3的消息格式如下图1:
图 1
其中,整个SNMPv3消息可以使用认证机制,并对EngineID、ContextName、PDU消息体部分进行加密。RequestID、MaxSize、Flags、SecurityModel、SecurityParameters构成SNMPv3消息头。
报文中的主要字段定义如下:
RequestID:请求报文的序列号。
MaxSize:消息发送者所能够容纳的消息最大字节,同时也表明了发送者能够接收到的最大字节数。
Flags:消息标识位,占一个字节。
SecurityModel:消息的安全模型值,取值为0~3。0表示任何模型,1表示采用SNMPv1安全模型,2表示采用SNMPv2c安全模型,3表示采用SNMPv3安全模型。
ContextEngineID:唯一识别一个SNMP实体。对于接收消息,该字段确定消息该如何处理;对于发送消息,该字段在发送一个消息请求时由应用提供。
ContextName:唯一识别在相关联的上下文引擎范围内部特定的上下文。
安全参数SecurityParameters又包括以下主要字段:
AuthoritativeEngineID:消息交换中权威SNMP的snmpEngineID,用于SNMP实体的识别、认证和加密。该取值在Trap、Response、Report中是源端的snmpEngineID,对Get、GetNext、GetBulk、Set中是目的端的snmpEngineID。
AuthoritativeEngineBoots:消息交换中权威SNMP的snmpEngineBoots。表示从初次配置时开始,SNMP引擎已经初始化或重新初始化的次数。
AuthoritativeEngineTime:消息交换中权威SNMP的snmpEngineTime,用于时间窗判断。
UserName:用户名,消息代表其正在交换。NMS和Agent配置的用户名必须保持一致。
AuthenticationParameters:认证参数,认证运算时所需的密钥。如果没有使用认证则为空。
PrivacyParameters:加密参数,加密运算时所用到的参数,比如DES CBC算法中形成初值IV所用到的取值。如果没有使用加密则为空。
2、下面根据实际操作,用Wireshark抓取的报文来讲解SNMPv3协议的工作的过程:
说明:192.168.2.110是NMS的ip地址,192.168.2.1是Agent的ip地址
(1)由于SNMPv3进行数据交互的过程中要进行加密和认证,所以NMS首先要从Agent获取AuthoritativeEngineID(标识一个SNMP实体)、AuthoritativeEngineBoots和AuthoritativeEngineTime(同步NMS和Agent时间,保证消息接收的时效性,同时也是用来进行数据认证和加密的参数),如下图2:
图 2
(2)Agent回复NMS请求的参数,回复报文如下图3:
图 3
(3)NMS继续向Agent获取AuthoritativeEngineBoots和AuthoritativeEngineTime参数,如下图4:
图 4
(4)Agent对NMS的请求进行响应,如下图5:
图 5
(5)下面开始正常数据操作,如下图6:
图 6
(6)Agent向NMS响应数据请求,如下图7,传输的数据都进行了加密,可见SNMPv3的安全性:
图 7
下一篇文章的主要内容主要就是讲SNMPv3的认证和加密过程!
1、SNMPv3的消息格式如下图1:
图 1
其中,整个SNMPv3消息可以使用认证机制,并对EngineID、ContextName、PDU消息体部分进行加密。RequestID、MaxSize、Flags、SecurityModel、SecurityParameters构成SNMPv3消息头。
报文中的主要字段定义如下:
RequestID:请求报文的序列号。
MaxSize:消息发送者所能够容纳的消息最大字节,同时也表明了发送者能够接收到的最大字节数。
Flags:消息标识位,占一个字节。
SecurityModel:消息的安全模型值,取值为0~3。0表示任何模型,1表示采用SNMPv1安全模型,2表示采用SNMPv2c安全模型,3表示采用SNMPv3安全模型。
ContextEngineID:唯一识别一个SNMP实体。对于接收消息,该字段确定消息该如何处理;对于发送消息,该字段在发送一个消息请求时由应用提供。
ContextName:唯一识别在相关联的上下文引擎范围内部特定的上下文。
安全参数SecurityParameters又包括以下主要字段:
AuthoritativeEngineID:消息交换中权威SNMP的snmpEngineID,用于SNMP实体的识别、认证和加密。该取值在Trap、Response、Report中是源端的snmpEngineID,对Get、GetNext、GetBulk、Set中是目的端的snmpEngineID。
AuthoritativeEngineBoots:消息交换中权威SNMP的snmpEngineBoots。表示从初次配置时开始,SNMP引擎已经初始化或重新初始化的次数。
AuthoritativeEngineTime:消息交换中权威SNMP的snmpEngineTime,用于时间窗判断。
UserName:用户名,消息代表其正在交换。NMS和Agent配置的用户名必须保持一致。
AuthenticationParameters:认证参数,认证运算时所需的密钥。如果没有使用认证则为空。
PrivacyParameters:加密参数,加密运算时所用到的参数,比如DES CBC算法中形成初值IV所用到的取值。如果没有使用加密则为空。
2、下面根据实际操作,用Wireshark抓取的报文来讲解SNMPv3协议的工作的过程:
说明:192.168.2.110是NMS的ip地址,192.168.2.1是Agent的ip地址
(1)由于SNMPv3进行数据交互的过程中要进行加密和认证,所以NMS首先要从Agent获取AuthoritativeEngineID(标识一个SNMP实体)、AuthoritativeEngineBoots和AuthoritativeEngineTime(同步NMS和Agent时间,保证消息接收的时效性,同时也是用来进行数据认证和加密的参数),如下图2:
图 2
(2)Agent回复NMS请求的参数,回复报文如下图3:
图 3
(3)NMS继续向Agent获取AuthoritativeEngineBoots和AuthoritativeEngineTime参数,如下图4:
图 4
(4)Agent对NMS的请求进行响应,如下图5:
图 5
(5)下面开始正常数据操作,如下图6:
图 6
(6)Agent向NMS响应数据请求,如下图7,传输的数据都进行了加密,可见SNMPv3的安全性:
图 7
下一篇文章的主要内容主要就是讲SNMPv3的认证和加密过程!
相关文章推荐
- SNMP协议详解<三>
- [置顶] SNMP协议详解<三>
- OC一些重要知识点<三>
- GL音乐播放器<三>--界面设计之专辑照片的实现
- android-常用布局-<三>
- Mlue系列<三>发送邮件
- dex2jar源码解析----解析dex文件<三>
- OC面向对象语法<三>
- PostgreSQL学习手册(函数和操作符<三>)
- JDK7新特性<三> JDBC4.1
- Mybatis学习之路之Oracle多表查询<三>
- linux查找搜索命令<三>(whereis)
- JAVA高新技术学习<三>
- Qt5.6 用SQLite数据库验证做登录框,并查删改xml文件做记住密码和自动登录<三>
- IntelliJ IDEA使用技巧<三>
- Kibana4学习<三>
- <Android学习笔记三>Activity之AppCompatActivity与toolbar的结合
- 品味性能之道<三>:方法论
- Caffe部署中的几个train-test-solver-prototxt-deploy等说明<三>
- 数据库SQLite常用语句<三>