1
关注中国自动化产业发展的先行者!
2024
2024中国自动化产业年会
2023年工业安全大会
OICT公益讲堂
当前位置:首页 >> 资讯 >> 行业资讯

资讯频道

OPC通讯安全防护方法的探讨
  • 作者:马纳 章维 陆卫军 罗冰
  • 点击数:4287     发布时间:2016-10-27 15:58:00
  • 分享到:
关键词:

马纳 章维 陆卫军 罗冰 浙江中控技术股份有限公司


摘要:针对OPC通讯中存在安全隐患的问题,本文通过分析OPC通讯原理,阐述了通过部署OPC安全网关对OPC通讯进行协议深度解析实现OPC通讯的安全防护,进一步讨论了OPC动态端口跟踪方法,可解决传统防火墙无法跟踪OPC动态端口,同时分析了OPC指令过滤的方法,可有效解决OPC指令的访问控制。


关键词:OPC;安全防护;动态端口;指令过滤


随着信息化与工业化深度融合的快速发展,工业控制系统越来越多地采用开放的通信协议标准,通信协议所存在的安全隐患日益突出。其中OPC Classical规范(以下称OPC规范)作为一种工业标准为现场设备、自动控制应用、企业管理应用软件之间提供了开放、统一的标准接口,其已在控制领域得到广泛应用,许多工业控制领域的公司都推出了符合OPC技术规范的产品。OPC规范(其协议层次如图1所示)基于Microsoft的DCOM分布式组件技术进行开发设计,由于DCOM技术是在网络安全问题被广泛认识之前设计的,极易遭受网络攻击[1]。


1.JPG

图1 OPC协议层次[2]


1 OPC安全风险分析


DCOM技术是一种提供面向组件对象的服务,其通过DCE/RPC协议进行网络数据封装。由于DCOM技术、DCE/RPC协议本身的诸多漏洞,导致OPC技术规范存在严重的安全隐患,如今已引起了工控行业的普遍担忧,其问题主要体现在以下两方面。


(1)DCOM以及其底层协议DCE/RPC已经发现多个漏洞,表1列举了几个常见漏洞。攻击者一般都利用畸形的RPC数据包使得被攻击对象的RPC服务出现错误,进而使其执行恶意代码,授权攻击者相关权限,最后控制攻击对象,执行安装、删除软件程序,甚至创建新用户等操作。虽然微软公司已经推出了相关漏洞补丁,但是许多计算机并未安装漏洞补丁,这使得这部分计算机依然存在安全风险[4]。


表1 已知的DCOM漏洞[3]

2.JPG


(2)OPC通讯端口由DCOM机制动态协商所得,其端口范围为1024~65535。若OPC通讯采用传统的防火墙进行安全防护,则需最大限度地开放通讯端口,将形成较高的安全风险[5]。


针对上述问题,本文通过分析OPC通讯协议原理,提出OPC通讯安全防护方法,实现OPC通讯的动态端口跟踪、非法OPC指令过滤,提高OPC通讯的安全性。


2 OPC通讯原理分析


OPC规范的底层通讯协议——DCOM协议采用客户服务器(C/S)模型,通过RPC(Remote Procedure CaII)实现远程过程调用,实现了COM技术的网络化,因此DCOM技术也称为OPRC服务(对象ORPC)。客户创建一个DCOM 服务器对象时,通过指定服务器IP地址或计算机主机名等指定被调用DCOM组件的位置,激活DCOM组件对象后,即可调用DCOM组件相关的接口进行远程过程调用。


图2为DCOM实现架构,其中客户通过135端口的对象解析服务(Object Reslover Service )完成DCOM组件对象的激活、服务器查询、对象保活及回收(Pinging机制)等任务,客户激活DCOM组件对象后,其可通过服务端返回的信息获取动态端口。服务器通过该动态端口向客户提供DCOM组件服务(ORPC服务),即客户通过该动态端口可实现DCOM组件相关接口的远程过程调用。因此当OPC通讯时,OPC服务器将通过动态端口提供OPC组件相关服务。


3.JPG

图2 DCOM实现架构


在DCOM服务中,DCOM对象是客户与服务器间进行信息交互的实体,其由对象管理服务(ObjectExporter)负责管理实现,客户对某个对象只能通过该对象实现的接口进行信息请求。每一个DCOM接口规定了一组方法用于实现具体的逻辑功能,每一个逻辑功能规定了一套输入输出参数。每个DCOM接口都具有唯一标识IID,其所包含的方法(即函数接口)采用操作数(Operation Number)表示, 因此OPC规范所提供的OPC标准接口为OPC客户与OPC服务器间的一组协议。OPC客户程序通过提供OPC接口IID获取OPC接口指针(又称IPID),即可通过IPID调用接口相关OPC方法(以下称OPC指令),从而实现OPC指令对应的逻辑功能[6]。


4.jpg

图3 OPC通讯协议层次


DCE/RPC协议作为DCOM的底层通讯协议使得DCOM能够通过网络进行信息交互,其支持多种传输层协议,包括UDP、TCP、SMB2等。由于DCOM技术采用了面向连接的通讯机制,其采用TCP协议(通讯协议层次如图3所示)。


