2. 工业控制系统基础
在工业IoT安全工程师的面试中,面试官很少直接问“PLC是什么”,而是会问“你如何判断一个PLC是否暴露在攻击面上”“SCADA和DCS的安全边界有什么不同”。要回答好这类问题,前提是真正理解各组件在控制系统中的角色、它们之间的通信关系,以及安全边界究竟划在哪里。本节围绕这五个核心组件展开,重点落在架构、协议和安全边界三个维度。
一、五个组件在控制系统中的角色定位
工业控制系统不是单一设备,而是分层协作的整体。按ISA-95层级模型,从下到上大致分为现场层、控制层、监控层和管理层。PLC、RTU、DCS主要工作在控制层,SCADA和HMI工作在监控层,但它们之间并非严格对应,实际项目中常有交叉。
PLC(可编程逻辑控制器)是离散制造场景的主力控制器,执行梯形图、功能块或结构化文本编写的逻辑,直接驱动继电器、变频器、伺服等执行机构。典型扫描周期在1~50毫秒之间,强调确定性。PLC通常通过背板总线连接本地I/O,通过工业以太网或现场总线连接远程I/O和上位系统。
RTU(远程终端单元)与PLC功能相近,但设计取向不同。RTU更强调恶劣环境适应性和远程通信能力,常见于油气管道、水利、电力等广域分布场景。RTU通常支持低功耗运行、太阳能供电、无线数传电台或4G/5G回传,I/O点数较少但分布极广。面试中常被问到的区别是:PLC重逻辑控制和高速本地I/O,RTU重远程遥测遥信和广域通信。
DCS(分布式控制系统)是流程工业(化工、炼油、电力)的核心,特点是控制功能分散、操作管理集中。DCS由工程师站、操作站、控制站、通信网络组成,控制站内部通常采用冗余配置。DCS的通信网络多为厂商专有协议,如霍尼韦尔的Experion、艾默生的DeltaV、西门子的PCS 7,底层常基于工业以太网但上层封装专有协议。
SCADA(数据采集与监视控制系统)是监控层的大脑,负责采集现场数据、下发控制指令、提供人机界面和报警管理。SCADA本身不是硬件,而是一套软件系统,通常运行在服务器和工作站上。它通过通信协议与PLC、RTU、DCS控制站交互,典型协议包括Modbus TCP、DNP3、IEC 60870-5-104、OPC UA等。
HMI(人机界面)是操作员与控制系统交互的窗口,可以是触摸屏、工控机上的组态软件,也可以是SCADA系统中的一个画面。HMI负责显示实时数据、接收操作指令、记录报警。HMI本身不执行控制逻辑,但它是攻击者获取控制权限的重要跳板——一旦HMI被攻陷,攻击者可以像操作员一样下发指令。
二、通信协议:从现场总线到工业以太网
理解协议是理解安全边界的前提。工业通信协议大致分为三类:现场总线、工业以太网和广域遥测协议。
现场总线如Profibus、Modbus RTU、CANopen,通常用于PLC与远程I/O、变频器之间的通信,速率从9.6kbps到12Mbps不等,物理层多为RS-485或CAN。这类协议设计时几乎不考虑安全性,没有认证、没有加密,攻击者物理接入总线即可嗅探和注入。
工业以太网协议如Profinet、EtherNet/IP、Modbus TCP、EtherCAT,运行在标准以太网之上。以Modbus TCP为例,它在TCP 502端口上传输,报文结构极其简单:事务标识、协议标识、长度、单元标识、功能码、数据。功能码0x01读线圈、0x03读保持寄存器、0x05写单线圈、0x10写多寄存器。攻击者只需构造一个TCP报文,就能读取或篡改PLC寄存器值。Profinet和EtherNet/IP虽然增加了设备描述和实时通道,但基础安全机制仍然薄弱。
广域遥测协议如DNP3、IEC 60870-5-104,用于SCADA主站与RTU之间的通信。DNP3支持时间同步、事件缓冲、链路层确认,比Modbus完善,但早期版本同样缺乏认证。DNP3 Secure Authentication(SAv5)引入了挑战-应答机制和HMAC,但部署率并不高。IEC 104基于TCP,常用于电力调度,其安全扩展IEC 62351定义了TLS加密,但实际项目中大量存量系统仍以明文运行。
OPC UA是近年来被寄予厚望的协议,内置了X.509证书、TLS加密、用户认证和权限模型。但OPC UA的部署往往止步于SCADA与MES之间,向下到PLC层面仍大量使用Modbus或Profinet。这就形成了一个典型的安全断层:上层有加密,下层裸奔。
三、安全边界:在哪里划,为什么这样划
安全边界不是物理边界,而是信任边界。在工业控制系统中,常见的边界划分如下:
第一层边界:现场设备与控制网络之间。PLC、RTU、DCS控制站与现场仪表、执行机构之间。这一层通常使用现场总线或4-20mA模拟信号,攻击者需要物理接触才能入侵。安全措施以物理防护和机柜锁闭为主,网络层防护手段有限。
第二层边界:控制网络与监控网络之间。PLC/RTU与SCADA/HMI之间。这是最关键的边界,因为跨越它意味着从“设备级”进入“系统级”。典型做法是在这里部署工业防火墙或数据二极管,只允许必要的协议和地址通过。例如,允许SCADA服务器访问PLC的502端口,但禁止PLC主动访问SCADA服务器;允许读操作,限制写操作。
第三层边界:监控网络与管理网络之间。SCADA与MES、ERP之间。这一层通常通过OPC UA或数据库接口交互,安全措施包括DMZ部署、单向网关、应用层代理。DMZ中放置OPC UA服务器或历史数据库副本,管理网络只能访问DMZ,不能直接进入监控网络。
第四层边界:远程访问边界。外部工程师、运维人员通过VPN或专线接入。这是攻击面最大的入口。安全措施包括多因素认证、跳板机、会话录制、最小权限。远程访问必须经过DMZ,不能直接拨入控制网络。
四、实战判断:如何快速识别安全边界问题
面试中常给出一个网络拓扑图,要求指出安全问题。以下是一个可操作的判断流程:
第一步,找协议。如果看到Modbus TCP、DNP3、IEC 104明文穿越多个网段,标记为高风险。第二步,找方向。如果PLC可以主动向SCADA服务器发起连接,或者HMI可以直接访问互联网,标记为高风险。第三步,找共享。如果控制网络和管理网络共用同一台交换机或VLAN,标记为高风险。第四步,找远程入口。如果存在直接暴露在公网的RDP、VNC、Web端口,标记为极高风险。
以一个示例场景说明:某水厂SCADA服务器双网卡,一块连接PLC控制网络,一块连接办公网络。PLC为Modbus TCP,无防火墙。远程运维通过TeamViewer直接连SCADA服务器。判断:SCADA服务器成为桥接点,办公网络可直达PLC;TeamViewer暴露在公网,攻击者可获取SCADA权限后直接下发Modbus写指令。修复建议:SCADA服务器与控制网络之间加工业防火墙,仅允许SCADA主动读取PLC;远程运维改为VPN+跳板机,禁止TeamViewer;办公网络与SCADA之间部署DMZ。
五、可直接使用的安全检查清单
以下清单可用于面试答题或实际项目自查,按组件和边界组织:
| 检查项 | 对象 | 判断依据 | 风险等级 |
|---|---|---|---|
| PLC是否允许外部写操作 | PLC | Modbus功能码0x05/0x0F/0x10是否开放 | 高 |
| RTU通信是否加密 | RTU | DNP3/IEC 104是否启用SAv5或TLS | 高 |
| DCS控制站是否冗余 | DCS | 控制器、电源、网络是否双冗余 | 中 |
| SCADA服务器是否双网卡 | SCADA | 是否同时连接控制网和管理网 | 高 |
| HMI是否自动登录 | HMI | 是否存在无密码或默认密码账户 | 高 |
| 控制网与管理网是否隔离 | 网络 | VLAN、防火墙、DMZ是否部署 | 高 |
| 远程访问是否经DMZ | 边界 | VPN、跳板机、MFA是否启用 | 极高 |
| 协议是否明文穿越网段 | 协议 | Modbus/DNP3/IEC 104是否加密 | 高 |
这张表的价值在于:面试时如果被问到“你会怎么检查一个工控网络的安全性”,可以直接按行展开,每一行都对应一个具体的协议字段或配置项,而不是泛泛而谈“做风险评估”。
六、面试答题要点
回到面试场景,回答“PLC、DCS、SCADA、RTU、HMI的架构、通信协议与安全边界”时,建议按以下逻辑组织:先说明各组件在ISA-95层级中的位置和职责,再指出它们之间的典型协议,最后落到安全边界上——边界不是物理位置,而是信任级别的切换点。重点强调三个判断:协议是否明文、方向是否可控、远程入口是否收敛。如果能结合一个具体场景(如水厂、变电站、汽车产线)说明边界划分和修复建议,回答的实战感会明显提升。
需要避免的误区:不要把SCADA等同于PLC,不要把DCS和SCADA混为一谈,不要认为“内网就安全”。工业IoT安全工程师的核心能力,恰恰是在看似封闭的系统中找到信任边界被突破的路径。