实训背景
某智慧工厂需部署物联网网关,实现以下工业级安全管控需求:
- 设备准入控制:仅允许注册MAC地址的传感器接入(白名单:AA:BB:CC:DD:EE:FF)。
- 协议合规性:禁止非Modbus TCP(端口502)的工业协议流量。
- 时段策略:限制摄像头设备(IP段192.168.40.100-150)仅在08:00-18:00传输视频流(RTSP 554端口)。
- MQTT安全:加密MQTT流量(8883端口)且仅允许Topic为
/sensor/#
的消息发布。
环境准备
硬件/软件要求
- 四台设备:
- 网关服务器:双网卡(eth0: 外网,eth1: 内网192.168.40.1)
- PLC控制器:MAC=AA:BB:CC:DD:EE:FF,IP=192.168.40.10,运行Modbus TCP
- 摄像头:IP=192.168.40.120,运行RTSP服务
- MQTT Broker:IP=192.168.40.200,端口8883(TLS)
- 操作系统:Debian 11(内核≥5.10)
- 工具:
iptables
、ebtables
、cron
、tcpdump
、mosquitto_pub
网络拓扑
外网 (eth0) ↓
网关服务器 (eth1:192.168.40.1) ↓
工业内网 (192.168.40.0/24) ├── PLC控制器 (192.168.40.10) ├── 摄像头 (192.168.40.120) └── MQTT Broker (192.168.40.200)
实训步骤
任务1:MAC白名单准入控制
目标:仅允许授权设备通过二层过滤接入网络。
-
配置ebtables MAC过滤
ebtables -A INPUT -s ! AA:BB:CC:DD:EE:FF -j DROP ebtables -A FORWARD -s ! AA:BB:CC:DD:EE:FF -j DROP
-
绑定IP与MAC(防ARP欺骗)
arp -s 192.168.40.10 AA:BB:CC:DD:EE:FF
验证:
- 使用未授权设备(MAC=00:11:22:33:44:55)尝试ping网关,应不通。
任务2:工业协议合规性过滤
目标:放行Modbus TCP,阻断其他工业协议(如EtherNet/IP 44818端口)。
-
允许Modbus TCP流量
iptables -A FORWARD -p tcp --dport 502 -j ACCEPT
-
阻断非常规工业端口
iptables -A FORWARD -p tcp -m multiport --dports 44818,47808,1911 -j DROP
验证:
- 在PLC控制器运行Modbus客户端,流量应正常。
- 尝试通过端口44818通信,触发
tcpdump -i eth1 port 44818
无数据。
任务3:摄像头时段策略控制
目标:通过时间模块限制视频流传输时段。
-
安装iptables时间模块
apt install iptables-dev modprobe xt_time
-
配置时间策略规则
iptables -A FORWARD -s 192.168.40.120 -p tcp --dport 554 -m time --timestart 08:00 --timestop 18:00 --weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT iptables -A FORWARD -s 192.168.40.120 -p tcp --dport 554 -j LOG --log-prefix "[CAMERA BLOCKED] " iptables -A FORWARD -s 192.168.40.120 -p tcp --dport 554 -j DROP
验证:
- 在19:00执行
curl rtsp://192.168.40.120:554
,应失败并在/var/log/syslog
中记录日志。
任务4:MQTT流量深度管控
目标:限制MQTT Topic并强制TLS加密。
-
允许加密MQTT流量
iptables -A FORWARD -p tcp --dport 8883 -j ACCEPT iptables -A FORWARD -p tcp --dport 8883 ! --tcp-flags SYN,ACK,FIN,RST ACK -j DROP # 过滤非加密握手
-
基于字符串匹配过滤Topic
iptables -A FORWARD -p tcp --dport 8883 -m string --string "/sensor/" --algo bm --to 65535 -j ACCEPT iptables -A FORWARD -p tcp --dport 8883 -j DROP
验证:
- 合法发布:
mosquitto_pub -t /sensor/temp -m "25" -h 192.168.40.200 -p 8883 --cafile ca.crt
应成功。 - 非法发布:
mosquitto_pub -t /control/light -m "on"
应被拒绝。
实训总结
通过本案例,您已掌握以下工业物联网安全技能:
- 使用ebtables实现二层设备准入控制。
- 基于端口和协议特征的工业流量过滤。
- 利用xt_time模块实现时间维度策略。
- 通过字符串匹配实现MQTT Topic级管控。
知识要点
要点 | 说明 |
---|---|
ebtables | 二层MAC过滤工具,需与iptables配合使用 |
xt_time模块 | 支持按时间/日期匹配流量 |
字符串匹配 | -m string 实现应用层协议内容过滤 |
工业协议特征 | Modbus TCP=502, EtherNet/IP=44818 |
MQTT安全 | TLS加密+Topic白名单双保险 |
扩展挑战:
- 集成Suricata实现工业协议深度检测(DPI)。
- 使用CONNMARK标记实现跨VLAN设备联动控制。
- 部署ELK Stack实现安全事件可视化分析。