网络协议—SNMP协议

admin 2026-01-07 02:59:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文章系统梳理SNMP架构与报文:用Manager-Agent-MIB模型通过UDP161/162完成Get/Set/Trap,演示v2c明文抓包并解读sysServices=78含义,指出public团体名风险,建议升v3加IP白名单并禁公网暴露。 综合评分: 75 文章分类: 网络协议,安全建设,应用安全,网络管理


cover_image

网络协议—SNMP协议

原创

老五

老五说网络

2026年1月5日 16:30 陕西

SNMP基本概念

    SNMP(Simple Network Management Protocol,简单网络管理协议)是一种用于在IP网络中管理和监控网络设备的标准协议。它被广泛应用于路由器、交换机、服务器、防火墙、打印机、UPS等支持网络连接的设备上,是网络运维和IT基础设施管理的重要工具。

一、SNMP 的核心目标

  • 集中监控:通过一个管理站(Manager)监控多个网络设备。
  • 实时状态获取:如 CPU 使用率、内存占用、接口流量、运行时间等。
  • 故障告警:设备异常时主动通知管理员(如端口宕机、温度过高)。
  • 远程配置(有限):部分参数可通过 SNMP 进行远程修改(需写权限)。

二、SNMP 的基本架构

SNMP 采用 客户端-服务器模型,主要包含以下三个要素:

  1. NMS(Network Management Station,网络管理系统)

    Manager管理端,通常是一台运行网管软件(如 Zabbix、PRTG、SolarWinds、LibreNMS)的服务器。主动向设备发起查询或接收设备发送的告警。

  1. Agent(代理)

    运行在被管理设备上的 SNMP 服务程序。负责收集本地信息,并响应 Manager 的请求,也可主动发送告警(Trap/Inform)。

  1. MIB(Management Information Base,管理信息库)

    一个标准化的、树状结构的数据库,定义了设备可被访问的所有管理对象。每个对象由唯一的 OID(Object Identifier) 标识,例如:

  • 1.3.6.1.2.1.1.1.0 → 系统描述(sysDescr)
  • 1.3.6.1.2.1.1.3.0 → 系统运行时间(sysUpTime)

三、SNMP 的通信机制

SNMP 基于 UDP 协议(无连接、轻量级):

  • UDP 161 端口:Agent 监听此端口,接收 Manager 的 Get/Set 请求。
  • UDP 162 端口:Manager 监听此端口,接收 Agent 发送的 Trap 或 Inform 消息。

四、SNMP数据报文分析

1、网络拓扑

2、设备配置

SW:

#vlan 1#interface Vlan-interface1 ip address 192.168.1.254 255.255.255.0# snmp-agent snmp-agent local-engineid 800063A2801E6A4D23010000000001 snmp-agent community write private snmp-agent community read public snmp-agent sys-info version v2c v3#

3、抓取SNMP数据报文

常见的操作类型如下:

| | | | — | — | | 操作 | 说明 | | GET | 获取指定 OID 的值 | | GET-NEXT | 获取 MIB 树中下一个 OID 的值(用于遍历) | | GET-BULK(v2c/v3) | 高效批量获取多个值 | | SET | 修改设备上的可写参数(如重启、更改配置) | | TRAP Agent | 主动向 Manager 发送异步告警(无需确认) | | INFORM(v2c/v3) | 类似 Trap,但要求 Manager 回复确认 |

→分析GET操作的数据报文

  • 192.168.1.20 的 SNMPv2c GET 请求,使用默认团体名 public,试图获取目标设备(192.168.1.254)的 sysServices(系统服务类型)信息。

链路层(Ethernet II)

  • 源 MAC 地址:08:94:ef:79:6c:5d:发送设备的物理地址,可能是某台主机或网管服务器。
  • 目的 MAC 地址:1e:6a:4d:23:01:02:接收设备的物理地址,通常是目标网络设备(如交换机、路由器等)。

说明:表示从一台主机向另一台设备发送的数据包。

网络层(Internet Protocol)

  • 源 IP:192.168.1.20:网络管理站(NMS)或监控主机的 IP 地址。
  • 目的 IP:192.168.1.254:被管理设备(Agent)的 IP 地址。

说明:目的 IP 是默认网关地址,一般配置在路由器或核心交换机。

传输层(User Datagram Protocol)

  • 源端口:59259(随机端口,客户端临时使用)
  • 目的端口:161(SNMP Agent 默认监听端口)
  • UDP 长度:51 字节(不包含 IP 和以太网头)

说明:典型的 SNMP 客户端发起请求 的行为。

应用层(Simple Network Management Protocol)

  1. SNMP 版本与认证
  • version: v2c (1) :版本,SNMPv2c(版本 2 的社区版)
  • community: public :团体名:public(只读)这是默认的“只读”团体名(类似密码),用于身份验证。

说明:public 是常见默认值,容易被攻击者利用进行未授权访问。

  • 具体内容:
data: get-request (0):类型为 get-request,表示:Manager 向 Agent 发起一个查询请求,希望获取某个 OID 对应的值。request-id: 1074054885:用于匹配响应的唯一标识符。error-status: noError (0):为0,说明当前请求无错误。error-index: 0:为0,说明当前请求无错误。variable-bindings: 1 item  1.3.6.1.2.1.1.7.0: Value (Null)    Object Name: 1.3.6.1.2.1.1.7.0 (iso.3.6.1.2.1.1.7.0)    value (Null)OID:1.3.6.1.2.1.1.7.0 名称:sysServices,请求是在询问:“这台设备提供了哪些系统服务?”Value (Null):表示 该 OID 尚未返回具体值,但请求已发出。是一个 GET 请求报文,它只是告诉 Agent:“请告诉我 sysServices 的值”,并不包含实际数据。
  • 这是一个来自 192.168.1.254 的 SNMPv2c GET-RESPONSE 报文,响应了来自 192.168.1.20 的查询请求,成功返回了 OID 1.3.6.1.2.1.1.7.0(sysServices)的值为 78。