若DCE/RPC采用TCP作为传输层协议,其数据包由首部(PDU Header)、数据包主体信息(PDU Body) 以及数据包安全信息(Authentication Body)组成,如图4所示。其中PDU Header描述了数据包结构组成信息,PDU body 描述了数据包的基本内容,Authentication Body则描述了数据包所采用的安全协议的相关信息。DCE/RPC包括Bind、Bind_ack、Bind_nak、Alter_context、Alter_context_response、Request、Response、Fault、Shutdown、Cancel、Orphaned9种类型的PDU数据包。其中Request数据包以及Response数据包用于DCOM方法的远程过程调用,即服务器从客户的Request包中获取DCOM方法的输入参数,在本地执行DCOM方法后,将相应的输出参数通过Response包返回给客户,其DCOM方法的输入输出参数信息采用NDR32编码方式进行信息封装[7-8]。


5.jpg

图4 RPC数据包结构


3 OPC安全防护具体实现的讨论


为了解决OPC通讯存在安全防护薄弱的问题,绝大多数工控安全厂商通过将OPC安全网关以串联方式部署在OPC服务器与OPC客户端的通讯链路上(如图5所示),通过队列缓存每包OPC通讯数据包, 使用OPC通讯安全防护算法对每一组OPC数据包进行深度解析,将符合OPC通讯安全规则的数据包进行转发,同时丢弃非法的OPC数据包。本文将从DCE/RPC数据包基本格式检查、OPC动态端口跟踪、OPC非法指令过滤三方面实现对OPC通讯的有效监控,保证OPC通讯的安全性。


6.jpg

图5 OPC网关部署结构


3.1 OPC动态端口跟踪


OPC客户通过135端口连接至OPC服务器后,通过发送IActivation::RemoteActivation()方法的Request数据包请求OPC组件的连接信息,OPC服务器将通过相应的Response数据包返回包含了动态端口、OPC服务器计算机名、OPC服务器IP地址等内容的OPC通讯连接信息。因此OPC安全网关通过监控IActivation::RemoteActivation()方法的远程调用过程获取OPC动态端口,然后建立相应的OPC通讯访问控制规则(ACL),其OPC的ACL规则包括源地址、目的地址、OPC服务端口(即动态端口)信息,若数据包无法从ACL规则库中找到匹配的ACL规则,数据包丢弃,否则数据包将继续进行TCP状态检测,最后完成OPC应用层协议解析。OPC安全网关打开动态端口后,实时监控OPC通讯以判断动态端口的有效性。若OPC通讯长时间保持无连接状态,OPC安全网关将删除OPC连接相应的ACL规则,从而关闭无效的OPC通讯动态端口,OPC动态端口识别软件流程如图6所示。


7.jpg

图6 OPC动态端口识别


3.2 OPC指令过滤


OPC客户在OPC服务器建立OPC组件服务的TCP连接后,将调用相应的OPC指令获取相应OPC服务。因此OPC安全网关通过实时跟踪OPC客户端向OPC服务器发起的OPC方法调用过程,检查客户所调用OPC指令的合法性,若OPC指令为非法指令,则OPC安全网关丢弃数据包,同时删除OPC连接相应的ACL规则以中断相应的OPC通讯。为了提高系统的灵活性,OPC安全网关可在内部建立OPC指令白名单作为OPC指令合法性检查的依据,用户可根据自身需求,配置OPC指令白名单,实现不同OPC客户的访问控制,这样可进一步限制OPC远程过程调用行为,提高了系统的安全性。OPC指令过滤的软件流程如图7所示。


8.jpg

图7 OPC指令过滤


4 结语


本文分析了OPC通讯存在的安全风险及OPC通讯原理。重点讨论了OPC通讯安全防护方法,分别针对OPC通讯动态端口的跟踪、OPC指令过滤等作了进一步的分析与阐述,通过部署OPC安全网关实时跟踪OPC通讯动态端口,保持OPC通讯端口打开数量的最小化,解决传统防火墙无法有效地进行OPC动态端口防护的问题。与此同时,通过OPC指令过滤算法,过滤非法OPC指令,进一步降低了OPC通讯的安全风险。目前OPC安全防护相关应用还处于起步阶段,国内几家工控安全厂商分别推出了OPC安全防护产品,但尚未得到广泛应用,OPC安全防护相关技术方案、产品还需进一步论证、优化。


作者简介

马纳(1989-),男,浙江慈溪人,现就职于浙江中控技术股份有限公司,主要从事工业控制系统信息安全相关技术研究。


参考文献:

[1] OPC Foundation. OPC Overview 1.00[M]. 1998: 6.


[2] Microsoft. Distributed Component Object Model (DCOM)[A]. Remote Protocol[M], 1998.


[3] 赵丽敏, 童舜海. 基于RPC的安全问题研究[J]. 丽水学院学报, 2007, 29 (05) : 85.


[4] OSIsoft. DCOM Security and Configuration Guide [M], 2012: 1.


[5] 伍光胜, 郑明辉等. COM/DCOM技术的分析及应用[J]. 计算机应用研究. 2001 (9) : 65.


[6] 高立涛. Windows 网络下的RPC攻击检测方法研究[D]. 北京: 北京交通大学, 2007.


摘自《工业控制系统信息安全》专刊第三辑

热点新闻

推荐产品

x
  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: