4. 网络设备安全基线:交换机端口安全、VLAN隔离、ACL配置、SNMPv3安全配置

网络设备是工业物联网的“神经末梢”。交换机、路由器一旦失守,整个生产网络就像敞开了大门。我见过太多工厂,OT网络和IT网络之间就隔着一台傻瓜交换机,连密码都是默认的admin/admin。嗯,今天我们就来聊聊,怎么把这层防线扎紧。

4.1 交换机端口安全:别让陌生人插网线

你想想看,车间里随便一个工位,网口一插就能接入内网。这要是被恶意设备接进来,或者有人带了台笔记本偷偷连上,后果不堪设想。端口安全,说白了就是给每个物理端口绑定“身份证”。

我个人习惯,在工业交换机上至少做三层限制:

  • MAC地址绑定:只允许指定的MAC地址通过该端口通信。
  • 端口学习数量限制:限制一个端口最多能学到几个MAC地址,防止MAC泛洪攻击。
  • 违规处理动作:发现非法MAC时,是丢弃报文、发出告警,还是直接shutdown端口。

我在项目中遇到过,某条产线的PLC频繁掉线。查了半天,发现是运维人员临时接了一台笔记本调试,忘了拔。笔记本的网卡MAC没在绑定列表里,端口直接被shutdown了。虽然虚惊一场,但说明策略生效了。

核心配置示例(Cisco-like语法):

interface GigabitEthernet0/1
 switchport mode access
 switchport port-security
 switchport port-security maximum 2
 switchport port-security mac-address sticky
 switchport port-security violation shutdown
!

解释一下:sticky 关键字会把动态学到的MAC自动写入running-config,省得你一条条手动敲。但注意,重启后如果配置没保存,sticky的MAC会丢失。我建议你配完后一定 copy running-config startup-config。

避坑指南: 我曾经在一条老旧的产线上启用端口安全,结果发现PLC每隔几秒会发一个不同的源MAC(某些工业设备有虚拟MAC功能)。端口反复被shutdown,产线直接停了。后来我改成 violation restrict(只丢弃非法帧,不关端口),才解决问题。所以,先搞清楚你的设备行为,再选违规动作。

4.2 VLAN隔离:把生产网络“切”成小房间

VLAN不是新概念,但在工业场景里,很多人把它用成了“摆设”。我见过最夸张的,一个VLAN里跑了PLC、HMI、摄像头、办公电脑,还有打印机。这跟没隔离有什么区别?

我的建议是,按功能域和安全等级来划分VLAN:

VLAN ID 用途 包含设备 安全等级
10 控制层 PLC、RTU、DCS控制器 最高
20 监控层 HMI、SCADA服务器、工程师站 高
30 现场IO层 远程IO、变频器、智能仪表 中
40 管理/运维 运维笔记本、资产管理终端 低
99 访客/临时设备 外来调试设备、临时测试终端 最低(仅可访问特定服务)

VLAN划分之后,别忘了配置Trunk端口。交换机之间、交换机和路由器之间,需要用Trunk来透传多个VLAN的流量。我个人习惯,Trunk端口上只放行必要的VLAN,不要用 allowed vlan all。你想想看,万一某个VLAN被攻破,攻击者就能顺着Trunk跳到其他VLAN,隔离就白做了。

小技巧: 在Trunk端口上配置 native vlan 时,一定要选一个不用的VLAN ID(比如999),并且把native VLAN的端口也shutdown掉。这样可以防止VLAN跳跃攻击(VLAN Hopping)。

4.3 ACL配置:给流量装上“安检门”

VLAN隔离是“物理分区”,ACL就是“门禁规则”。没有ACL,VLAN之间还是可以随便通信。我见过一个案例,攻击者从办公网跳到了控制VLAN,就是因为交换机上没配任何ACL,三层路由直接打通了。

ACL的核心原则:最小权限,显式拒绝。也就是说,只放行你明确需要的流量,其余全部拒绝。

工业场景里,我常用的ACL类型:

  • 标准ACL:基于源IP过滤。适合粗粒度控制,比如“只允许工程师站访问PLC”。
  • 扩展ACL:基于源IP、目的IP、协议、端口。适合细粒度控制,比如“只允许SCADA服务器通过Modbus TCP(端口502)访问PLC”。
  • 基于VLAN的ACL(VACL):在VLAN内部过滤。适合控制同一VLAN内设备间的流量。

举个例子,假设我们只允许工程师站(192.168.10.100)通过SSH访问PLC(192.168.10.1),其他全部拒绝:

!
access-list 100 permit tcp host 192.168.10.100 host 192.168.10.1 eq 22
access-list 100 deny ip any any
!
interface Vlan10
 ip access-group 100 in
!

注意,ACL的匹配顺序是从上到下。一旦匹配到某条规则,就不再往下检查。所以,deny ip any any 一定要放在最后。我曾经见过有人把deny规则放在前面,结果所有流量都被拒绝了,连自己都登不上交换机。

避坑指南: 工业协议很多是UDP的(比如EtherNet/IP、PROFINET)。写ACL时别忘了放行UDP端口。我遇到过有人只写了TCP规则,结果PLC之间的IO数据死活传不过去,查了半天才发现是UDP被deny了。

4.4 SNMPv3安全配置:别让网管协议“裸奔”

SNMP是网络管理的“眼睛”。但SNMPv1和v2c的社区字符串(community string)是明文传输的,抓个包就能看到。你想想看,攻击者拿到读写权限,直接改你交换机的配置,或者把流量镜像出去,多可怕。

所以,我强烈建议:工业网络里,只用SNMPv3。它提供了三个安全级别:

安全级别 认证 加密 适用场景
noAuthNoPriv 无 无 基本不推荐,跟v2c没区别
authNoPriv 有(MD5/SHA) 无 只验证身份,不加密数据
authPriv 有(MD5/SHA) 有(DES/AES) 推荐!既验证又加密

我个人习惯,直接上 authPriv。认证用SHA,加密用AES-128。虽然会多消耗一点CPU资源,但现在的工业交换机完全扛得住。

配置示例(以Cisco交换机为例):

!
snmp-server group ADMIN v3 priv
snmp-server user admin ADMIN v3 auth sha MyAuthKey123 priv aes 128 MyPrivKey123
!
snmp-server host 192.168.10.100 version 3 priv admin
!

这里要注意:MyAuthKey123 和 MyPrivKey123 只是示例。实际部署时,密钥长度至少16位,包含大小写字母、数字和特殊字符。而且,密钥要定期更换。

小技巧: 如果你用的是第三方网管软件(比如SolarWinds、Zabbix),记得在网管端也配置相同的SNMPv3用户和密钥。我见过有人交换机配好了,网管端忘了配,结果告警全收不到。

4.5 知识体系总览

下面这张图,帮你理清本章的核心逻辑。从端口安全到VLAN隔离,再到ACL和SNMPv3,层层递进,构成完整的网络设备安全基线。

网络设备安全基线知识体系 网络设备安全基线知识体系 核心目标:最小权限 + 纵深防御 访问控制 安全监控 端口安全 VLAN隔离 ACL配置 SNMPv3 MAC绑定 端口shutdown 功能域划分 Trunk安全 最小权限 显式拒绝 authPriv SHA + AES 层层设防,让攻击者无处下手

好了,网络设备这块的基线配置,基本就这些。记住,安全不是一锤子买卖。配完之后,定期审计、定期更换密钥、定期检查端口状态,才能让基线真正落地。