在当今数字化的工业世界中,OPC DA 协议扮演着重要角色,但其局限性和安全隐患不容忽视。OPC DA协议诞生于20世纪90年代,当时工业自动化蓬勃发展,工业现场自动化设备软件系统广泛应用,为确保设备间无障碍交流,自动化领域的专家提出了 OPC 解决方案,借助微软的 COM 和 DCOM 技术实现服务器与客户端的通信。接下来六方云会追根溯源,让您全方位、多角度洞悉 OPC DA协议,为工业网络安全筑牢防线。
OPC DA协议带着缺陷诞生
在90年代,微软操作系统占据市场主导,自动化供应商在别无更好选择的情况下采用了微软推出的COM和DCOM技术,这导致服务器和客户机必须在Windows系统下才能工作。由于DCOM协议在设计之初,网络安全问题尚未得到广泛重视,因而存在诸多安全漏洞,缺少有效的入侵检测与防护措施,在认证、鉴别与访问控制机制方面也存在不足,这使得其极易遭受攻击。黑客可能利用其漏洞篡改实时数据,导致生产流程失控,造成巨大的经济损失和安全事故。OPC DA协议在实际应用中存在诸多缺陷和风险,给工业生产带来了严重的安全威胁。黑客可能利用其漏洞篡改实时数据,导致生产流程失控,造成巨大的经济损失和安全事故。但由于在其发展初期,对网络安全的考量有所欠缺,在那个技术和认知相对有限的年代,对于网络安全的重视程度远不如现在,致使该协议在设计和实现上没有充分考虑到安全因素,从而容易被不法分子加以利用漏洞,威胁着工业生产的安全和稳定。
微软的.NET 框架是基于 COM 和 DCOM 实现的,这一特性决定了 OPC 服务器和客户端之间的通讯方式。通讯方式确定后,数据种类的明确至关重要。为此,引入了不同的接口,其中 OPC 数据访问(DA)接口允许实时读取、写入和监控过程的变量,OPC 历史访问(HDA)接口用于提供对已存储数据的访问,OPC 报警和事件接口(A&E)则允许接收事件和报警通知。
非适合工业场景的身份认证、授权、信息完整性
OPC DA协议,即开放平台通信数据访问协议,是基于OPC标准的关键组成部分。这里的“D”代表数据(Data),“A”代表访问(Access)。它并非一种直接的通信协议,而是定义了一种技术使用的标准和规范。
DCOM 协议建立于 Microsoft 的 DCE RPC 实现——Microsoft RPC 之上,并非独立于 RPC 协议,而是复用了 RPC 的结构体,包括数据头和数据体。正因如此,DCOM 协议常被称为对象 RPC 或 ORPC,其作为上层支持面向对象的远程过程调用协议,与 RPC 在网络层次上关系紧密。ORPC 高度融合了 OSF DEC RPC 协议的诸多功能,像 RPC 中的身份认证、授权、信息完整性以及加密等特性,在 ORPC 中均有体现。然而,尽管具备这些特性,DCOM 协议在实际应用中仍面临着一系列网络安全挑战。
内嵌RPC引入远程攻击风险
OPC DA 协议引用 Windows 的RPC协议,这在提供便利的同时,也潜藏着网络安全方面的风险。其复杂的接口定义以及数据传输过程或许存在着漏洞,有可能会被攻击者加以利用,从而进行非法访问或者数据篡改。RPC 由 Sun 发明,是第一种真正的分布式应用模型,而 Windows 上使用的 RPC 是 DCERPC 的扩展。严格来讲,RPC 是一种逻辑协议,能借助 Socket、Named Pipe 等低级协议完成通信。如今,Windows 系统中多数涉及通信和分布式应用的服务程序都采用 RPC 协议。使用 RPC 协议前,需指定一个基于 IDL 的接口,每个接口如同一个应用层通信协议,包含众多协作函数用于客户和服务器通讯,并生成相应的列集代码,即代理/存根代码,且每个接口都有接口代理和接口存根协助通讯。接口代理在客户发起远程调用时拦截,进行数据列集和传输,接口存根则负责接收和处理数据并回传。每个接口通过 UUID 识别,使用基于 DCE IDL 的 MIDL 定义相关内容。RPC 的核心功能由 5 个模块组成,若自行实现 RPC,最简方式要达成服务寻址、数据流序列化和反序列化以及网络传输这三个技术点。
不固定的端口号使传统防护几乎无能为力
OPC DA 协议引用 Windows 的 RPC 协议,这在提供便利的同时,也潜藏着网络安全方面的风险。OPC DA 端口的变化毫无规律,具有随机性。在特定的时间段里,OPC 通信端口或许会在较短的时间内频繁地进行切换。这种情况无疑极大地提高了安全防护的难度与复杂性,致使潜在的网络攻击更易于找到可乘之机,从而对工控系统的稳定运行构成威胁。当端口频繁切换时,安全防护系统可能来不及及时更新防护策略,导致防护出现漏洞。而攻击者则能够利用这些瞬息万变的端口切换时机,突破防护,入侵工控系统,造成严重后果。其复杂的接口定义以及数据传输过程或许存在着漏洞,有可能会被攻击者加以利用,从而进行非法访问或者数据篡改。
在工业控制领域,OPC Classic依托于微软的 DCOM 协议进行通信。由于 OPC 通信采用不固定的端口号,这使得传统的 IT 防火墙在保障其安全性方面几乎无能为力。由此,如何确保运用 OPC 通信协议的工控系统的安全性和可靠性,给工程师们抛出了一道巨大的难题。通过 wireshark 工具我们能够清晰地看到,OPC 通信端口呈现出极大的不确定性。针对端口使用状况展开一系列统计后发现,端口的变化毫无规律可循,随机不定。
六方云动态网络防御技术为 OPC DA 通信安全保驾护航
以上为您介绍了 OPC DA 通信的使用过程。从中可以看出,OPC DA 通信的实质是调用 DCOM 和 OPC DA 的接口方法,而在调用接口的过程中,每个接口和方法的端口号是随机生成的,这给传统安全防护带来巨大困扰。因为在防火墙的使用中需配置 ACL 访问规则,而 OPC DA 通信产生的大量随机端口致使 ACL 配置规则难以实现。针对 OPC DA 缺少入侵检测与防护措施,缺乏有效认证、鉴别与访问控制机制的问题,六方云的网络安全防护产品采用了最先进的动态网络防御技术,能够自动学习并自动生成端口号配置规则,从而对 OPC DA 通信实现全方位的安全防护。
2011 年 12 月,美国国家科学技术委员会(NITRD)发布《可信网络空间:联邦网络空间安全研发战略规划》,明确指出针对网络空间的现实和潜在威胁,要突破传统,发展革命性技术,开启了网络动态防御研究热潮,出现了以移动目标防御(MTD)、拟态防御(CMD)和网络欺骗(CD)等为代表的网络动态防御技术。六方云工业防火墙的 ALG 是基于软件定义网络(SDN)实现的移动目标防御系统,基本实现了常用配置信息的动态变化,其主要功能包括主机存活性和端口随机、服务版本和操作系统指纹隐藏、IP 地址突变。主机存活性和端口随机可抵御网络踩点和扫描;服务版本和操作系统指纹隐藏能抵御操作系统指纹及漏洞探测;IP 地址突变可抵御网络蠕虫和拒绝服务攻击。如下图所示,通过访问控制启用协议自动学习,对默认端口进行学习,动态配置所需随机端口,实现对 OPC DA 的访问控制防护。
本章对全文进行总结,尝试解答前言中提到的问题,关于OPC UA的发展历史,为什么提出OPC UA,它的核心机制是什么?信息建模是什么?为什么要信息建模?OPC 作为自动化数据从 PLC 和 DCS 流向 SCADA 以及查询历史数据的主要方式,局限性明显,即服务器和客户机只能在 Windows 系统下工作。而 OPC UA 标准的提出,根本原因就在于解决这一局限性,使其能够部署到 Linux 系统、各种嵌入式设备以及移动手机上。通过这样的总结,让我们对 OPC UA 的发展脉络及核心问题有了更清晰的认识。