ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

PLC和DCS自我防护:工控网络安全落地指南

2026/9/15 2:58:21 拓冰建站 浏览量
PLC和DCS自我防护:工控网络安全落地指南 做自动化这些年我听过最多的一句话是“咱们的PLC都在内网里外面攻不进来。”说这话的工程师手里往往正维护着好几条重要产线PLC、DCS这些“工业神经”日夜不停地把传感器信号变成动作指令一刻都不敢停。可现实是这两年工控网络安全的事件越来越多从炼化厂到自来水厂从电力到汽车制造攻击者盯上的恰恰就是这些“神经中枢”。普能电控长期做电控柜、控制系统集成和现场服务接手过不少“中招”之后的烂摊子对PLC、DCS的痛感比别人更深。这篇文章不聊空泛的安全概念就围绕一个核心问题展开PLC、DCS这些工业神经到底该怎么自我防护我会从攻击者的视角拆解工控系统为什么容易被打穿再讲一套可以直接落地的防护动作包括网络隔离、设备加固、账号口令、补丁管理、日志审计最后结合西门子、三菱、国产DCS这些常见系统的实操经验把能抄的作业直接给你。适合自动化工程师、系统集成商、设备运维人员和刚入行想搞懂工控安全的新手内容偏工程思维不绕弯子。1. 为什么PLC、DCS成了“靶子”三大脆弱根源很多人觉得工控网络攻击离自己很远其实不是攻击者不想打而是打进去之后收益太高。PLC一停整条产线停摆DCS一乱工艺参数全乱这种损毁是物理层面的比偷数据狠得多。要搞懂怎么防先得明白为什么这么容易被打。1.1 几十年前的协议设计根本没想到会有今天PLC、DCS之间通信用的现场总线协议大部分诞生于上世纪八九十年代当时的设计目标只有一个稳定、实时、能用。Modbus RTU、Modbus TCP、PROFINET、S7comm、DNP3这些协议有一个共同特点——明文传输、没有认证、没有完整性校验。什么意思就是说只要攻击者拿到了网络访问权就能直接往PLC里写寄存器、改设定值、启停设备而且PLC根本分辨不出这条指令是来自工程师站还是来自恶意程序。举一个最直观的例子。Modbus TCP的功能码03是读保持寄存器功能码06是写单个寄存器。攻击者只要知道PLC的IP地址和寄存器地址拿现成的工具就能把温度设定值从80度改成800度整个过程不需要任何账号密码。恐怖的恰恰是这种“不需要认证”的设计——当年工程师为了现场调试方便把门槛压到了最低如今成了最脆弱的突破口。那能不能把老协议升级一下可以但现实很骨感。现场几百台设备有的已经稳定跑了十几年不可能因为安全问题全部换新。所以老协议还得继续用安全防护就得在协议之外想别的办法这就引出了后面的网络隔离和设备加固思路。1.2 IT和OT边界模糊“隔离”经常只是心理安慰教科书上把工控系统分成几层企业层、生产管理层、监控层、控制层、现场层层与层之间应该物理隔离。但等你真正到项目现场看一眼会发现边界早就被捅得稀烂。MES系统要数据ERP要数据老板在办公室也想看产线状态于是办公网和生产网之间加了一条专线供应商远程维护要通道于是给调试工程师留了一个远程访问口还有各种4G DTU、无线网关把控制器的数据直接送到云端平台。这些通道每一条都是攻击路径。2010年“震网”病毒为什么能造成那么大破坏最关键的教训就是它通过U盘跨过了物理隔离然后利用系统漏洞横向渗透到控制层最终篡改了离心机的控制参数。物理隔离从来不是铜墙铁壁人就是最大的漏洞。办公网一封钓鱼邮件、现场工程师一个U盘就能把攻击从IT侧带进OT侧。更麻烦的是很多工厂的监控层用的还是老旧Windows系统甚至Windows XP还挂在生产线上跑。这些系统没有补丁、没有杀毒、没有白名单一旦攻击者横向移动到工程师站基本就是畅通无阻。1.3 设备生命周期太长补丁永远打不上PLC、DCS控制器本身是嵌入式系统固件更新不像手机一样点一下就完事。控制器固件要升级需要停机、需要备份、需要重新验证工艺逻辑一条产线停机一小时可能就是几十万损失。所以很多控制器的固件版本从出厂到报废可能一次都没更新过。主机层面同样尴尬。操作员站和工程师站上跑着WinCC、组态软件这些软件和Windows系统、硬件驱动之间有复杂的兼容关系。打个Windows补丁可能把组态软件的授权搞失效升个软件版本可能和现场的驱动器固件不兼容。我见过一个项目WinCC 7.4配Windows 10结果微软一个月度更新直接让画面卡死后来只能卸载补丁。这就是工控系统补丁管理的真实处境——不是不想打是打补丁的风险有时比不打还大。还有供应链层面的问题。一套控制系统的组件来自多个供应商控制器是一家、组态软件是一家、通信模块又是另一家每个组件都有潜在漏洞但没有任何一个供应商能对整体安全负责。设备采购回来固件里有没有被植入后门组态软件有没有被篡改过这些在验收时很少有人去核查。2. 攻击是怎么摸到PLC、DCS的拆解三条典型路径讲完根源再看攻击者实际的进攻路线。工控攻击很少是“一步到位”的绝大多数是一条链条先找到一个入口再逐步渗透到目标。理解这几条路径你才能知道该在哪个环节设卡。2.1 从办公网横向移动到控制网这条路径最常见也最“省力”。攻击者先向办公网员工发钓鱼邮件或者利用办公系统的漏洞打进来拿到一台办公电脑的权限。然后他开始扫描内网发现办公网和生产网之间有通信链路——可能是MES数据库、可能是OPC通信、可能是文件共享。顺着这条链路一步步挪到工程师站最后从工程师站向PLC、DCS下发指令。我之前处理过一个案例工厂的MES服务器同时连着办公网和生产网MES数据库的口令还写在共享文档里等于把控制网的钥匙放在了大门口。攻击者通过钓鱼邮件进入办公网后花了一天时间就摸到了MES服务器再通过MES的数据库连接权限直接访问了生产网里的历史数据服务器。幸好发现及时没有进一步碰到控制器但整个攻击路径已经完整走通。横向移动的破解思路核心是分区隔离加最小权限。办公网和生产网之间不能只是“通着”要用防火墙把允许的IP、端口、协议全部限定死MES要数据就只开MES服务器到生产数据库的特定端口其他一律拒绝。每个区域之间的账密不能复用防止攻破一台之后所有区域都平趟。2.2 移动介质与现场运维物理隔离的破口很多工厂把办公网和生产网物理断开觉得这样就安全了。但物理隔离挡不住U盘——现场工程师要拷程序、拷报警记录、更新组态备份U盘是最常用的工具。如果工程师的办公电脑中了毒U盘插上去病毒就会自动复制到U盘再把U盘插到工程师站病毒就进了控制网。震网病毒就是走这条路线的典型。攻击者把病毒植入特定企业的软件更新包通过供应链传播到内部网络再借U盘跨过物理隔离最终到达离心机控制系统。这个案例已经过去十几年但U盘摆渡的攻击方式至今仍然是工控网络最常见的感染途径之一。我自己的习惯是控制网内的U盘必须专盘专用只允许在工程师站和专用对拷终端上使用每次使用前先做一次杀毒扫描。条件允许的项目直接给工程师站封掉USB口改用带审计的专用烧录工具传递程序。看着麻烦但比起产线停摆的损失这点麻烦根本不值一提。2.3 供应链与“合法”后门防不胜防的暗门还有一条路径更隐蔽直接利用设备或软件供应链里的“合法通道”。很多PLC、DCS设备出厂时有默认口令admin/admin、1234这种项目验收时没人改等于给所有人留了后门。集成商、设备商为了远程维护方便也会在系统里留远程维护账号项目交工后这些账号可能就无人管理密码几年不换。还有更极端的组态软件安装包被篡改或者PLC固件被人动手脚。你从非官方渠道下载一个“破解版”组态软件里面可能夹带了恶意代码采购的二手设备固件里可能已经被植入了后门程序。这类攻击最难发现因为代码逻辑是藏在合法程序里的杀毒软件检查不出来只有行为异常时才会暴露。应对思路其实不复杂验收时改掉所有默认口令删除不用的维护账号固件核对官方哈希值组态软件只从官方渠道获取二手设备做固件重刷和全盘检查。别嫌麻烦供应链上一个环节失控等于把整个控制系统拱手相让。3. PLC、DCS“自我防护”的六个核心动作理解了攻击路径防护思路就清晰了。PLC、DCS的自我防护不是一个点而是一套组合拳。下面这六个动作是我在项目里反复验证过、可以落到实处的核心手段。3.1 网络分区与工业隔离给神经包上绝缘层先说网络分区。按照控制系统的职能把网络划分成若干个安全域办公域、监控域、控制域、现场设备域。域与域之间通过工业防火墙或串行单向网闸连接只有明确授权的IP、端口、协议才能穿越边界。比如监控层的服务器需要访问PLC的S7端口102端口那防火墙上就只放行“监控服务器IP到PLC IP的102端口”其他端口、其他IP一律禁止。这里要注意普通IT防火墙用在工控环境会有两个问题一是很多工控协议是私有协议普通防火墙识别不了二是延迟和稳定性不一定满足要求所以建议选专门的工业防火墙或者至少选支持OPC、Modbus深度解析的型号。老设备改不了协议怎么办可以在设备前加协议转换网关把裸奔的Modbus TCP转换成带认证的OPC UA同时开启网关的白名单功能只允许预设的指令通过。网关在老协议和新系统之间做了一个翻译和安检的角色相当于给裸奔的设备加了一层绝缘皮。3.2 主机白名单比杀毒软件更靠谱工控主机工程师站、操作员站的防护思路和普通办公电脑完全不一样。办公电脑可以装杀毒软件全盘扫描工控主机不行——杀毒软件全盘扫描会拖慢CPU可能影响HMI画面刷新速度更麻烦的是杀毒软件可能把组态软件的授权文件或者DLL误判成病毒直接杀掉。我见过不止一次WinCC运行到一半提示缺少组件查来查去是杀毒软件把动态库隔离了。所以工控主机更明智的做法是“白名单”机制只允许系统里预先登记的进程运行其他程序一律拦截。主流白名单软件如卡巴斯基工业版、McAfee嵌入式控制等可以学习一段时间的正常程序之后锁定策略。白名单的好处是就算U盘里带了一个病毒进来病毒进程在白名单策略下根本起不来还没开始干活就被掐死了。实操下来的体验第一次部署白名单会有点波折因为要排查所有合法进程包括组态软件的辅助进程、驱动、服务漏掉一个就会导致功能异常。建议先在备用机上跑一个月确认稳定后再对生产主机下发策略。但一旦稳定运行省心程度远超杀毒软件。3.3 设备级防护PLC、DCS自身的“锁”PLC、DCS控制器本身也提供了一些安全功能关键是你会不会用、用没用。以西门子S7-1200/1500为例TIA Portal的CPU属性里有一个“防护与安全”设置可以设置访问级别完全访问、读访问、写保护、完全保护。默认状态下是“完全访问”这意味着任何人都能通过博途软件上下载程序。建议至少设置到“完全保护”并设置强密码防止未授权的读写操作。还有一个容易被忽略的选项S7-1200/1500默认开启了“允许来自远程对象的PUT/GET通信访问”。这个功能方便HMI和第三方系统读写数据但也给了攻击者一个合法的数据通道。如果现场没有明确的PUT/GET需求建议直接关闭如果必须用也要限定通信对端的IP地址。三菱PLC也有类似的机制比如FX5U、Q系列可以在CPU参数里设置远程口令口令错误就无法在线监视和修改程序还可以设置关键字Keyword保护程序不被读出。国产PLC近几年也纷纷加入了程序保护口令、运行锁功能项目验收时一定要确认这些功能是否启用。DCS方面重点是控制器下装权限和工程师站用户分级。操作员只能监盘和操作工程师才能修改组态而且要保留完整的操作日志。逻辑联锁这些安全生产核心逻辑必须在控制器层实现不要放在上位机脚本里——上位机被攻破时控制器层的联锁依然能保底这是DCS工程的基本安全准则。3.4 账号与口令管理把默认口令当成“裸奔”设备默认口令不改等于把家门钥匙放在门口的脚垫下。项目交付时必须把PLC、DCS、交换机、防火墙、数据库所有设备的默认口令全部改掉并形成一份口令清单交由专人保管。口令设计不要追求花哨但要满足基本强度长度不低于12位包含大小写字母、数字和特殊符号不同设备不要复用同一个口令。更关键的是每次员工离职或供应商人员变动都要及时收回、重置相关账号。很多工控系统出事不是外部攻击而是内部离职人员的账号没有被清除被恶意利用。关键操作建议实行双人复核修改PLC程序、下装DCS组态、变更防火墙壁策略这些高风险操作必须两个人同时在场一人操作、一人确认。这不只是安全要求更是防止误操作的有效手段——人在疲劳状态下点错一个按钮就可能造成产线停产多一个人把关风险至少降低一半。3.5 补丁与升级没有完美系统但要管理“补丁窗口”前面说了工控补丁难打但难打不等于不打。正确的做法是建立一个“补丁窗口”机制根据产线的停产检修计划提前申请补丁升级窗口在窗口期内完成补丁测试和正式部署。难点在于测试。生产系统不能随便试那就建一个离线测试环境。现在VMware这类虚拟化工具完全可以模拟出一套组态软件环境先在这套环境里打补丁、跑兼容性测试确认无问题后再到生产环境操作。我自己的项目里会维护一套镜像环境生产环境的软件版本、补丁版本、网络配置都记录在案测试环境与生产环境保持一致这样测试结果才有参考价值。软件升级要关注兼容性列表。比如TIA博途、WinCC和Windows操作系统的版本匹配关系西门子官方有详细的兼容性列表Windows补丁偶尔会和WinCC的授权服务冲突升级前先查一下社区反馈。保守的做法是宁可在测试环境多折腾几天也不要直接在生产环境冒险。3.6 日志与审计出事之后要有“黑匣子”最后一个动作是让系统能“说话”。PLC、DCS、工程师站、防火墙每天都会产生大量日志记录谁登录了、谁修改了程序、谁下了装。平时这些日志很不起眼一旦出了安全事件这些日志就是最关键的破案线索。控制器层面的日志要打开并定期导出。西门子PLC可以在TIA Portal里配置诊断日志记录事件DCS系统本身就带有操作记录功能关键是项目上有没有真正启用。主机层面的日志要统一收集用Syslog或SNMP把分散日志汇聚到一台日志服务器方便检索。核心交换机上做端口镜像把流量引到工业入侵检测系统IDS进行实时分析——不需要部署太复杂的方案一台旁路IDS加一台日志服务器就能把整个控制网的“黑匣子”搭起来。我见过太多项目现场出了异常只能靠工程师回忆“前几天谁来过”连基本的时间线都还原不了。这样的安全体系形同虚设。日志归档这件事辛苦在前期受益在关键时刻。4. DCS与PLC的加固实操从我接触过的系统说起理论说再多不如动手做一遍。下面我从实际运维的角度分别梳理DCS系统和PLC系统的加固实操要点都是可以直接对着操作的内容。4.1 DCS系统加固以工程师站为核心DCS系统相比PLC最大的特点是集中性。操作员站、工程师站、历史服务器、控制器都在一张网里攻击DCS相当于直接控制了整个工厂的“大脑”。所以DCS加固的重中之重是保护好工程师站和操作员站这些主机节点。我给DCS项目做的加固清单一般包括工程师站和操作员站全部启用屏幕锁屏和登录密码锁屏时间不超过10分钟关闭不需要的USB口和光驱删除或禁用与生产无关的软件包括浏览器、聊天工具、游戏统一安装白名单软件只允许运行DCS组态软件和办公必需软件。有些DCS组态软件比如电力行业常用的Ican这类系统本身自带权限分级和操作记录功能工程上要真正启用而不是装完就算完事。网络层面DCS与上层MES/ERP系统的连接必须经过防火墙并且只开放必要的端口。以OPC通信为例传统OPC基于DCOM会在随机端口上通信防火墙很难管控。更推荐使用OPC UA方案利用其固定端口和安全策略把防火墙规则限定清楚。历史数据库对外提供数据时也用专门的接口网关不允许直接暴露数据库端口。再补充一点DCS的逻辑联锁一定要放在控制器里执行不要写在上位机脚本或HMI脚本里。原因是控制器独立于上位机运行即使上位机被攻破或者断网控制器里的联锁逻辑依然在工作。这是DCS工程的基本功也是工控安全里非常重要的一环。4.2 PLC加固实操西门子、三菱到国产PLCPLC系统分布广、数量多单台价值低容易被忽略。但恰恰是这种“单点容易忽略”的PLC往往连着变频器、伺服、阀门这些执行机构一个节点被控制就可能造成设备误动作。西门子PLC的加固重点在TIA Portal的CPU属性里操作设置访问级别为“完全保护”设置不低于10位的强密码关闭“允许PUT/GET通信访问”如果启用PROFINET配置通信对端的IP白名单程序块启用“防复制保护”和“Know-How Protection”防止程序被非法读取。这些设置做完之后PLC程序即使被上传也无法查看逻辑。三菱PLC的加固路径类似在GX Works2或GX Works3里设置CPU口令远程口令勾选“禁止远程RUN/STOP操作”对程序设置关键字保护。FX5U还支持通过安全以太网进行通信加密如果现场有网络攻击风险建议启用加密通信。国产PLC汇川、信捷、台达等近几年的产品基本都具备程序保护口令、运行状态锁等功能虽然各家菜单叫法不一样但思路一致凡是能限制未授权访问的功能都建议在项目交付前配置到位。这里有一个容易被忽视的坑很多PLC的程序保护口令设定之后厂家技术支持就进不去系统了记得把口令同步到项目的正式文档里避免出现“工程师离职现场谁都进不去”的尴尬。4.3 VMware仿真环境与PLC联调的安全实践前文提到补丁测试离不开虚拟化环境这里专门说一下VMware里连PLC这种常见需求。用虚拟机安装TIA博途想要连接真实的PLC虚拟机的网卡必须设置为“桥接模式”并且手动固定IP地址和PLC在同一网段。很多人连不上PLC原因往往就是虚拟机默认用了NAT模式——NAT模式下虚拟机发出的广播包到不了物理网卡博途自然扫描不到PLC。如果是学习或测试场景更推荐用TIA自带的PLCSIM或S7-PLCSIM Advanced做纯仿真不需要真实硬件。但要注意PLCSIM虚拟PLC和真实PLC在通信行为上有差异测试PUT/GET、S7通信这些功能时最终还是要用真实PLC验证。这套虚拟化环境最大的安全价值在于你可以放心地把补丁包、组态软件升级包、程序变更先在仿真环境里验证跑通了再上生产。把“试错”控制在离线环境不给生产系统添乱这是每个自动化工程师都应该养成的习惯。5. 从“裸奔”到“有防护”分四个阶段落地工控安全建设不要想着一步到位一套大而全的方案往往成本高、落地难。我更推荐分四个阶段推进每完成一个阶段安全水平都有实实在在的提升。5.1 第一步资产盘点与风险测绘先回答三个问题网络里到底有多少PLC和DCS它们都在哪开放了哪些端口没有资产清单安全无从谈起。盘点可以通过网络扫描实现。在停产检修时段用Nmap扫描核心控制网的IP网段识别开放端口和运行的服务用Wireshark做被动流量分析观察网络里实际跑了哪些协议。对于DCS系统直接查看工程师站的组态工程把控制器型号、站号、通信参数登记造册。最终形成一份资产台账记录IP地址、MAC地址、设备型号、固件版本、所在安全域、责任人。这里特别提醒对运行中的控制系统做主动扫描可能产生异常流量导致控制器通信中断。所以扫描前必须评估风险尽量安排在停产或低负荷时段并且先扫监控层再考虑控制层。5.2 第二步边界收敛与最小化资产摸清之后开始做减法。把不需要的服务和端口全部关闭不需要的网络连接全部断开。办公网到生产网的访问控制只在防火墙上放行明确需要的IP和端口MES要数据就只开MES服务器到生产数据库的端口其他一律拒绝。PLC、DCS的开放端口也做一轮收敛比如S7-1200/1500如果不需要PUT/GET就关闭三菱PLC的远程口令全部设置上。远程维护通道也要同步整改。很多供应商远程维护都是直接连到办公网再跳到控制网中间没有任何审计。建议改用带权限控制和操作审计的工业远程网关供应商每次远程操作都留下记录。项目交工后没有维护合同的供应商账号一律删除。5.3 第三步监控与应急响应收敛了边界还要看得见风险。在核心交换机上做端口镜像把流量接入工业IDS或流量审计系统设置告警规则PLC程序变更、控制器下装、登录失败次数异常、访问非白名单端口这些行为一旦触发就推送告警。主机层面部署白名单USB口封禁移动介质管理到位。同时要提前写好应急响应预案发现异常后第一步是隔离——断开受影响区域与外部网络的连接必要时直接拔网线第二步是冻结现场保留日志和现场证据第三步是启动备份恢复从离线备份恢复PLC程序或DCS组态。预案不能只写在纸上要定期演练。我见过一个工厂做过勒索病毒应急演练从发现异常到隔离恢复前后只用了40分钟就是因为预案演练了好几次每个人都清楚自己的位置。5.4 第四步常态化安全运营安全不是一次性项目而是持续运营的过程。每个季度做一次安全巡检检查口令是否更换、白名单策略是否失效、日志存储是否充足每次项目变更新增设备、修改程序、升级组态软件都走安全评估流程每年至少做一次补丁更新和应急预案复演。更重要的是人员意识。现场工程师随手插U盘、操作员把密码贴在显示器边框上、厂商调试人员用默认口令登录这些行为靠工具解决不了必须靠培训和制度。我在项目里会要求每次安全培训都讲实际案例把“中招之后产线停摆一周”的真实代价讲清楚比念一百遍安全手册都管用。6. 工程师们常踩的坑与心态转变最后把我在实际项目里遇到的问题整理成一套速查表这些都是现场踩过坑之后的经验教训。现象可能原因排查思路组态软件连接不上PLCPLC访问级别设置了密码保护或PUT/GET被关闭确认CPU访问级别设置输入正确密码检查通信参数虚拟机里博途扫描不到PLC虚拟网卡NAT模式导致广播被隔离将VMware网卡改为桥接手动固定IP到PLC同网段补丁打完后WinCC画面卡死Windows补丁与WinCC授权或驱动冲突卸载最近补丁查询兼容性列表后重新评估杀毒软件隔离了组态软件文件杀毒把授权文件或DLL误判为病毒工控主机改用白名单机制替代传统杀毒控制器被非法下装口令未设置或口令被泄露设置完全保护密码关闭未授权访问开启日志审计员工离职后账号仍可登录账号回收机制缺失立即清理离职人员账号盘点所有系统账号权限DCS上位机死机导致联锁失效联锁逻辑写在HMI脚本而非控制器把安全生产相关联锁迁移到控制器层执行比工具更重要的是思维方式的转变。很多自动化工程师认为网络安全是“网管的事”自己只管程序好不好用、逻辑对不对。但在今天的环境里PLC、DCS的安全性已经和可用性同等重要——程序写得再好一个网络攻击就能让整个系统瘫痪之前的努力全部归零。现在还有一个新趋势值得警惕AI辅助生成PLC代码越来越流行。AI写的程序里面有没有隐藏的网络访问行为有没有调用风险库这些靠肉眼很难判断。所以AI生成的代码必须经过人工安全评审同时要在隔离环境里充分测试不能直接部署到生产系统。工具提高了效率但安全责任还是要人来扛。我在实际项目里还有一个习惯每次给PLC、DCS设置完口令都会当场验证一遍确认密码有效、权限正确然后把口令写进项目交接文档单独密封保存。踩过“工程师离职现场谁都进不去只能找厂家强制恢复”的坑之后我才意识到安全措施做得过头了也是一种风险——口令管理要做到既防外人又不困住自己。工控安全没有一劳永逸的答案威胁在进化防护也要跟着进化。但把基本功做好——网络分区、设备加固、口令管理、补丁窗口、日志审计、应急演练——你已经比大多数项目安全很多。剩下的就是在一次次实战中不断打磨习惯了。