一、协议概述

提到OPC协议,大家想到最多的就是OPC Classic 3.0,实际上现在OPC协议有两个大类,一种是基于微软COM/DCOM技术的“Classic”,另一种是基于Web service的OPC UA。前者在DCOM协议之上,诞生较早,已广泛应用在各种工业控制系统现场,成为工业自动化领域的事实标准。后者与前者比出生较晚,但在设计时考虑了安全因素,有了加密机制,不过目前应用范围较小。本文主要讨论的是前者在工控系统中的防护。

微软的DCOM协议是在网络安全问题被广泛认识之前设计的,而基于DCOM协议的OPC Classic基本没有增加任何安全相关的特性,几乎所有著名的工业自动化软件(包括HMI软件、先进控制与优化软件、监控平台软件、综合集成软件等)都是基于windows平台开发,都采用或部分采用了OPC技术,所以对使用OPC协议进行通信的工控系统进行防护也变得复杂和困难。

二、动态端口

与大多数应用层协议不同,OPC的基础协议DCOM协议使用动态端口机制,在真正建立数据连接之前通讯双方还需要协商需要使用的端口。示例图如下:

  OPC动态端口协商过程

上图中,OPC客户端使用5568作为源端口首先向OPC服务器的135端口发起连接,连接成功后再经过OPC服务器分配新端口1118,并通过接口ISystemActivator的方法RemoteCreateInstance的应答报文返回给客户端,之后客户端使用5569作为源端口向服务器的1118端口发起新的连接用来后面的真正数据的传输。

三、面临的安全威胁

基于OPC协议的工控网络系统面临各种各样的威胁。在“两网”融合的大背景下,工业控制系统的隔离性被打破,面临来自网络的威胁空前加剧。无用端口的开放、工业软件依赖的操作系统本身存在的安全漏洞、工业协议本身安全性的缺失等等都将给工业控制网络带来巨大的安全隐患。在真正接入到企业管理网、互联网之前,基于OPC协议的工业控制系统必须加入相应的安全设备进行防护,才能提高自身网络的安全。由于OPC协议不同与传统的IT应用层协议,对OPC协议的解析深度决定了安全产品在工业控制系统安全防护中的真正作用。

四、防护方案简介

1. 传统IT系统防火墙

如果在基于OPC协议的工业控制系统中安装传统IT系统防火墙(以下简称:传统防火墙)进行防护,由于传统防火墙不支持OPC协议的任何解析,为了能够保证OPC业务的正常使用,不得不开放OPC服务器的所有可开放端口,而OPC服务器可以分配的端口号范围很广-如果OPC服务器安装在Windows Server 2008,超过16000个端口号都可能被使用,早期的Windows版本则超过了48000个端口号。

  传统防火墙部署示意图

上图中传统防火墙安装在企业管理网和生产控制网的边界进行防护,由于OPC服务器可能使用任何可使用的端口来进行真正的数据连接,而具体使用的端口号在响应客户端请求的应答报文中。传统防火墙无法识别出OPC服务器具体使用的端口号,为确保OPC客户端可以正常连接OPC服务器,防火墙需要配置全部端口可访问,这样的传统防火墙形同虚设,生产控制网的门口大开,几乎安全暴露在攻击者面前。

2. 端口防护工业防火墙

区别与传统防火墙,近年来发展起来的专门用于防护工业控制现场的工业级防火墙基本支持了OPC的深度解析,但依据解析深度的不同,在OPC协议为基础的网络中,工业防火墙的防护能力也有所不同。

对OPC进行简单解析的工业防火墙可以跟踪OPC连接建立的动态端口,最小化的开放工业控制网络的端口。如下图:

  端口防护级工业防火墙部署示意图

端口防护级工业防火墙同样部署在企业生产网和生产控制网的边界,此时配置策略只需要配置开放OPC服务器的135端口,当OPC客户端与服务器建立连接时,端口防护级防火墙跟踪并解析OPC服务器与OPC客户端协商出来的动态端口,然后自动将动态端口加入到防火墙的开放端口中,从而最小化开放生产控制网的端口,与传统防火墙相比,防护能力有了进一步提升。

3. 指令防护工业防火墙

端口防护工业防火墙相比传统防火墙虽然提升了防护能力,但攻击者仍然可以通过建立的数据通道发送恶意的OPC操作指令,所以仅仅做到动态端口跟踪还无法保证基于OPC协议的工业控制系统的安全。所以对OPC协议的进一步解析,催生了指令级防护工业防火墙,这也是目前市面上主流的工业防火墙。OPC协议的深度解析要求也加入到了工业防火墙国家标准的草稿中(此标准尚未正式发布)。下图是指令级防护工业防火墙的典型部署:

  指令级防护工业防火墙部署图

部署在企业管理网和生产控制网边界处的指令级工业防火墙,深度解析OPC协议到指令级别,不仅可以跟踪OPC服务器和OPC客户端之间协商的动态端口,最小化开放生产控制网的端口,还对OPC客户端与OPC服务器之间传输的指令请求进行实时检测,对于不符合安全要求的操作指令进行拦截和报警,极大提升了基于OPC协议的工业控制系统的网络安全。

除了做到指令防护外,还有更人性化一点的工业防火墙内置只读模板,满足使用OPC协议的大部分业务场景,因为使用OPC协议的工业控制现场一般只是用来采集数据,使用只读模板来防护完全满足现场安全要求。工业防火墙内置的只读模板一键部署,安全、方便,降低管理员维护成本,有效保障工业控制系统数据不被恶意篡改。

4. 优缺点比较

  五、结论

随着国家网络安全法的颁布和国家“中国制造2025”战略的要求,逐渐打破物理隔离的工业生产网络对安全的需求越来越迫切。对于生产现场有OPC协议的企业来讲,综合自身实力选择适合自己的安全防护产品显得越来越重要。而对OPC协议的解析到指令级还不够,后续还需要深度解析到OPC协议操作指令所操作的对象是否在安全范围内,对操作对象的值进行安全检测,确保OPC协议发送的每一个字节都是可识别、可控制、安全无害的。