尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

PLC远程维护如何划清权限边界?堡垒机+防火墙ACL落地指南

PLC远程维护如何划清权限边界?堡垒机+防火墙ACL落地指南 如果你管理过带外协服务的自动化产线大概率经历过这种对话外协工程师说我就改一台PLC二十分钟的事儿你随便给个远程入口就行。于是真有同事甩给他一个远程接入账号叮嘱一句“别乱点”。这个画面我每个月都要拦下来好几次。PLC远程维护、堡垒机授权、权限边界这三件事必须放到一起设计——否则外协改完的绝不止那一台PLC。这篇文章就围绕这个场景来写外协工程师要远程维护的明明只是一个点怎么把权限边界划清楚让他只能碰到那一台PLC网络里其他设备一概不给他碰。内容面向两类人一类是像我这样既要管自动化设备又被迫兼职管网络安全的工程师另一类是刚接触工控安全、想知道堡垒机和PLC权限怎么配合的运维同学。下面直接上干货。1. 外协只改一台PLC为什么不能给他整片网络1.1 一个“顺手”动作的真实代价先说个我亲眼见过的事。某供应商工程师远程处理完一台运动控制器的报警后用自己的笔记本在车间网段里扫了一圈想看看现场还有没有其他设备能连。结果这个扫描动作直接让旁边产线上三台西门子PLC的通信全部中断正在跑的一条线停了四十多分钟产线上的工人差点把维修部门电话打爆。这就是典型的“给了整片网络权限”造成的后果。外协工程师不是坏人他可能就是习惯性地用扫描工具找设备、看端口、顺手测试几个IP但在生产网络里这种“顺手”的成本高得吓人。PLC的通信很多是基于UDP广播和实时轮询的扫描工具发出去的探测包可能直接占掉PLC有限的连接资源甚至触发通信超时。所以“只改一台PLC”这个需求本质上不是“给他开个入口”而是“精确到一台PLC的IP、一个协议的端口、一个时段的有效期”的权限控制。1.2 OT网络和IT网络混在一起才是最危险的现在很多中小工厂的网络形态是办公网、监控网、PLC控制网全在一个大二层里。外协工程师如果被放进办公网他理论上能触达的不只是打印机和文件服务器还包括和办公网同网段的那几台PLC、数控系统、传感器网关。问题在于办公网里的设备每天都在做很多“正常但不适合生产网”的事Windows自动更新、杀毒软件联网拉特征库、NAS备份任务到点唤醒、有人私接路由器。这些流量飘到PLC网段轻则延迟抖动重则导致PLC通信超时。外协工程师的笔记本进了这个环境等于把一颗不可控的定时炸弹放在控制网旁边。我见过最离谱的配置是IT同事把一台PLC的网口直接做了端口映射让外协在外面就能连。这是绝对不能碰的做法等于把设备型号、固件版本、通信协议全部暴露给公网里的任何人密码一破就是现场事故。1.3 PLC不是“重启一下就好”的设备很多人对PLC的认知是“工业设备嘛皮实坏了断电重启就行”。但PLC里跑的是工艺逻辑一个定时器的值被改掉、一个比较器的条件被推翻可能不会立刻报错而是让设备带着错误的逻辑继续跑几个小时甚至几天等你发现的时候废品已经堆了一堆。而且PLC出问题后的责任界定特别麻烦。外协说“我就改了程序段A其他没动”你怎么证明他改没改如果远程维护全程没有日志、没有录屏、没有程序版本比对你只能吃哑巴亏。这也是为什么权限边界不只是“安全部门的事”它直接关系到设备故障的定责和生产事故的溯源。1.4 我见过最离谱的四种放行方式把常见错误做法和对应问题列个表格大家对照一下自己身边有没有错误做法表面看实际后果所有外协共用一个远程接入账号方便省事出了事找不到人口令失效还要逐个通知整改把PLC网口做端口映射直接暴露公网外协随时能连设备型号、协议版本暴露暴力破解门槛极低给外协开一个VLAN整个段随便跑“反正隔离了”VLAN内横向扫描、ARP干扰、误操作照样影响设备靠电话临时通知防火墙放行不记工单快忘了回收权限常驻半年谁也说不清开着有什么目的这四种做法的共同点是把“入口控制”当成了“权限控制”。但真正该做的是让外协能到达的位置、能访问的目标、能执行的操作、能留存的行为全部被限制在一个明确的小框框里。2. 权限边界拆成三层接入层、访问层、审计层2.1 接入层远程接入链路只负责“进得来”权限边界不能是一堵墙而应该是三道独立的门第一道门控制谁能进来第二道门控制进来之后能去哪第三道门记录他在这期间做了什么。接入层要解决的是“谁在连”。外协工程师从现场或者家里发起远程维护前先通过远程接入网关做身份认证认证通过后获得一个独立的私网IP这个IP和他本人是一一绑定的。好的远程接入网关还要和堡垒机做单点认证打通外协登录远程接入之后看到的不是“整个网络”而是堡垒机上和他工单相关的那个授权资源列表其他资源根本不在他视野里。这里有件事我建议重点确认接入层分配的IP能不能固定。外协每次登录拿到同一个IP防火墙ACL也好、堡垒机授权也好才能精确绑定“源IP→目标IP→目标端口”。如果每次IP都漂移后面的访问层策略就没法写死。2.2 访问层只放行到“一台PLC的一个端口”第二道门是整个方案的核心。用防火墙ACL把访问范围卡死到一台PLC的一个端口而不是一个网段。以一台西门子S7-1200为例外协经堡垒机申请的授权目标就是源IP外协接入IP10.8.0.11目的IP10.1.20.88目标PLC目的端口TCP 102S7协议时间窗口工单有效期如2025-06-10 09:00-18:00动作仅允许以上流量除了这一条规则外协IP访问任何其他网段的流量一律deny。注意防火墙规则的顺序很重要在多数设备里默认规则是“允许”所以你要在ACL末尾加上一条显式的拒绝规则把外协IP对其他网段的访问全部挡掉。不同品牌PLC的编程软件走的协议和端口差别很大。我常用的对应关系大概是这样PLC品牌常见协议默认端口西门子S7-1200/1500S7commTCP 102西门子S7-200 SMARTPPI over EthernetTCP 102三菱FX5U/Q系列MC协议/SLMPUDP 5006/5007TCP 5557/5558欧姆龙CJ/NJ系列FINSTCP/UDP 9600台达DVP/AH系列Modbus TCPTCP 502汇川AM/AC系列Modbus TCP等TCP 502通用设备Modbus TCPTCP 502通用设备OPC UATCP 4840这张表只能作为参考千万不要拿着它直接去配防火墙。正确的做法是在外协首次维护前让外协在当前环境或测试环境跑一次正常连接你在维护终端上用抓包工具把实际用到的端口集合记录下来再按抓包结果配ACL。因为很多编程软件在“在线访问”“固件更新”“监视”等功能里会动态使用额外端口只开默认端口很可能导致外协连不上然后他又要找你加规则边维护边加规则非常容易开大口子。2.3 审计层日志、录屏、抓包一个都不能少第三道门是审计。很多厂家的堡垒机对SSH、RDP、数据库协议支持得很好但PLC编程软件走的多是私有二进制协议堡垒机识别不了内容只能记录“什么时候、谁、连到了哪个IP和端口”。所以要补两样东西第一样是操作录屏。如果外协是通过远程桌面进入维护终端的堡垒机可以把整个操作过程录下来。出了争议直接回放录像看外协到底动过什么。第二样是网络抓包。在有条件的情况下把PLC网口的流量镜像到一台抓包服务器维护期间用tcpdump留存流量包后续如果怀疑有人直接向PLC发送了越权指令可以通过抓包文件验证。tcpdump -i eth0 -n host 10.1.20.88 -w plc_maintenance_20250610.pcap这种审计手段的成本不高但在界定责任时价值非常大。别等出了事故才想起来“当时怎么没留记录”到那时候什么都补不了。2.4 给这套边界套一个专业框架工控系统安全领域有一个“区域与通道”的模型也就是把网络切成不同的安全区域区域之间的通信只能通过特定通道完成。咱们这套“远程接入网关堡垒机防火墙ACL维护终端”的做法本质上就是按这个模型搭的PLC、IO模块、伺服、变频器、传感器划成一个控制区域远程接入链路是一条通道Conduit外协工程师只被允许在这条通道里访问一台PLC的特定端口把边界按这个框架理解之后每次新增外协需求你要做的判断就变成他要访问的区域是哪个这条通道上要开什么端口开多久答得出来就授答不出来就退回工单。3. 两种落地架构跳板映射和维护终端按场景选3.1 方案A堡垒机做跳板NAT端口映射适合临时单次第一种方案适合“外协一年来两三次、每次就一个设备”的场景。具体链路是外协电脑 → 远程接入网关 → 堡垒机登录 → 防火墙ACL → 目标PLC外协通过堡垒机授权后用预先配置好的端口映射工具把本地某个端口映射到目标PLC的IP和端口上。比如外协笔记本上执行这样的本地转发本机端口1000 → 10.1.20.88:102。然后编程软件连接127.0.0.1:1000流量经过堡垒机和防火墙自动转发到PLC。这个方案的优点是快速、不占用额外的维护终端缺点是所有流量都经过转发编程软件的很多“在线发现”“自动扫描”功能用不了因为UDP广播包不会穿过NAT转发。解决办法是让外协直接填IP地址连接不能依赖在线扫描。配置时要注意防火墙ACL上的规则要跟着工单走。建议建一个固定的规则组叫“外协临时维护”里面每条规则都带工单号和有效期到期后由自动化脚本或定时任务自动移除。3.2 方案B维护终端录屏适合长期外协和高价值产线第二种方案是我现在最推荐的做法尤其适合产线价值高、外协频率高的场景在OT网络内部署一台加固的维护终端可以是实体工控机也可以是虚拟机预装好对应的PLC编程软件博途、GX Works3、WPLSoft、AutoShop等外协通过堡垒机远程桌面登录这台终端进行维护。为什么这个方案更稳因为外协的电脑从头到尾不接触PLC网络。外协登录看到的只是一个桌面他能操作的只有维护终端里预装的软件维护终端和PLC之间的访问仍然由防火墙ACL精确控制。软件授权问题也不难解决加密狗可以插在维护终端的USB口上软件授权做成软授权放在终端里或者用厂家的License Manager做共享授权。注意维护终端的系统镜像要和控制现场的PLC固件版本、编程软件版本保持匹配避免外协上了终端才发现软件版本对不上又回去找你要别的东西。录屏方案在RDP场景下很成熟堡垒机能自动录制整个远程桌面会话的键鼠操作。另一个好处是RDP的剪贴板和磁盘映射可以关掉外协如果需要上传新固件或者导出程序必须通过工单流程走文件审批所有文件进出都有记录。3.3 两个方案怎么选我把两个方案的差异整理成表格对比项方案A跳板映射方案B维护终端部署成本低复用现有堡垒机防火墙中高需要维护终端和运维投入审计粒度只能记录IP和端口级会话可录屏、可管控文件进出外协便利性外协用自己的电脑和软件版本外协需要适应终端的软件环境网络暴露面外协电脑直接映射到PLC端口外协电脑不接触PLC网络适用场景临时、单次、低频外协高频外协、关键产线、需要强审计从我的经验看大概七成场景用方案A就够了但一旦外协出现两个特征——来得勤、动的是关键工艺设备就值得上方案B。别等到出了事再补那时候补的就不是成本是责任了。4. PLC侧的配合程序锁、只读看板和版本比对4.1 先给PLC设置访问级别别裸奔网络层边界划好了PLC本身也得设置访问保护。以西门子S7-1200/1500为例博途里可以设置保护级别无保护任何能访问到设备的软件都能读写防未授权访问需要输入密码才能访问防写入访问允许读取程序但不允许写入完全保护读写均需要密码建议日常运行状态下把PLC调到“防写入访问”级别这样即使外协的流量穿透了网络层也不能直接改程序。外协确需写程序的时段由现场负责人按工单临时放开维护完成后立即恢复“防写”状态。三菱系列也有关键字保护机制可以限制程序读取、程序写入和远程操作。台达、汇川的PLC通过软件项目密码和PLC密码实现类似功能。这里有一条血泪教训不要把所有PLC都设成同一个密码否则“只放行一台PLC”的边界在账号层就形同虚设外协拿到密码后访问哪台设备都畅通无阻。4.2 架一个只读网关把“看一眼”的需求从PLC上剥离做外协远程维护这几年我发现一个规律大量外协需求根本不是“改程序”而是“看一眼状态”。比如客户打电话说设备停了外协远程上来连PLC读一下报警代码和运行状态结果发现问题不大直接电话指挥现场就解决了。这种需求完全可以用只读网关承接。用Modbus TCP或OPC UA从PLC、传感器、数控机床、变频器里读取运行状态、报警字、温度压力流量等模拟量集中展示到一个只读看板上。外协远程维护前先看状态板能解决掉的“看一眼”需求就不要再给他进PLC的权限。举一个具体的做法以一台支持Modbus TCP的汇川PLC为例在小型工控机上用Node-RED装一个modbus节点每秒轮询一次目标寄存器把数据写入时序数据库再通过看板展示。整个部署一天就能完成。采集点位根据PLC的程序点表来定核心是运行状态字、报警字、关键模拟量。这里提醒一句Modbus读保持寄存器时注意区分掉电保持区和普通寄存器区。有些D区寄存器的值是掉电不保持的看板上的历史曲线如果出现断档先查是不是读区选错了而不是设备真的停机了。4.3 维护前备份维护后比对我现在几乎对每一台由外协远程维护过的PLC都执行“维护前备份、维护后比对”的流程维护前用厂家软件完整上传一次PLC程序存档到项目文件夹文件名带设备编号和日期例如“_S7-1200_产线1_20250610_before”。对上传的程序做一次哈希计算或者用工程比较功能生成基线。外协维护完成后再上传一份完整程序。用工程比较功能做差异对比或者直接对两份上传文件做哈希比对。有差异时要求外协书面说明改了什么否则不验收。西门子博途的Compare功能、三菱GX Works3的比较功能都可以直接展示块级差异非常直观。这个步骤看起来繁琐但能省掉后面一大堆扯皮。尤其是现在很多外协工程师喜欢用AI工具辅助改PLC代码程序改动频率比过去高不少版本比对更是一天都不能省。5. 边界划完后的运营细节工单、回收、复盘5.1 最小化授权跟着工单走权限边界不能只在开通那天有效更重要的是持续有效。我现在的做法是把外协远程维护的每个环节都标准化成工单要素外协人员的姓名、联系方式、所属公司目标设备车间、产线、PLC品牌型号、IP地址工作内容只读诊断、修改程序、调整参数、升级固件起止时间窗口精确到日期和时段审批人设备和产线负责人堡垒机账号的有效期直接依据工单设置到期自动禁用。防火墙ACL上的临时放行规则我建议写一个定时任务每天扫一遍“过期未清理”的规则并自动删除。如果没有自动化条件至少固定每个月第一个周一手工清理一次同时把清理结果截图发到工作群留痕。5.2 几个常见的翻车现场我在实际运维中遇到过的坑整理成表格供参考现象根因处置建议外协账号三个月后还能登录工单结束没人回收授权账号和ACL都必须设置到期时间定时巡检外协说“找不到PLC设备”在线扫描被禁UDP广播无法穿越转发提前确认PLC的固定IP教外协直接填IP连接维护过程中PLC突然连不上PLC连接资源被占满编程软件连接数有限查看堡垒机会话列表踢掉闲置连接限制同时在线数量审计日志时间对不上现场事件堡垒机与PLC侧时间不同步统一NTP对时日志服务器和PLC同步校时误把旧备份当成维护后程序备份文件命名不规范备份文件名强制带“before/after”和完整日期时间这里特别说一下PLC连接数的问题。不少PLC只支持有限个并行编程连接如果之前有会话没有正常释放外协就会遇到“连接失败”他一般不会主动排查而是不断重试反而可能把PLC通信刷得更堵。所以堡垒机上要设置会话超时自动断开避免僵尸会话常驻。5.3 半年一次的复盘检查最后说一个我坚持了很久的习惯每半年对外协维护权限做一次复盘。重点就查这几件事还有没有工单已结束但账号仍存活的情况一定有砍掉。防火墙外协规则组里有没有无意中放行过整个网段的规则。外协远程维护的录屏文件有没有按时存档。只读看板上的采集点位有没有失效是不是有外协又找借口要进PLC了。新增的PLC设备有没有及时纳入权限边界清单。复盘的意义不在于一次查完所有问题而是把“权限边界”这件事从一次性的配置变成一种常态化的流程意识。最后说点掏心窝的。权限边界这种事一开始总觉得麻烦真等出了事故再回头补成本翻倍。我现在的原则是外协到现场也好远程也好一律按“临时工最小权限全程留痕”处理宁可自己多配十分钟也不赌对方“不乱点”。这两年来外协维护的口角少了很多因为规矩都在明面上谁也不用猜。
返回列表