http://www.mibble.org/-----------开源的SNMP的PC上位机程序,支持V1,V2,V3
talbe不支持嵌套 ---(但可以采用多级索引的方式实现嵌套功能)
SNMP v1基本上没有什么安全性可言,在安全方面SNMP v1 存在以下主要的安全问题:SNMP数据包的修改:指一个未经验证的用户捕
获到SNMP数据包后,修改其信息,又把数据包发送到目的站。而接收设备不能得知数据的改变,于是就响应包里的信息,导致安全问
题。
SNMP v2在原有的Get、GetNext、Set、Trap等操作外增加了GetBulk和Inform两个新的协议操作。其中GetBulk操作快速获取大块数据
。Inform操作允许一个NMS向另一个NMS发送Trap信息,并接收一个响应消息
SNMP v2安全标准对数据修改、假冒和数据包顺序改变等安全问题提出了比较满意的解决方案,进一步为安全标准提出了一系列的目
标,提出了分级的安全机制以及验证机制和使用DES标准加密算法。
SNMP v3
V3中主要引入了两个特性:
² USM:User-based Security Model,基于用户的安全模型,支持用户的密码认证机制;
² VACM:View-based Access Control Model,基于试图的访问控制模型,支持不同用户对不同对象集合(view)用户不同的访问权限。
定义了安全方面的扩展能力.
有三个可能的安全级别: noAuthNoPriv, authNoPriv, 和 authPriv.
noAuthNoPriv 级别指明了没有认证或私密性被执行.
authNoPriv 级别指明了认证被执行但没有私密性被执行.
authPriv 级别指明了认证和私密性都被执行.
noAuthPriv(无) 安全级别不存在的一个原因是需要一个消息认证摘要来确保安全参数的完整性, 也就是私密性参数
auth---认证 支持MD5 or SHA;
priv---加密 支持DES or RSA;
snmp的表
单个对象作为表中的列,所有的列组成表中的一行(Entry),若干个行组成一个表(Table),表需要索引
行数多少由agent去实现,MIB文件只有列数, 表格的操作顺序是“先列后行”的次序
SNMPV2概念表,概念行定义必须使用index或AUGMENTS---例如MIB-II中的at组就是个例子
概念行的增加,删除功能,由管理站通过get和set实现,代理需要一个字段RowStatus标识,然后才能管理
SNMP 表
usmUserTabl
--usmUserEntry
--usmUserEngineID //index
--usmUserName //index
usmUserSecurityName 抓包:
usmUserSecurityName.17.49.57.50.46.49.54.56.46.49.46.50.49.56.35.49.54.49.3.122.115.104 (octet string) zsh [7A.73.68 (hex)]
17表示usmUserEngineID长度,内容49.57.50.46.49.54.56.46.49.46.50.49.56.35.49.54.49.
3 表示usmUserName长度,内容122.115.104
(octet string) zsh [7A.73.68 (hex)]---usmUserSecurityName内容
文本约定RowStatus(在mib中添加删除行) .
RFC1212中建议:如果允许增加或删除MIB表结构的行,列对象中应该包含一个名为“xType”或“xStatus”对象,它的语法类型应该是枚举型的整数,这个列对象称为状态列对象。管理工作站可以通过设置状态列对象的值来控制表中行的创建与删除操作。
状态栏列对象有6个定义值:
-active(1),表明状态行是可用的
-notInService(2),表明行存在但不可用
-notReady(3),表明存在,但因为缺少必要的信息而不能用
-createAndGo(4),有管理者设置,表明希望创建一个概念行并设置该行的状态列对象为active
-createAndWait(5),有管理者设置,表明希望创建一个概念行,但不可用
-destroy(6),删除行