文章总结: 文章系统梳理SNMP架构与报文:用Manager-Agent-MIB模型通过UDP161/162完成Get/Set/Trap,演示v2c明文抓包并解读sysServices=78含义,指出public团体名风险,建议升v3加IP白名单并禁公网暴露。 综合评分: 75 文章分类: 网络协议,安全建设,应用安全,网络管理
网络协议—SNMP协议
原创
老五
老五说网络
2026年1月5日 16:30 陕西
SNMP基本概念
SNMP(Simple Network Management Protocol,简单网络管理协议)是一种用于在IP网络中管理和监控网络设备的标准协议。它被广泛应用于路由器、交换机、服务器、防火墙、打印机、UPS等支持网络连接的设备上,是网络运维和IT基础设施管理的重要工具。
一、SNMP 的核心目标
- 集中监控:通过一个管理站(Manager)监控多个网络设备。
- 实时状态获取:如 CPU 使用率、内存占用、接口流量、运行时间等。
- 故障告警:设备异常时主动通知管理员(如端口宕机、温度过高)。
- 远程配置(有限):部分参数可通过 SNMP 进行远程修改(需写权限)。
二、SNMP 的基本架构
SNMP 采用 客户端-服务器模型,主要包含以下三个要素:
- NMS(Network Management Station,网络管理系统)
Manager管理端,通常是一台运行网管软件(如 Zabbix、PRTG、SolarWinds、LibreNMS)的服务器。主动向设备发起查询或接收设备发送的告警。
- Agent(代理)
运行在被管理设备上的 SNMP 服务程序。负责收集本地信息,并响应 Manager 的请求,也可主动发送告警(Trap/Inform)。
- 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)
- 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)
- 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协议》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论