本发明专利技术公开了一种基于动态跟踪技术的OPC协议的安全防护方法,该方法一端连接一个或多个OPC客户端、另一端连接一个或多个OPC服务器,通过设计的数据捕获、数据包解析分析的OPC包,之后进行动态跟踪与端口的授权管理,跟踪OPC数据包端口内容,在建立连接之后对流经的数据包基于端口及协议进行监控,阻止不合法的数据包通过。该方法的设备只需简单接入OPC客户端与OPC服务器端之间即可,无需其他配置操作,即可以保证OPC通信网络的安全性。
【技术实现步骤摘要】
本专利技术涉及一种基于动态跟踪技术的OPC协议的安全防护方法,属于工业控制网络安全领域。
技术介绍
随着过程自动化的发展,自动化系统厂商希望能够集成不同厂家的不同硬件设备和软件产品,各家设备之间实现互操作,工业现场的数据能从车间级汇入到整个企业信息系统中。OPC是一种能够有效地进行数据访问和管理的开放标准,能在工业控制环境中各个数据源之间灵活地进行通信。OPC在电力行业、石化行业、楼宇控制等很多领域都有应用,能对PLC、DCS、Historian数据库等很多设备进行有效的访问与整合,它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。但OPC协议(OPC DA, OPC HAD和OPC A&E)基于微软的DCOM协议,DCOM协议是在网络安全问题被广泛认识之前设计的。因此,这些协议给控制系统的安全性和可靠性提出了极大的挑战。大多数TCP和UDP通讯协议都使用单一的标准化端口号,例如Modbus TCP通常使用502端口。客户端设备建立对服务器设备502端口的连接,然后发送数据到服务器设备,或者接受来自服务器设备的数据。使用防火墙来保护这些客户端和服务器设备相对而言比较简单,只需设置防火墙,仅允许指定端口号的上的通讯,阻止其他所有的网络通讯即可。OPC Classic协议就不是如此简单了,建立OPC连接需要以下两步:(I)客户端通过135端口查询服务器以获取通讯所需的TCP端口号;(2)客户端使用第一步获取到的端口号连接到服务器,访问目标数据。实际数据连接(步骤2)使用的端口号是由OPC服务器以一个虚拟随机序列动态分配的,因此没有办法提前知道服务器返回给客户端的端口号。正因如此,传统的防火墙在保护OPC服务器时,不得不允许OPC客户端和OPC服务器之间如此大范围内的任何端口号的TCP连接。在这种情况下,防火墙提供的安全保障被降至最低。因此,目前绝大多数的OPC服务器都在没有任何防火墙保护的情况下运行,从而很容易受到恶意软件和其他安全威胁的攻击。
技术实现思路
有鉴于此,本专利技术的目的是提供一种保证OPC通信安全的方法,基于动态跟踪技术,解决OPC协议因为DCOM技术的安全脆弱点所产生的安全威胁,保证应用OPC技术的工业控制网络通信的安全性。本专利技术为实现上述目的所采用的技术方案是:一种基于动态跟踪技术的OPC协议的安全防护方法,包括以下步骤:数据捕获与协议解析:利用Linux内核的Netfilter机制采集工业控制系统中OPC通讯流量,按照数据包信息进行协议判断,只解析OPC协议的数据信息,解析出源IP地址、目的IP地址、源端口号、目的端口号、服务器分配的端口号;端口跟踪:跟踪客户端OPC请求信息,在服务器返回OPC应答信息中包括服务器端通过一个虚拟随机序列动态分配的TCP端口号,在协议解析过程中对解析出来的动态分配TCP端口进行记录;端口授权管理:对合法的TCP端口分配交互过程进行授权,即打开安全防护设备正常通讯所需最小权力的端口,并对交互过程维护;访问控制:对经过TCP端口授权的交互通信信息的放行,并对该交互通信信息的传输过程进行访问控制防护,阻止未经TCP端口授权的数据传输及控制命令传送;阻止不符合DCE/RPC协议标准的请求及响应。所述OPC协议解析出的数据信息被存储下来。所述端口授权管理还包括:定期检测TCP端口授权是否有效,关闭达到时间限制的打开端口。所述关闭达到时间限制的打开端口根据源IP地址、目的IP地址、所需端口号,关闭这个端口号的端口。所述访问控制允许域名解析通讯通过,允许通过其计算机名访问OPC服务器,允许OPC客户端和OPC服务器之间的NetB1S名字服务和NetB1S数据报服务。本专利技术在深入理解OPC协议及DCOM基础上设计,有很好的稳定扩展性及实用性,只需简单接入OPC客户端与OPC服务器端之间即可,无需其他配置操作,即可以保证OPC通信网络的安全性。【附图说明】为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,均应落入本专利技术的保护范围。图1为本专利技术的整体功能示意图;图2为本专利技术的基本模型流程图;图3为本专利技术中基于白明单方式进行访问控制的功能示意图;图4为本专利技术中动态跟踪与端口管理功能流程图。【具体实施方式】下面结合附图及实施例对本专利技术做进一步的详细说明。为了防护OPC通信的安全,并且在不改变工业控制系统拓扑结构的情况下,本专利技术用于下述情形:一端连接一个或多个OPC客户端、另一端连接一个或多个OPC服务器,通过对两端流经的数据流进行处理来保证安全性。参见图1,示出了本专利技术基于动态跟踪技术的OPC协议安全防护方法的基本思想及实现原理,参见图2,示出了本方法的基本模型流程图及结构,本专利技术的方法在具体实施时,工作主要流程如下:步骤一:利用Netfilter机制捕获流量数据包,注册钩子函数,截获网络接口数据流量sk_buff,包括OPC协议的数据流,而不是通过拷贝网卡数据包进行安全防护。步骤二:对于客户端捕获的数据,设计协议解析功能0PC_check,它支持OPC DA、OPC XML-DA, OPC HDA和OPC A&E协议,判断数据包流量是否是135端口,如果是135端口数据,认为客户端发起OPC连接请求,解析数据包内容源IP地址、目的IP地址、源端口号、目的端口号;对于服务器端捕获的数据,经过协议解析0PC_check,判断是否是端口 135回应请求信息的数据包,如果是解析数据包内容源IP地址、目的IP地址、源端口号、目的端口号、及其中包含返回的OPC服务器端通过一个虚拟随机序列动态分配的一个端口号;如果为其它信息,转到访问控制模块信息进行处理。步骤三:将服务器端捕获的内容源IP地址、目的IP地址、源端口号、目的端口号、及服务器端分配的端口号,根据客户端捕获的源IP地址、目的IP地址、源端口号、目的端口号进行相关性判断,如果存在,并且分配的端口号不同,则在相同的双向链表存储位置之后建立一个新链表,如果存在,但分配的端口号相同,但这种情况基本不会发生,则关闭已打开的端口号,让OPC客户端从新与服务器端进行连接;如果不存在,则基于服务器端解析的信息新建存储空间;其中存储空间是一个双向链表结构,链表内容也是个双向链表结构。步骤四:基于存储内容,参见图3设计了端口授权管理模块,它先判断端口是否已打开,如果没有打开,则授权打开存储内容中服务器端分配的端口号,如果已打开,则关闭端口连接,让OPC客户端与服务器端重新建立连接。并且基于访问时间先后改变双向链表次序,用于在新进程中定时检查是否有长时间不活动,但还打开的端口,其中对放在前面的端口信息,检测、关闭达到限制的端口。其中授权管理模块每条命令在打开与关闭端口时都要向访问控制模块中的规则信息添加或删除规则。步骤五:设计基于白名单的访问控制模块,参见图4,其中规则信息主要包含源IP地址、目的IP地址、端口号信息、及匹配规则动作,默认策略为阻止一些流量信息,即能阻止非法端口数据的数据传输及控制命本文档来自技高网...
【技术保护点】
一种基于动态跟踪技术的OPC协议的安全防护方法,其特征在于,包括以下步骤:数据捕获与协议解析:利用Linux内核的Netfilter机制采集工业控制系统中OPC通讯流量,按照数据包信息进行协议判断,只解析OPC协议的数据信息,解析出源IP地址、目的IP地址、源端口号、目的端口号、服务器分配的端口号;端口跟踪:跟踪客户端OPC请求信息,在服务器返回OPC应答信息中包括服务器端通过一个虚拟随机序列动态分配的TCP端口号,在协议解析过程中对解析出来的动态分配TCP端口进行记录;端口授权管理:对合法的TCP端口分配交互过程进行授权,即打开安全防护设备正常通讯所需最小权力的端口,并对交互过程维护;访问控制:对经过TCP端口授权的交互通信信息的放行,并对该交互通信信息的传输过程进行访问控制防护,阻止未经TCP端口授权的数据传输及控制命令传送;阻止不符合DCE/RPC协议标准的请求及响应。
【技术特征摘要】
【专利技术属性】
技术研发人员:尚文利,赵剑明,万明,张华良,曾鹏,于海斌,
申请(专利权)人:中国科学院沈阳自动化研究所,
类型:发明
国别省市:辽宁;21
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。