SNMP

SNMP概述

SNMP原理

  • SNMP(简单网络管理协议),用来实现设备的统一管理。所有支持SNMP协议的网络设备,网络管理员都可将其统一纳入管理。
    在这里插入图片描述
  • SNMP的发展

在这里插入图片描述

  • SNMPv2c
  • GetBulk:实现了NMS对被管理设备的信息群查询。
  • Inform:被管理设备向NMS(网络管理系统)主动发送告警,需要NMS进行接受确认。
  • SNMPv3
    • 适应性强:适应于多种操作环境,既可以管理最简单的网络,又能够满足复杂网络的管理需求。
    • 方便管理:SNMP框架体系由多个功能相对独立的子系统或应用程序集合而成,因而可以很方便地对其进行管理。例如,若系统发生了故障,可以根据发生故障的功能类型,定位到相应的子系统。
    • 扩展性好:可以很方便地进行系统扩展。比如,为了应用新的安全协议,就可以在安全子系统中为其定义单独的模块,从而在SNMP中支持该协议。

SNMP管理模型

  • 基本概念:
  • NMS:又称为对象命名树,采用SNMP协议对网络设备进行管理的系统。
  • Agent:被管理设备中的一个代理进程,与NMS进行交互。
  • MIB:被管理设备所维护的变量(能够被Agent查询和设置的信息)构成的数据库。
  • Management object:被管理的对象,如设备中的某个硬件(如接口板),也可以是在硬件或软件上配置的参数集合。
  • Device:被管理的设备。
    SNMP管理模型

基本操作

  • NMS通过SNMPv3向被管理设备下发查询和设置操作指令,并接收操作响应信息,同时监听被管理设备发送的告警信息。
    在这里插入图片描述

MIB

  • MIB是一个数据库,其在数据库中定义了被管理设备的一系列属性:对象标识符(OID)、对象的状态、对象的访问权限、对象的数据类型等。
  • MIB分为公有MIB和私有MIB。
  • 常见MIB节点
    在这里插入图片描述
    在这里插入图片描述

SNMPv3与v1、v2相比

  • SNMP v3版本较v1、v2c在安全性方面做了提升。
  • 基本概念:
  • 用户组:拥有特定安全级别属性的一个用户集合。安全级别:
    • 1级:private(鉴权且加密)
    • 2级:authentication(只鉴权)
    • 3级:noauthentication(不鉴权不加密)
  • 视图:允许用户访问的MIB节点集合。
  • SNMPv3安全性增强,具体表现为:
  • 用户安全模块USM
    • 身份验证:Agent或NMS接到信息时首先必须确认信息是否来自有权限的NMS或Agent,并且信息在传输过程中未被改变。
    • 数据加密:通过对称密钥系统,NMS和Agent共享同一密钥对数据进行加密和解密。
  • 基于视图的访问控制模块VACM:对用户组实现基于视图的访问控制。

SNMP交互-Get

以下已Get操作为例,其它操作与之类似。

  • Get操作:从被管理设备的Agent提取一个或多个参数值。下图介绍NMS使用Get操作获取被管理设备特定接口IP地址的交互过程。
    在这里插入图片描述
  • GetNext操作:从Agent中按照字典顺序提取下一个参数值。
  • GetBulk操作:对Agent进行信息群查询。
  • Set操作:通过Agent设置一个或多个参数值。
  • Trap操作:Agent主动向NMS发出信息,告知被管理设备出现的情况。
  • Inform操作:与Trap作用相同,Agent主动向NMS发出信息,告知被管理设备出现的情况,但Inform操作需要NMS进行接受确认。
  • 被管理设备(Device)监听UDP 161端口,Get、GetNext、GetBulk、Set报文目的端口为161。
  • 网络管理系统(NMS)监听UDP 162端口,Trap、Informb报文目的端口为162。
  • 加密模块和鉴权模块分别对应SNMPv3中用户安全模块USM的数据加密和身份验证功能。对发出和收到的SNMP报文进行加密和认证处理。

