OPC安全研究分析 – 作者:黄一113530

前言

随着过程控制自动化的发展,自动化系统厂商希望能够集成不同厂家的不同硬件设备和软件产品,各家设备之间实现互操作工业现场的数据能够从车间级汇入到整个企业信息系统中。正是基于这种需要产生了OPC标准,有了这样一个标准,使得系统与设备之间,完全无缝地真正开放和方便地进行企业级的通信成为可能。越来越多的硬件制造商和软件开发商为其产品提供OPC支持,OPC已成为新一代工业过程控制软件接口标准。

OPC介绍

首先,什么是OPC呢?OPC代表OLE(对象链接和嵌入)ProcessControl(过程控制)。OPC是最流行的数据连接标准,用于在控制器,设备,应用程序和其他基于服务器的系统之间进行通信,而无需进入数据传输的自定义驱动程序。

OPC流行的三个优点:

1、计算机硬件厂商只需要编写一套驱动程序就可以满足不同用户的需要。硬件供应商只需提供一套符合OPC Server规范的程序组,无需考虑工程人员需求。

2、应用程序开发者只需编写一个接口程序便可以连接不同的设备。软件开发商无需重写大量的设备驱动程序。

3、工程人员在设备选型上有了更多的选择。对于最终用户而言,可以根据实际情况的不同,选择符合实际的设备。

OPC-UA介绍

既然OPC介绍了,OPC-UA也逃不掉,OPC UA(UnifiedArchitecture,统一架构)是下一代的OPC 标准,通过提供一个完整的,安全和可靠的跨平台的架构,以获取实时和历史数据和时间。OPC是基于DOM/COM上,应用层最顶层;OPC UA是基于TCP IPscoket 传输层。

OPC COM标准使用近15年了,下面几个优点就是OPC UA应运而生的原因:

1.一个通用接口集成了之前所有OPC的特性和信息,A&E,DA,OPC XML DAor HDA

2.更加开放,平台无关性,WINDOWS,LINUX都能兼容

3.扩展了对象类型,支持更复杂的数据类型比如变量,方法和事件

4.在协议和应用层集成了安全功能,更加安全

5.易于配置和使用

OPC Client and OPC server

接下来就得简单说一下OPC是怎么用的了,有OPC Client(OPC客户端)和OPC Server (OPC服务器)两种。

OPC客户端是用来进行人机交互发送指令的,OPC客户端需要请求和写入数据就一定要有OPC服务器,OPC服务器可以看作是协议转换器,用来连接各种PLC硬件设备。OPC Server 提供了许多的接口,Client 端通过这些接口,可以取得与 OPC Server 相连的硬件装度置的信息,而无须了解这些硬件装置的细节信息。通常情况下,OPC Server在OPC Client请求读取或写入数据之前不会执行任何操作。

KEPserverEX连接PLC S7-300

接下来是实际操作,市面上有名的好用的一般是Matrikon和Kepware两家公司的产品,

功能强大,标准,稳定,日志信息丰富。这次我选用的是Kepware家的KEPServerEX,具体的介绍如下图所示:

下图是我配置好KEPserverEX连接西门子S7-300的样子:

1、首先在连接性处新建通道,设置网卡、通道类型和名称等

2、在名称为西门子PLC的地方新建设备,选择S7型号为300,设置PLC的ip地址等

3、在S7-300处设置标记,地址填为DB1.INT00

4、那是快速打开OPC Client的图标

5、打开Clinet端后已经出现了设置好的S7-300的信息

在设置与PLC的连接的时候,有几个注意事项:

1、 通道类型选择Siemens S7 MPI 指PLC300,Siemens S7-200指PLC200,Siemens TCP/IP Eethernet指PLC200和PLC300均可。

2、 Kepware公司的OPCServer需要花钱的不是OPCServer本身,而是采集驱动。不过Kepware公司的OPCServer提供了不花钱的仿真驱动,用来测试上非常好的。下方提示连接两小时后就会断开就是所谓的驱动收费限制。

