SNMPv1原理

来源:互联网 发布:打开钱箱的软件 编辑:程序博客网 时间:2024/04/30 13:09

主要内容:

1、概述

在网络管理站与网络管理代理之间或者网络管理站与网络管理站之间要交换网络管理信息,这些网络管理信息的表示方法、组织方式和内容定义需要进行标准化,这些问题属于表示层的问题

还需要一种交互的协议来规定协议数据单元(PDU:Protocol Data Unit)的语法和语义、交互中支持的操作以及交互中的安全问题等内容,这些问题属于应用层的问题,SNMP协议就是解决这些问题的一个应用层协议

SNMPv1于1990年被互联网工程任务组(Internet Engineering Task Force,IETF  注释:它是松散的、自律的、志愿的民间学术组织)正式推出,与1993年被SNMPv2所替代。SNMPv1一经推出,由于其简单易行,获得了广泛的支持

SNMPv1只支持网络管理站与网络管理站代理之间的信息交互,是一种简单的请求/响应协议

SNMPv1给出了基于共同体(Community)的安全机制,在请求方发送的请求中必须带上称为共同体名称的字符串,接收方验证共同体名称的合法性,并给共同体名称合法的请求以一定的访问权限

SNMPv1规定使用UDP协议作为其传输层协议

同一设备上不同的网络应用程序使用端口号进行区分,对于四种请求/响应操作,网络管理代理端使用的指明端口号为161;对于Trap操作,网络管理站端使用的知名端口号为162

2、SNMPv1支持的操作

GetRequest操作

GetNextRequest操作

SetRequest操作

GetResponse操作

Trap操作

3、协议数据单元PDU

四种操作的PDU

Trap操作的PDU

4、SNMPv1的消息处理流程

发送方发送消息的建议处理流程:

按照ASN.1的格式构造PDU

将构造的PDU、发送方的地址、端口和目的方地址、端口以及共同体名称一起发送给认证服务,认证服务完成相应的加密等转换,将结果返回

将生成的PDU以及Community和Version组装成完整的SNMP消息报文

对SNMP消息报文进行BER编码,交传输层传输实体向接收方发送出去


接收方接收消息的建议处理流程:

BER解码恢复消息报文

对解码后的消息报文进行基本的语法检查,丢弃非法消息报文

检查版本号,丢弃版本号不匹配的消息报文

将PDU、发送发地址和端口、接收方地址和端口发送到认证服务:

如果认证失败,认证服务通知协议实体,产生一个authentication-Failure Trap并丢弃该消息报文

如果认证成功,认证服务返回PDU

对PDU进行基本语法检查,丢弃非法的PDU,否则利用共同体名称选择合适的SNMP访问策略,并对PDU进行相应处理

5、基于共同体的安全机制

SNMPv1的消息报文中有一个共同体名称的域,共同体名称相当于口令的作用,SNMPv1提供基于共同体名称的简单的安全机制

网络管理站在对管理代理的MIB对象进行操作的时候,在发送的消息报文中带上定义在该管理代理上的共同体的名称,消息到达管理代理以后代理会检查共同体名称是否合法,如果不合法,代理产生一个authentication-Failure Trap并丢弃请求消息报文,起到了认证的作用

还提供了授权的功能。一个管理代理可能定义了不同的共同体,这些共同体可能具有不用的权利。消息报文经过管理代理的认证合法以后,在读取(GetRequest操作和GetNextRequest操作)或者设置(SetRequest操作)MIB对象值以前,还要根据共同体名称以及MIB对象定义中的访问权限检查操作类型是否具有合法的权限,最后生成GetResponse消息报文

基于共同体名称的安全机制虽然具有简单的认证和授权的功能,但是基本上不能发挥安全保障的作用,存在很多的问题,例如:

多数网络设备存在缺省的共同体定义和缺省的共同体名称,任何人都可以利用,轻松获得网络设备的访问权限

即使取消缺省的共同体名称,采用自定义的共同体名称,由于SNMPv1消息报文没有任何的加密机制,以明文的方式在网络上传输,攻击者可以轻松获得包含消息报文中的共同体名称,从而获得网络设备的访问权限

6、SNMP4J对SNMPv1的支持分析

PDU格式

消息处理模型



0 0
原创粉丝点击