链路层(Ethernet II)

  • 源 MAC 地址:1e:6a:4d:23:01:02:被管理设备(Agent)的物理地址。
  • 目的 MAC 地址:08:94:ef:79:6c:5d:网络管理站(NMS)或监控主机的 MAC 地址。

说明:表示这是从目标设备发回给发起者的响应。

网络层(Internet Protocol)

  • 源 IP:192.168.1.254:被管理设备(Agent)的 IP 地址。
  • 目的 IP:192.168.1.20:网络管理服务器(Manager)的 IP 地址。

说明:与上一个请求包方向相反,构成完整的请求,响应流程。

传输层(User Datagram Protocol)

  • 源端口:161(SNMP Agent 默认监听端口)
  • 目的端口:59259(客户端临时端口,与之前一致)
  • UDP 长度:52 字节

说明:完全匹配之前的请求,说明这是一个对 59259 端口发出请求的回应。

应用层(Simple Network Management Protocol)

  1. SNMP 版本与认证
  • version: v2c (1):使用的是 SNMPv2c 协议。
  • community: public:团体名(Community String)为 public : 同样是默认只读密码,存在安全风险。

说明:工作建议修改为强密码并升级至 SNMPv3。

  • 具体内容:
data: get-response (2):类型为 get-response,表示:这是对之前 get-request 的正式响应,返回了请求的数据。request-id: 1074054885:与上一个请求完全相同(1074054885),用于匹配请求和响应。error-status: noError (0):值为 0,说明:查询成功,没有错误。error-index: 0:值为 0,说明:查询成功,没有错误。variable-bindings: 1 item  1.3.6.1.2.1.1.7.0: Value (Integer32): 78    Object Name: 1.3.6.1.2.1.1.7.0 (iso.3.6.1.2.1.1.7.0)    value (Integer32): 78OID:1.3.6.1.2.1.1.7.0 名称:sysServices,表示系统提供的服务类型,取值范围 0~127

对应的数值含义如下(按位表示):

  • Bit 0: 0x01 = 其他服务
  • Bit 1: 0x02 = 操作系统服务
  • Bit 2: 0x04 = 文件服务
  • Bit 3: 0x08 = 打印服务
  • Bit 4: 0x10 = 应用程序服务
  • Bit 5: 0x20 = 通信服务
  • Bit 6: 0x40 = 网络服务
  • Bit 7: 0x80 = 本地服务

说明:value (Integer32): 78,78对应的二进制是1001110,对应,Bit 1 (0x02):操作系统服务,Bit 2 (0x04):文件服务,Bit 3 (0x08):打印服务,Bit 6 (0x40):网络服务。这些信息通常意味着它是一台具备多种功能的网络设备,比如路由器、交换机、服务器或打印机。

→分析GET-NEXT操作数据报文

    请求包:来自 192.168.1.20 的 SNMPv2c GET-NEXT 请求,使用默认团体名 public,试图获取 OID 1.3.6.1.4.1.25506.2.138.1.1.1.49 的下一个对象的值。

    回应包:来自 192.168.1.254 的 SNMPv2c GET-RESPONSE 报文,响应了来自 192.168.1.20 的 get-next-request 请求,成功返回了 OID 1.3.6.1.4.1.25506.2.138.1.1.1.50 的值为 2,表示对应接口处于 “down” 状态。

具体报文如下:

请求包如下图:

回应包如下图:

→分析GET-BULK操作数据报文

请求包:一个来自 192.168.1.20 的 SNMPv2c GET-BULK 请求,使用默认团体名 public,请求从 OID 1.3.6.1.4.1.25506.2.119.4.1.1.1.69.84.72 开始,批量获取最多 10 个连续条目的值。

回应包:这是对 GetBulkRequest 的响应,成功返回了 10 个连续 OID 的值,这些值大多为 ASCII 编码的字符串,揭示了设备的品牌、型号、部件名称等信息,例如:H3C → 厂商,FCEXCH → 交换机型号,FIB → 接口板,FILTER → 过滤器,GRE → 支持 GRE 隧道

请求包如下图:

回应包如下图:

建议:

    在日常运维中,SNMP 和 SNMPv2 使用明文传输,存在安全隐患。为增强安全性,应将团体字符串修改为强密码,并升级至SNMPv3启用认证与加密功能。同时限制访问源IP,严格控制可访问的设备。最重要的是,避免在公网暴露UDP 161和162端口,以减少遭受攻击的风险。这些措施可以有效保护网络管理信息的安全。

公众号:老五说网络

长按左侧二维码关注


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:老五说网络 老五《网络协议—SNMP协议》

测评公告(2025年第15号) 网络安全文章

测评公告(2025年第15号)

文章总结: 中国信息安全测评中心2026年1月公告,重申其国家授权职能:提供信息技术与产品安全测评、漏洞分析、风险评估、人员资质评定及咨询监理服务,并定期公布测
测评公告(2025年第14号) 网络安全文章

测评公告(2025年第14号)

文章总结: 中国信息安全测评中心发布2025年第14号测评公告,重申其作为国家权威测评机构的职能,涵盖安全测评、漏洞分析、风险评估及资质评定等。依据国家授权,测
评论:0   参与:  0