3、 当网络断开,与PLC连接不上时,server会直接打印日志信息提醒你。

我截取了Client端连接PLC成功进行操作和失败的图,下图Quality通信状态显示良好和bad。成功后就可以对group里面的item进行读取和写入数据啦。

OpenOPC连接介绍

聊了OPC和KEPserverEX的实际连接PLC,那python里的OpenOPC模块也不得不说,使用OpenOpc可以从其他平台访问OPC服务器。OpcOpen通过安装一个服务,允许远程的 TCP/IP链接传输OPC数据,从而越过DCOM来访问远程OPC服务器。

运行部署OpenOPC需要python2.7win32,首先我先检测到在电脑上运行的server是Kepware.KEPServerEX.V6

知道了运行的server版本之后,就可以读取指定设备device,组Group和标签Tag的数据,如下图所示,去读到了KEPserverEX连接S7-300的状态GOOD,这些都是最基础的用法,大家可以继续尝试其他的功能。

OPC安全防护

因为OPC技术使用的广泛性,所以OPC所面临的安全问题也很严峻,例如控制系统和外部网络暴露较多的接口、接入协议的多样性、不同操作人员的控制权限限制、连接认证的加密性和时效性、对OPC服务器的Dos等等,都需要我们去面对解决。

OPC基金会推出的OPC安全通信协议(OPC Security Specifications),从而给予用户可针对每个数据点,给每用户设置不同:浏览(数据点文件夹)、可读、可写和添加(数据点)权限的能力。逐层控制数据访问权限,大大降低了对于原始数据真实性和准确性进行有意或无意破坏的可能;有效地保证了将数据在正确的时间传输给正确的人这一数据通信原则。给车间或工厂的整体通信网络纵深防御的安全保护措施又添加了一道强有力的防护网。OPC UA的诞生也是为了进一步促成提高安全性的,如下如所示:

大致总结了三种提高OPC安全方向

1、基于用户的安全性

控制工程师可能对自动化系统中的所有点都有读写权限,而管理层只需要监测整个车间或工厂的运行,所以操作工程师赋予生产机器的控制权限,负责人只有每日运行报告的浏览权限,防止误操作。

2、基于应用的安全性

任何OPC服务器或产品都可以选择实现以下三种安全级别之一:禁用、DCOM或OPC安全。每一层都提供了更多的安全性和对谁可以访问OPC体系结构中的数据的控制。且要求OPC厂商对OPC安全规范进行全面的实现。

例如DCOM安全,只有Windows DCOM安全是强制的。OPC服务器的启动和访问权限仅限于选定的客户机,客户机应用程序的访问权限也是如此。然而,OPC服务器并不控制对更具体的安全功能的访问。这是DCOM提供的默认安全级别。

3、基于网络建设的安全性

减小网络攻击面,尽量减少控制系统与外部网络之间操作的接口和协议的多样性。拥有一个经过批准的、服务于多个公司需求的连接解决方案不仅可以减少部署和管理成本,还可以减少向攻击者或蠕虫开放的机会。

使用专业的OPC防火墙和网关,为具有类似安全需求的PLC、DCS、HMIs组创建安全区域,设置黑白名单,自动检查、跟踪和保护OPC应用程序所建立的每一个连接。

总结

OPC是世界上使用最广泛的工业集成标准。它应用于广泛的工业和商业应用,从人机接口(HMI)工作站、工厂车间的安全仪表系统(SIS)和DCS,到企业数据库、企业资源规划(ERP)系统和企业世界中的其他面向业务的软件。所以OPC的安全面很广,需要安全意识强的控制自动化专业人员使用集中于控制系统的网络安全实践、适当的OPC体系结构设计和以OPC为中心的安全产品的组合,这样才能一步步踏踏实实做好OPC安全。(文中关于KEPserverEX连接PLC的使用和OpenOPC代码测试的问题均可以私信我)

*本文作者:kirazhou,转载请注明来自FreeBuf.COM

来源:freebuf.com 2020-05-12 08:00:35 by: 黄一113530

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论