ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

工控网络安全实战:PLC与DCS防护策略及攻击面分析

工控网络安全实战:PLC与DCS防护策略及攻击面分析 1. 工控网络安全到底在防什么1.1 从工业神经这个比喻说起把PLC和DCS叫做工业神经这个说法其实一点都不夸张。我在现场待了十几年见过太多厂子把PLC当成一个黑盒子——装上去、跑起来、别停就行。直到某天中控画面上数据开始乱跳或者某台泵莫名其妙启动了才有人慌慌张张跑过来问是不是程序被人改了PLC全称可编程逻辑控制器是产线上最底层的执行大脑。它接收传感器信号按照梯形图逻辑运算再输出指令去驱动接触器、变频器、阀门。DCS集散控制系统则是流程工业里的中枢神经比如化工、电力、水处理这些连续生产场景一个DCS可能挂着几百个I/O点、几十台控制器。这两类设备有一个共同特点它们的设计初衷是可靠性和实时性而不是安全性。早年的工控系统基本是物理隔离的一根串口线、一个封闭的局域网外面进不来。但现在情况完全变了。MES要取数据、SCADA要上云、远程运维要接进来、工程师要用笔记本连PLC改程序——每开一个口子就多一条攻击路径。工控网络安全要防的就是这些路径上可能出现的未授权访问、指令篡改、数据窃取和拒绝服务。1.2 为什么PLC和DCS特别脆很多人拿IT安全的思路来套工控安全这是最大的误区。我总结下来PLC和DCS的脆弱性主要来自三个层面。第一是协议本身没有认证机制。以Modbus为例这个协议1979年就出来了设计时根本没考虑安全问题。你发一个写寄存器的指令PLC就老老实实执行它不会问你你是谁你有没有权限。西门子的S7comm、欧姆龙的FINS、三菱的MC协议早期版本也都有类似问题。这意味着只要你能连上网络理论上就能操控设备。第二是设备资源极其有限。一台小型PLC的CPU可能只有几十KB的内存你不可能在上面跑杀毒软件或者防火墙代理。DCS的控制器虽然性能强一些但它的实时性要求决定了不能随便加安全组件——一个扫描周期多几毫秒可能就会导致控制精度下降甚至联锁误动作。第三是生命周期错配。IT设备三五年一换工控设备用十五年很正常。我见过还在跑Windows XP的上位机也见过固件版本停留在2010年的PLC。这些老设备已知漏洞一大堆但停产线换设备成本太高只能硬扛。注意工控安全的核心矛盾不是能不能防住而是在不停产的前提下能防到什么程度。任何方案如果要求停线改造在多数工厂里都推不动。1.3 攻击面到底在哪里要防护先得知道敌人从哪来。根据我在多个项目中的观察工控网络的主要攻击面可以归为以下几类攻击面类型典型入口风险等级常见后果工程师站编程笔记本、组态软件高程序被篡改、逻辑被植入上位机/SCADA历史数据服务器、操作站高画面造假、数据泄露网络边界办公网与工控网互联极高勒索软件横向渗透无线接入现场WiFi、4G模块中高未授权设备接入移动介质U盘、移动硬盘中病毒传播供应链设备出厂固件、第三方组件中后门植入这张表不是理论推演是我在实际排查中反复验证过的。尤其是办公网与工控网互联这一条几乎每个出过事的厂子都能对上号。IT部门为了传数据方便拉一根网线就把两个网连了结果办公区中个勒索病毒产线跟着停摆。2. PLC层面的自我防护怎么做2.1 访问控制把钥匙管好PLC防护的第一道门就是访问控制。很多工程师图省事PLC程序下载密码设成1234甚至根本不设。我做过一次抽查一个中型工厂里三十多台PLC设了密码的不到一半密码强度合格的只有三台。具体操作上不同品牌的做法不一样。西门子S7-1200/1500在TIA Portal里可以设置访问级别从完全访问到只读分四档还能设置专有技术保护防止程序被上传。三菱的FX和Q系列通过GX Works设置关键字欧姆龙在Sysmac Studio里有操作权限管理。这些功能都不复杂但必须逐台配置不能偷懒。实操心得密码不要用设备型号、出厂日期、厂名缩写。建议用一套独立的密码管理规则比如设备编号特殊字符随机码记录在离线文档里不要存在工程师站的桌面上。除了密码还要关闭不必要的服务。比如PLC的Web服务器功能如果不需要远程查看状态就关掉。FTP服务、SNMP服务同理。每多开一个服务就多一个被利用的入口。2.2 网络分段别让PLC裸奔在公网上我见过最离谱的案例是一台汇川PLC直接通过路由器映射到了公网原因是方便在家改程序。这种做法等于把产线大门敞开。正确的做法是网络分段。把工控网络划分成几个区域控制层PLC、变频器、伺服、监控层SCADA、HMI、管理层MES、ERP。区域之间用工业防火墙或者带访问控制列表的交换机隔开只放行必要的流量。具体到配置假设你用西门子PLC和施耐德变频器做Modbus通讯控制层内部可以互通但控制层到管理层只允许SCADA读取数据不允许反向写入。这个规则在工业防火墙上就是几条策略的事但效果立竿见影。对于一台PLC控制32台变频器这种场景网络分段尤其重要。32台变频器如果都在同一个广播域里一台出问题可能影响整条链路。建议按工艺段再细分VLAN比如挤出段、牵引段、收卷段各自独立PLC作为网关跨VLAN通讯。2.3 固件与程序完整性校验PLC的程序和固件是攻击者的重点目标。一旦被篡改可能造成设备误动作、产品批量报废甚至安全事故。防护手段有两个层面。第一是固件版本管理定期检查厂商发布的安全公告及时升级固件。西门子、三菱、欧姆龙都会在官网发布漏洞通告和补丁但很多工厂根本没人看。我的做法是每季度做一次固件盘点把型号、当前版本、最新版本列成表格评估升级风险。第二是程序校验。部分高端PLC支持程序签名或者校验和比对。比如西门子S7-1500可以设置仅允许已签名程序运行任何未签名的修改都会被拒绝。如果没有这个功能至少要做到离线备份——每次程序变更后把完整项目文件备份到独立的存储介质并记录校验和。一旦发现异常可以快速比对和恢复。2.4 通讯加密与认证传统工控协议大多明文传输Modbus TCP、S7comm、FINS都是如此。这意味着如果有人抓包就能看到所有指令和数据。现在一些新设备开始支持加密通讯。比如OPC UA协议自带加密和认证机制西门子S7-1500也支持通过TLS保护编程通讯。如果设备支持尽量启用。如果设备太老不支持那就只能靠网络层的防护来弥补——比如用IPsec隧道保护两个节点之间的通讯。对于PLC与伺服驱动之间的通讯通常走的是专有总线或者实时以太网物理隔离程度较高风险相对小一些。但如果是通过标准以太网走Modbus TCP控制伺服那就需要纳入整体防护范围。3. DCS系统的防护策略3.1 DCS与PLC的防护差异DCS的防护逻辑和PLC有本质区别。PLC通常是单机或者小范围联动DCS则是一个庞大的系统包含工程师站、操作站、历史站、控制器、I/O卡件、网络交换机等一大堆组件。浙大中控的ECS系列、和利时的MACS、霍尼韦尔的Experion这些主流DCS的架构大同小异。防护重点不在单个控制器而在整个系统的边界和内部信任关系。DCS内部通常是信任网络——各节点之间默认互信。这在物理隔离时代没问题但现在如果有一个节点被攻破攻击者就能在系统内横向移动。所以DCS防护的核心思路是零信任即使在内网也要验证每一个访问请求。3.2 工程师站和操作站的加固工程师站是DCS系统里最危险的节点因为它有编程和组态权限。我建议对工程师站做以下加固禁用USB自动播放使用白名单管理移动介质关闭不必要的端口和服务尤其是远程桌面和文件共享安装工控专用的终端防护软件不要用普通杀毒软件可能误杀组态软件进程设置屏幕锁定和强密码策略记录所有操作日志定期审计操作站相对简单主要是限制权限。操作员只能执行预设的操作不能修改组态、不能访问文件系统。很多DCS支持角色分离把工程师、操作员、管理员的权限严格区分开。3.3 历史数据与组态软件的安全DCS的历史数据服务器往往被忽视。它存储着生产数据一旦被篡改可能影响报表、审计甚至联锁判断。防护措施包括限制访问IP、启用数据库审计、定期备份。组态软件的安全同样重要。有些组态软件存在已知漏洞比如某些版本的组态王、WinCC、iFIX都出过安全问题。要关注厂商补丁不要用破解版——破解版往往被植入了后门这在工控圈不是秘密。对于DCS学习版或者仿真环境建议完全隔离不要和真实生产网络有任何连接。学习版通常缺少安全更新风险更高。3.4 网络架构优化DCS的网络架构优化核心是减少不必要的互联。我见过一个化工厂DCS网络和视频监控网络连在一起理由是方便在操作站上看摄像头。这种连接完全没有必要而且大大增加了风险。如果确实需要数据外传比如把DCS数据导出到MES或者云端应该通过单向隔离设备或者数据二极管。数据只能从DCS往外流外面的指令进不来。这种设备国内有成熟产品价格也不算离谱。对于DCS数据导出需求建议走OPC UA或者专用数据接口不要直接开放数据库端口。导出频率也要控制不要每秒都在传既增加负载又扩大攻击窗口。4. 实操从零搭建一套工控安全防护体系4.1 资产盘点与风险评估任何防护方案都从资产盘点开始。你需要知道有多少台PLC、多少套DCS、什么品牌型号、固件版本、IP地址、开放端口、通讯协议、责任人。我通常用一张Excel表来管理字段包括设备名称、品牌型号、位置、IP、MAC、固件版本、通讯协议、开放端口、密码策略、备份状态、风险等级。这张表要定期更新至少每季度一次。风险评估可以用简单的矩阵法横轴是可能性纵轴是影响程度。比如PLC无密码且暴露在办公网就是高可能性高影响必须立即整改。老式HMI无固件更新可能是中可能性中影响列入计划逐步替换。4.2 网络改造与隔离实施网络改造是防护体系的地基。具体步骤绘制现有网络拓扑图标注所有连接关系划分安全区域控制层、监控层、管理层、外部接入区在区域边界部署工业防火墙或三层交换机ACL配置访问策略默认拒绝按需放行测试验证确保生产不受影响这里有个关键点改造必须在线进行不能停线。所以策略要一条一条加加完观察一段时间确认没问题再加下一条。我一般选择生产间隙或者检修窗口做变更避免高峰期操作。对于一台PLC控制3台变频器这种小型系统可能不需要复杂的防火墙用带VLAN功能的交换机就能实现隔离。但如果是PLC控制32台变频器的大型系统建议上工业防火墙因为流量复杂ACL管理起来很麻烦。4.3 安全配置基线每类设备都应该有一套安全配置基线。以下是我常用的基线模板设备类型配置项推荐值PLC访问密码强密码8位以上含特殊字符PLC远程访问默认关闭按需开启PLCWeb服务不需要则关闭DCS工程师站USB白名单管理DCS工程师站远程桌面关闭或限制IP交换机未使用端口关闭交换机SNMP改用SNMPv3或关闭上位机操作系统及时打补丁关闭不必要的服务这套基线不是一成不变的要根据实际设备和厂商建议调整。比如有些PLC的Web服务用于诊断关掉会影响运维那就保留但限制访问IP。4.4 监控与应急响应防护体系建好之后还需要监控和应急响应。监控包括网络流量异常、未授权设备接入、配置变更、登录失败等。我通常会在核心交换机上做端口镜像把工控流量镜像到一台分析服务器用开源工具或者商业工控安全平台做流量分析。重点看几个指标是否有异常IP在扫描端口、是否有非授权设备在发指令、是否有大量重复请求可能是DoS攻击。应急响应预案要提前写好包括发现异常后谁负责、如何隔离、如何恢复、如何取证。我建议每半年做一次演练模拟PLC被篡改或者DCS被入侵的场景检验预案的有效性。实操心得应急响应中最重要的是保留现场。发现异常后不要急着重启设备先抓包、截图、备份日志。重启会丢失内存中的证据给后续分析带来困难。5. 常见问题与排查技巧实录5.1 PLC通讯异常排查问题PLC与变频器Modbus通讯时断时续。排查思路先看物理层检查网线、接头、终端电阻。Modbus RTU走RS485时终端电阻很重要很多现场问题都是电阻没接或者接错。然后看协议层用串口调试工具抓包看是否有校验错误、超时。最后看应用层检查PLC程序里的通讯超时设置、重试次数。我遇到过一例西门子PLC与施耐德变频器Modbus通讯不稳定最后发现是波特率不匹配——PLC设了19200变频器默认9600。这种低级错误在现场很常见排查时先从最简单的参数查起。问题博途中查看PLC资源使用情况发现CPU负载过高。这可能是程序逻辑问题也可能是通讯负载过大。先看程序里有没有死循环或者高频中断再看通讯连接数是否过多。S7-1200/1500有连接资源限制超过限制会导致通讯失败。可以在TIA Portal的在线诊断里查看连接状态和CPU利用率。5.2 DCS组态与数据导出问题问题DCS数据导出到MES时数据延迟大或者丢数据。先检查网络带宽和延迟DCS历史站到MES服务器的链路是否稳定。然后看导出接口的配置OPC UA的发布周期、订阅间隔是否合理。如果数据量大建议用批量传输而不是单点轮询。问题浙大中控DCS组态软件在Windows 10上运行异常。这是兼容性问题。很多DCS组态软件只支持特定版本的Windows比如Win7或者Win Server 2008。如果必须在Win10上跑建议用虚拟机或者兼容模式但要注意虚拟机的网络配置不能影响DCS通讯。5.3 安全事件应急处理问题发现PLC程序被篡改产线动作异常。第一步是立即切换到手动模式或者安全状态防止事故扩大。第二步是备份当前程序用于取证然后从离线备份恢复。第三步是排查入侵路径查工程师站日志、查网络流量、查移动介质使用记录。第四步是修补漏洞加强访问控制。问题办公网勒索病毒蔓延到工控网。立即断开办公网与工控网的连接然后逐台检查工控设备是否被感染。工控设备通常跑的是嵌入式系统勒索病毒不一定能运行但Windows工程师站和操作站风险很高。恢复时要从干净的备份还原不要用可能被感染的文件。5.4 常见问题速查表现象可能原因排查方法解决措施PLC无法连接IP冲突/网线故障/防火墙拦截ping测试、换网线、查ACL修正IP、更换线缆、调整策略通讯时断时续终端电阻/波特率/干扰查物理层、抓包分析加电阻、统一波特率、屏蔽线DCS画面数据不刷新通讯中断/控制器故障查控制器状态、查网络重启控制器、修复网络程序被篡改未授权访问/病毒查日志、查流量恢复备份、加强访问控制设备频繁重启电源问题/固件bug查电源、查固件版本更换电源、升级固件这张表是我这些年踩坑总结出来的覆盖了大部分现场问题。但实际排查时顺序很重要先物理层再网络层再应用层。不要一上来就怀疑程序问题很多时候就是网线松了或者IP配错了。6. 一些个人体会和后续建议工控安全这件事技术只是一部分管理和意识同样重要。我见过太多工厂买了防火墙、上了监控平台但工程师还是用弱密码、还是随便插U盘、还是把工控网和办公网混在一起。设备是死的人是活的人的习惯不改再好的设备也白搭。另外工控安全不是一次性的项目而是持续的过程。新的漏洞不断出现新的攻击手法不断演变防护策略也要跟着更新。建议至少每年做一次全面的安全评估每季度做一次固件和补丁检查每月做一次日志审计。对于刚入行的朋友我的建议是先把基础打牢搞清楚PLC和DCS的通讯原理学会抓包分析熟悉常见协议的安全缺陷。然后从小处着手比如先把所有PLC的密码设好再把网络分段做起来。不要一上来就追求大而全的方案那样往往落地不了。最后分享一个实用技巧如果你不确定某个操作会不会影响生产先在仿真环境或者备用设备上试。很多PLC品牌都有仿真软件比如西门子的PLCSIM、三菱的GX Simulator。在仿真环境里把逻辑跑通、把安全策略验证好再到现场实施风险会小很多。
返回列表