PySNMP介绍

PySNMP高层接口架构

在这里插入图片描述

PySNMP编码流程图

在这里插入图片描述

PySNMP类的介绍

SnmpEngine类
  • SnmpEngine类:PySNMP模块中的一个核心对象,PySNMP实现所有SNMP操作都涉及 SnmpEngine类实例。
  • 使用方法:engine = SnmpEngine()
UsmUserData类
  • UsmUserData类:PySNMP模块对SNMPv3用户安全模块USM的实现。可以利用该类创建SNMPv3用户及其对应的认证与加密算法。

  • 使用方法:
    userData = UsmUserData(
    ‘admin’, #用户名
    authKey = ‘admin@123’ #认证密钥
    privKey = ‘client@123’, #加密密钥
    authProtocol = usmHMACSHAAuthProtocol, #认证算法
    privProtocol = usmAesCfb128Protocol #加密算法
    )

  • 认证算法和加密算法的取值,可以在http://snmplabs.com/pysnmp/docs/api-reference.html?highlight=usmuserdata#pysnmp.hlapi.UsmUserData获取。

### SNMP协议概述 SNMP(Simple Network Management Protocol)是一种用于管理和监控网络设备的应用层协议[^3]。它最初于1988年被制定,并迅速成为互联网环境中广泛使用的网络管理解决方案之一。目前,SNMP已经发展到了第三版(SNMPv3),提供了更高的安全性和功能性。 #### 协议组成与架构 SNMP的核心组成部分包括以下几个方面: - **管理站(Manager)**:负责发送请求并接收来自代理的信息。 - **代理(Agent)**:运行在网络设备上的程序,收集本地系统的数据并通过SNMP向管理站报告。 - **管理信息库(MIB, Management Information Base)**:定义了一组对象及其语义,供SNMP使用以描述网络资源的状态和性能指标。 SNMP的架构通常分为两种模式: - **主代理模式**:由单一代理直接响应管理站发出的所有查询请求[^1]。 - **子代理模式**:通过引入额外的子代理分担工作负载,其中每个子代理专注于特定类型的MIB视图。这种设计增强了灵活性和可扩展性,尤其是在复杂的分布式环境当中[^4]。 #### 配置指南 以下是针对基于Cisco IOS平台配置SNMP服务的一些基本指导: 1. 启用SNMP服务 要启用SNMP功能,可以通过设置读取团体字符串来允许远程管理系统访问设备的数据。例如: ```shell snmp-server community public RO ``` 2. 设置陷阱目标地址 如果希望当某些事件发生时通知指定的管理站点,则需配置trap receiver参数如下所示: ```shell snmp-server host 10.0.0.1 version 2c private ``` 3. 安全加固措施 对于不再需要的服务应当及时停用以防潜在风险暴露在外网之中。比如停止不必要的SNMP操作可通过下面这条指令完成: ```shell no snmp-server enable traps ``` 若要验证当前状态是否已成功关闭,可以借助`show snmp`命令查看详细情况[^2]。 需要注意的是以上例子仅适用于支持IOS系列固件的产品线;而对于其他品牌或者型号则可能有所差异,请参照对应手册获取确切步骤说明。 --- ### 示例代码片段 以下是一个简单的Python脚本示例,展示如何利用pysnmp库从远程主机检索系统名称OID (`.1.3.6.1.2.1.1.5`) 的值: ```python from pysnmp.hlapi import * errorIndication, errorStatus, errorIndex, varBinds = next( getCmd(SnmpEngine(), CommunityData('public'), UdpTransportTarget(('demo.snmplabs.com', 161)), ContextData(), ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysName', 0))) if errorIndication: print(errorIndication) elif errorStatus: print('%s at %s' % (errorStatus.prettyPrint(), errorIndex and varBinds[int(errorIndex)-1][0] or '?')) else: for varBind in varBinds: print(' = '.join([x.prettyPrint() for x in varBind])) ``` 此段代码展示了如何构建GET请求以及解析返回的结果集。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值