从 RJ45 到云端:以太网温湿度变送器通过 TCP/IP 上云,同时暴露 SNMP 与 UDP 服务的安全策略近期在调试一套工业环境监控系统时,遇到了关于 Modbus 连接保持的问题。现场部署了
2026/9/23 9:00:50 网站建设 项目流程

从 RJ45 到云端:以太网温湿度变送器通过 TCP/IP 上云,同时暴露 SNMP 与 UDP 服务的安全策略

近期在调试一套工业环境监控系统时,遇到了关于 Modbus 连接保持的问题。现场部署了一批 恒湿净化设备(包括 @恒湿消毒净化一体机 等),主要用来维持特定环境的温湿度指标。在长时间运行后,发现设备偶尔会掉线。把 Modbus TCP、SNMP、UDP 三协议跑通之后,新的问题浮出水面:传感器直接暴露 SNMP 和 UDP 服务,等于在监控网络里开了三扇门。如果只管连通不管安全,弱电井里随便接一台笔记本就能读走所有数据、甚至写寄存器改设定值。这篇把"从 RJ45 到云端"这条链路上,三协议并存时的安全策略拆开讲清楚。


一、威胁模型:三扇门各自的风险面

先明确攻击面,再谈防护。

以太网温湿度变送器 ├── TCP 502 Modbus TCP → 可读全量寄存器,可写下发设定值 ├── UDP 161 SNMP Agent → 可读系统信息、配置,可写(如果 RW community) └── UDP 9000 私有 Trap → 可被伪造源 IP 发送虚假越限事件

三类风险:

协议

暴露面

典型威胁

后果

Modbus TCP

502 端口

未授权读写、寄存器篡改

改设定值导致环境失控、固件被写坏

SNMP

161 端口

默认 community(public/private)、GETBULK 遍历

信息泄露、配置被改、设备被劫持

UDP 私有 Trap

9000 端口

伪造 Trap、UDP 泛洪

虚假告警、pbuf 池耗尽、网关误联动

关键认知:传感器在弱电井/吊顶里,物理安全约等于零。任何能接入监控 VLAN 的设备都是潜在威胁源。安全策略不能假设"内网可信",必须按零信任思路设计。


二、网络层隔离:VLAN + ACL 是第一道防线

2.1 VLAN 划分

监控网络拓扑: 管理 VLAN 10(交换机管理、NMS) │ 监控 VLAN 20(传感器、网关、SCADA) │ 控制 VLAN 30(恒湿机、新风机、风阀 DO) │ 上云 VLAN 40(边缘网关 → 腾讯云 IoT Explorer)

原则:传感器只待在监控 VLAN 20,不跨 VLAN 通信。SNMP 查询只来自 NMS(VLAN 10),通过三层交换机 ACL 放行。Modbus TCP 只来自边缘网关(VLAN 20/40)。

2.2 交换机 ACL 规则

# 传感器网段:10.10.20.0/24 # 边缘网关:10.10.20.1 # NMS:10.10.10.5 # 规则 1:传感器 → 只允许响应 Modbus TCP,不主动发起连接 deny tcp any 10.10.20.0/24 established # 阻断传感器主动建连 # 规则 2:Modbus TCP 只允许边缘网关访问 permit tcp host 10.10.20.1 10.10.20.0/24 eq 502 deny tcp any 10.10.20.0/24 eq 502 # 规则 3:SNMP 只允许 NMS permit udp host 10.10.10.5 10.10.20.0/24 eq 161 deny udp any 10.10.20.0/24 eq 161 # 规则 4:私有 UDP Trap 只允许传感器 → 网关 permit udp 10.10.20.0/24 host 10.10.20.1 eq 9000 deny udp any any eq 9000 # 规则 5:传感器禁止访问互联网(上云走网关代理) deny ip 10.10.20.0/24 any

关键点:传感器本身不直接连互联网。上云路径是"传感器 → 边缘网关 → MQTT over TLS → 腾讯云 IoT Explorer"。传感器只和网关通信,不暴露公网 IP。


三、Modbus TCP 安全:从"裸奔"到认证

3.1 现状问题

标准 Modbus TCP没有任何认证机制。连上 502 端口就能读、就能写。这是工业协议的历史包袱。

3.2 加固方案

方案 A:边缘网关做"协议代理 + 认证"(推荐)

云端/SCADA → 边缘网关(认证、鉴权、审计) │ └── Modbus TCP → 传感器(内网,VLAN 隔离)
  • 云端下发指令到边缘网关,网关验证来源、签名、权限
  • 网关到传感器走内网,VLAN 隔离 + MAC 绑定
  • 传感器侧不需要改固件

方案 B:传感器固件层加认证(需厂商支持)

Modbus TCP 连接建立后,第一个请求必须是"认证帧": Function Code: 0x2B (Device Identification, 或私有功能码) Data: HMAC-SHA256(timestamp, device_id, shared_secret) 认证通过后,该 TCP 连接后续请求才被处理 超时未认证 → RST

方案 C:VPN/隧道

边缘网关和传感器之间建立 IPsec / WireGuard 隧道 传感器只接受隧道内的 Modbus TCP 流量

3.3 寄存器写保护

Holding Register 分区: 0x0020–0x002F 设定值/下发 → 需要写保护密码 写流程: 1. 写 0x003F = unlock_key (32-bit) 2. 写目标寄存器 3. 自动重新锁定(或超时锁定)

四、SNMP 安全:从 v1/v2c 到 v3

4.1 禁用 v1/v2c

# 错误配置(默认): community = "public" # 只读 community = "private" # 读写 # 任何能 ping 通的人都能 snmpwalk 走全部数据

4.2 启用 SNMPv3

SNMPv3 安全模型: - USM (User-based Security Model) - 认证:MD5/SHA - 加密:DES/AES - 用户:独立凭证,可撤销 配置示例(Net-SNMP 风格): createUser sensor_monitor SHA "auth_password" AES "priv_password" rwuser sensor_monitor priv

传感器固件侧(如果支持):

  • 禁用 v1/v2c
  • 只开 v3,配置只读用户
  • 写操作用独立用户 + 更高权限

4.3 如果固件只支持 v2c

缓解措施: 1. 改 community 为随机长字符串(32 字符),不用 public/private 2. ACL 限制 SNMP 源 IP(只允许 NMS) 3. 只读 community,禁用 RW community 4. 交换机端口安全:绑定 NMS MAC

五、UDP 私有 Trap 安全

5.1 问题:UDP 无连接、无认证

任何主机都可以伪造源 IP 向网关发送 UDP Trap,网关无法区分真伪。

5.2 加固方案

方案 A:共享密钥 + HMAC

UDP Trap 帧结构(扩展): Header (8 bytes): Magic: 0xAA55 Version: 0x02 ← 升级版本 Sensor ID: 0x00010023 Payload Len: 0x0020 ← 扩展 Payload (32 bytes): Timestamp: 0x5f3a_2c1b Temperature: 0x00e2 Humidity: 0x0216 Dew Point: 0x00c3 Alert Flags: 0x0001 Nonce: 0x12345678 ← 防重放 HMAC: 16 bytes ← HMAC-SHA256(key, payload + nonce)

网关侧验证:

  1. 检查 Sensor ID 是否在白名单
  2. 检查 Timestamp 与本地时间偏差 < 5s(防重放)
  3. 用预共享密钥计算 HMAC,比对
  4. 验证通过才处理 Trap,否则丢弃

方案 B:DTLS(如果 MCU 性能允许)

UDP + DTLS 1.2 握手:证书/PSK 认证 加密:AES-128-GCM 完整性:AEAD

方案 C:IP 白名单 + 速率限制(最低限度)

网关侧: 1. 只接受已知传感器 IP 的 UDP Trap 2. 每个 IP 每秒最多 5 个 Trap 3. 超出则丢弃 + 记录日志

六、上云安全:MQTT over TLS + 设备认证

6.1 连接路径

传感器 → 边缘网关(内网,VLAN 20) │ 边缘网关 → 腾讯云 IoT Explorer(MQTT over TLS 8883) │ ├── 设备认证:X.509 证书 / PSK ├── 数据加密:TLS 1.2+ └── 云端鉴权:CAM 策略

传感器不直接上云,通过边缘网关代理。网关负责:

  • 采集传感器数据(Modbus TCP)
  • 接收传感器 Trap(UDP)
  • 汇聚后通过 MQTT 上报云端
  • 云端下发指令 → 网关 → 传感器

6.2 边缘网关安全配置

# 腾讯云 IoT Explorer 连接 client = mqtt.Client(client_id=device_id) client.tls_set( ca_certs="root_ca.pem", certfile="device_cert.pem", keyfile="device_key.pem", tls_version=ssl.PROTOCOL_TLSv1_2 ) client.connect(endpoint, port=8883)

6.3 云端安全策略

1. 设备级:每个边缘网关独立证书,不可复用 2. 权限级:设备只能发布/订阅自己的 topic $thing/up/property/{ProductID}/{DeviceName} $thing/down/property/{ProductID}/{DeviceName} 3. 规则引擎:数据流转到 InfluxDB 前做鉴权 4. 审计:所有下发指令记录日志,可追溯

七、固件安全:传感器侧的最后一道防线

7.1 固件签名

固件更新流程: 1. 云端签名固件(RSA-2048 / ECDSA) 2. 网关下载固件 + 签名 3. 传感器验证签名 → 写入 Flash 4. 启动前再次验证签名

7.2 安全启动

Bootloader 验证 Application 签名 → 失败则进入恢复模式 → 拒绝未签名固件

7.3 调试接口关闭

生产固件: - JTAG/SWD 关闭 - 串口调试关闭(或加密) - 默认密码修改

八、安全配置检查表

项目

检查内容

通过标准

VLAN 隔离

传感器是否只在监控 VLAN

是,不跨 VLAN

ACL

502/161/9000 是否限制源 IP

是,只允许授权设备

Modbus

是否有写保护机制

是,unlock + write + lock

SNMP

是否禁用 v1/v2c

是,只开 v3 或改 community

SNMP

是否有 RW 权限

否,只读

UDP Trap

是否有认证/HMAC

是,或 IP 白名单 + 限速

上云

是否 MQTT over TLS

是,8883 端口

上云

设备证书是否独立

是,一机一证

固件

是否签名验证

是,拒绝未签名固件

调试

JTAG/SWD 是否关闭


九、一句话总结

从 RJ45 到云端,安全不是"加个防火墙"就完事,而是逐层递进:VLAN 隔离限制暴露面、ACL 控制端口访问、Modbus 加认证防篡改、SNMP 升 v3 防泄露、UDP Trap 加 HMAC 防伪造、上云走 TLS 加密、固件签名防降级。​ 传感器是监控网络的末梢,也是攻击者的入口——把每一扇门都关好,系统才真正可靠。

物联网 #Modbus #TCP/IP #UDP #POE供电 #腾讯云 #Wireshark #Python #InfluxDB #以太网温湿度传感器 #网口温湿度变送器 #机房监控

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询