本发明涉及用于过程控制的对象连接与嵌入(ole,objectlinkingandembedding)(opc,oleforprocesscontrol),尤指一种实现报文过滤的方法和装置。
背景技术:
opc协议的提出,为自动化厂商的设备和应用软件之间提供一种标准数据交换的接口。其高效、可靠、开放的特性大大简化了工业现场设备和应用软件之间的通信机制,为不同厂家的设备集成提供了便利。因此其被广泛应用于各种工业控制网络之中。由于opc协议在设计之初,缺乏安全性方面的考虑,存在很多安全隐患,因此,需要对opc终端和opc服务器之间的报文进行过滤。
现有的实现报文过滤的方法大致包括:
接收到来自opc终端的数据报文,判断出接收到的数据报文为opc协议报文,将接收到的报文发送给opc服务器。
现有的实现报文过滤的方法中,仅判断接收到的数据报文是否是opc协议报文,即从网络层面对报文进行过滤,而无法对数据报文的内容进行过滤,数据报文的防护性能较低。
技术实现要素:
为了解决上述问题,本发明提出了一种实现报文过滤的方法和装置,能够提高数据报文的防护性能。
为了达到上述目的,本发明提出了一种实现报文过滤的方法,包括:
接收到来自用户过程控制的对象连接与嵌入opc终端的数据报文;
在预先设置的操作方法、opc项和表示是否允许操作的信息之间的第一对应关系中,查找数据报文中的操作方法和opc项对应的表示是否允许操作的信息,判断出查找到的表示是否允许操作的信息为表示允许操作的信息,将数据报文发送给opc服务器。
可选的,所述接收到来自opc终端的数据报文后,所述在第一对应关系中查找数据报文中的操作方法和opc项对应的表示是否允许操作的信息之前还包括:
在预先设置的允许执行的操作方法中查找到数据报文中的操作方法。
可选的,当所述数据报文中的操作方法为修改时,所述判断出查找到的表示是否允许操作的信息为表示允许操作的信息后,所述将数据报文发送给opc服务器之前还包括:
分别在预先设置的opc项和安全范围之间的第二对应关系中,查找所述数据报文中的各opc项对应的安全范围;
分别判断出所述数据报文中的各opc项对应的数值或字符串长度在查找到的各opc项对应的安全范围内。
可选的,所述接收到来自opc终端的数据报文后,所述在第一对应关系中查找数据报文中的操作方法和opc项对应的表示是否允许操作的信息之前还包括:
在预先设置的参数和表示是否允许通过的信息之间的第三对应关系中,查找所述数据报文中的各预设参数对应的表示是否允许通过的信息,判断出查找到的各表示是否允许通过的信息均为允许通过;其中,预设参数为源互联网协议ip地址、或目的ip地址、或源端口、或目的端口;
和/或,
判断出所述数据报文为opc协议报文。
可选的,当判断出所述查找到的表示是否允许操作的信息为表示不允许操作的信息,或在所述允许执行的操作方法中查找不到所述数据报文中的操作方法,或判断出所述数据报文中的某一个opc项对应的数值或字符串长度 不在查找到的该opc项对应的安全范围内,或判断出查找到的各表示是否允许通过的信息中的至少一个为不允许通过,或判断出所述数据报文不是opc协议报文时,该方法还包括:
丢弃所述数据报文。
可选的,该方法之前还包括:
接收到来自所述opc终端的主连接请求报文,获取所述主连接请求报文中的动态端口获取方法名称,并将所述主连接请求报文发送给所述opc服务器;
接收到来自所述opc服务器的主连接响应报文,在预先设置的动态端口获取方法名称和表示执行结果的格式的信息之间的第三对应关系中,查找获得的动态端口获取方法名称对应的表示执行结果的格式的信息;
根据查找到的表示执行结果的格式的信息获取所述主连接响应报文中的执行结果中的动态端口编号;
将所述主连接响应报文发送给所述opc终端。
可选的,所述接收到来自opc终端的主连接请求报文后,在所述获取主连接请求报文中的动态端口获取方法名称之前还包括:
在预先设置的参数和表示是否允许通过的信息之间的第三对应关系中,查找所述主连接请求报文中的各预设参数对应的表示是否允许通过的信息,判断出查找到的各表示是否允许通过的信息均为允许通过;
和/或,
判断出所述主连接请求报文为opc协议报文。
可选的,所述根据查找到的表示执行结果的格式的信息获取主连接响应报文中的执行结果中的动态端口编号后还包括:
将所述第三对应关系中,所述获得的动态端口编号对应的表示是否允许通过的信息设置为允许通过。
本发明还提出了一种实现报文过滤的装置,至少包括:
接收模块,用于接收到来自用户过程控制的对象连接与嵌入opc终端的数据报文;
过滤模块,用于在预先设置的操作方法、opc项和表示是否允许操作的信息之间的第一对应关系中,查找数据报文中的操作方法和opc项对应的表示是否允许操作的信息,判断出查找到的表示是否允许操作的信息为表示允许操作的信息,将数据报文发送给opc服务器。
可选的,所述过滤模块具体用于:
在预先设置的允许执行的操作方法中查找到数据报文中的操作方法,在预先设置的操作方法、opc项和表示是否允许操作的信息之间的第一对应关系中,查找数据报文中的操作方法和opc项对应的表示是否允许操作的信息,判断出查找到的表示是否允许操作的信息为表示允许操作的信息,将数据报文发送给opc服务器。
可选的,当所述数据报文中的操作方法为修改时,所述过滤模块具体用于:
在所述第一对应关系中查找所述数据报文中的操作方法和opc项对应的表示是否允许操作的信息,判断出查找到的表示是否允许操作的信息为表示允许操作的信息,分别在预先设置的opc项和安全范围之间的第二对应关系中,查找数据报文中的各opc项对应的安全范围;分别判断出数据报文中的各opc项对应的数值或字符串长度在查找到的各opc项对应的安全范围内,将数据报文发送给opc服务器。
可选的,所述过滤模块具体用于:
在预先设置的参数和表示是否允许通过的信息之间的第三对应关系中,查找所述数据报文中的各预设参数对应的表示是否允许通过的信息,判断出查找到的各表示是否允许通过的信息均为允许通过;其中,预设参数为源互联网协议ip地址、或目的ip地址、或源端口、或目的端口;和/或,判断出所述数据报文为opc协议报文;
在所述第一对应关系中,查找所述数据报文中的操作方法和opc项对应的表示是否允许操作的信息,判断出查找到的表示是否允许操作的信息为表 示允许操作的信息,将数据报文发送给opc服务器。
可选的,所述过滤模块还用于:
当判断出所述查找到的表示是否允许操作的信息为表示不允许操作的信息,或在所述允许执行的操作方法中查找不到所述数据报文中的操作方法,或判断出所述数据报文中的某一个opc项对应的数值或字符串长度不在查找到的该opc项对应的安全范围内,或判断出查找到的各表示是否允许通过的信息中的至少一个为不允许通过,或判断出所述数据报文不是opc协议报文时,丢弃所述数据报文。
可选的,所述接收模块还用于:
接收到来自所述opc终端的主连接请求报文;接收到来自所述opc服务器的主连接响应报文;
所述过滤模块还用于:
获取所述主连接请求报文中的动态端口获取方法名称,并将所述主连接请求报文发送给所述opc服务器;在预先设置的动态端口获取方法名称和表示执行结果的格式的信息之间的第三对应关系中,查找获得的动态端口获取方法名称对应的表示执行结果的格式的信息;根据查找到的表示执行结果的格式的信息获取所述主连接响应报文中的执行结果中的动态端口编号;将所述主连接响应报文发送给所述opc终端。
可选的,所述接收模块还用于:
接收到来自所述opc终端的主连接请求报文;接收到来自所述opc服务器的主连接响应报文;
所述过滤模块还用于:
在预先设置的参数和表示是否允许通过的信息之间的第三对应关系中,查找所述主连接请求报文/所述主连接响应报文中的各预设参数对应的表示是否允许通过的信息,判断出查找到的各表示是否允许通过的信息均为允许通过;和/或,判断出所述主连接请求报文/所述主连接响应报文为opc协议报文;
获取所述主连接请求报文中的动态端口获取方法名称,并将所述主连接请求报文发送给所述opc服务器;在预先设置的动态端口获取方法名称和表示执行结果的格式的信息之间的第三对应关系中,查找获得的动态端口获取方法名称对应的表示执行结果的格式的信息;根据查找到的表示执行结果的格式的信息获取所述主连接响应报文中的执行结果中的动态端口编号;将所述主连接响应报文发送给所述opc终端。
可选的,所述过滤模块还用于:
将所述第三对应关系中,所述获得的动态端口编号对应的表示是否允许通过的信息设置为允许通过。
与现有技术相比,本发明的技术方案包括:接收到来自opc终端的数据报文;在预先设置的操作方法、opc项和表示是否允许操作的信息之间的第一对应关系中,查找数据报文中的操作方法和opc项对应的表示是否允许操作的信息,判断出查找到的表示是否允许操作的信息为表示允许操作的信息,将数据报文发送给opc服务器。通过本发明的方案,对数据报文中的操作方法和opc项进行过滤,提高了数据报文的防护性能。
进一步地,当数据报文中的操作方法为修改时,在预先设置的允许执行的操作方法中查找到数据报文中的操作方法后,在将数据报文发送给opc服务器之前还包括:分别在预先设置的opc项和安全范围之间的第二对应关系中,查找数据报文中的各opc项对应的安全范围;分别判断出数据报文中的各opc项对应的数值或字符串长度在查找到的各opc项对应的安全范围内。进一步对数据报文的opc项对应的值进行过滤,进一步提高了数据报文的防护性能。
附图说明
下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
图1为本发明实现报文过滤的方法的流程图;
图2为本发明第一实施例建立主连接的方法的流程图;
图3为本发明第二实施例进行数据业务的方法的流程图;
图4为本发明实现报文过滤的装置的结构组成示意图。
具体实施方式
为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的各种方式可以相互组合。
参见图1,本发明提出了一种实现报文过滤的方法,包括:
步骤100、接收到来自opc终端的数据报文。
本步骤中,数据报文包括操作方法、opc项。
其中,数据报文还可以包括opc项对应的值。
其中,数据报文中可以包括一个或一个以上操作方法,每一个操作方法可以对应一个或一个以上opc项,每一个opc向对应一个opc项对应的值。
其中,操作方法可以是对opc组或opc项进行添加、或删除、或修改等。当操作方法为删除时,数据报文中可以不包含opc项对应的报文。
步骤101、在预先设置的操作方法、opc项和表示是否允许操作的信息之间的第一对应关系中,查找数据报文中的操作方法和opc项对应的表示是否允许操作的信息,判断出查找到的表示是否允许操作的信息为表示允许操作的信息,将数据报文发送给opc服务器。
本步骤中,当数据报文中的操作方法为修改时,判断出查找到的表示是否允许操作的信息为表示允许操作的信息后,将数据报文发送给opc服务器之前还包括:分别在预先设置的opc项和安全范围之间的第二对应关系中,查找数据报文中的各opc项对应的安全范围;分别判断出数据报文中的各opc项对应的数值或字符串长度在查找到的各opc项对应的安全范围内。
其中,当opc项对应的值为数据格式,则分别判断数据报文中的各opc项对应的数值是否在查找到的各opc项对应的安全范围内;当opc项对应 的值为字符串格式,则分别判断数据报文中的各opc项对应的字符串长度是否在查找到的各opc项对应的安全范围内。
通过本发明的方案,对数据报文中的操作方法和opc项进行过滤,提高了数据报文的防护性能。
进一步地,步骤100和步骤101之间还包括:在预先设置的允许执行的操作方法中查找到数据报文中的操作方法。
进一步地,步骤100和步骤101之间还包括:
在预先设置的参数和表示是否允许通过的信息之间的第三对应关系中,查找数据报文中的各预设参数对应的表示是否允许通过的信息,判断出查找到的各表示是否允许通过的信息均为允许通过;
和/或,
判断出数据报文为opc协议报文。
其中,具体如何判断数据报文是否为opc协议报文可以采用本领域技术人员的公知技术实现,并不用于限定本发明的保护范围,这里不再赘述。
其中,预设参数可以是源ip地址、或目的ip地址、或源端口、或目的端口等。
进一步地,当判断出查找到的表示是否允许操作的信息为表示不允许操作的信息,或在允许执行的操作方法中查找不到数据报文中的操作方法,或判断出数据报文中的某一个opc项对应的数值或字符串长度不在查找到的该opc项对应的安全范围内,或判断出查找到的各表示是否允许通过的信息中的至少一个为不允许通过,或判断出数据报文不是opc协议报文时,该方法还包括:
丢弃数据报文。
进一步地,该方法之前还包括:
接收到来自opc终端的主连接请求报文,获取主连接请求报文中的动态端口获取方法名称,并将主连接请求报文发送给opc服务器;接收到来自 opc服务器的主连接响应报文,在预先设置的动态端口获取方法名称和表示执行结果的格式的信息之间的第三对应关系中,查找获得的动态端口获取方法名称对应的表示执行结果的格式的信息;根据查找到的表示执行结果的格式的信息获取主连接响应报文中的执行结果中的动态端口编号;将主连接响应报文发送给opc终端。
其中,表示执行结果的格式的信息包括执行结果中各字段的名称和各字段的先后顺序。
根据各字段的名称和各字段的先后顺序在主连接响应报文中的执行结果中获取动态端口编号字段的数值即可得到动态端口编号。
可以按照执行结果中各字段的先后顺序来排列各字段的名称等。
进一步地,接收到来自opc终端/opc服务器的主连接请求报文后,在获取主连接请求报文中的动态端口获取方法名称之前还包括:
在预先设置的参数和表示是否允许通过的信息之间的第三对应关系中,查找主连接请求报文中的各预设参数对应的表示是否允许通过的信息,判断出查找到的各表示是否允许通过的信息均为允许通过;
和/或,
判断出主连接请求报文为opc协议报文。
其中,具体如何判断主连接请求报文/主连接响应报文是否为opc协议报文可以采用本领域技术人员的公知技术实现,并不用于限定本发明的保护范围,这里不再赘述。
进一步地,根据查找到的表示执行结果的格式的信息获取主连接响应报文中的执行结果中的动态端口编号后还包括:
将第三对应关系中,获得的动态端口编号对应的表示是否允许通过的信息设置为允许通过。
下面通过具体实施例详细说明本发明的方法。
本发明方法包括建立主连接、建立期望连接和进行数据业务三个方面。
第一实施例,参见图2,建立主连接的方法包括:
步骤200、接收到来自opc终端的主连接请求报文。
本步骤中,主连接请求报文的目的端口为135。
步骤201、在第二对应关系中查找主连接请求报文中各预设参数对应的表示是否允许通过的信息。
步骤202、判断查找到的各表示是否允许通过的信息是否均为允许通过,如果是,则执行步骤203;如果不是,则执行步骤206。
步骤203、判断主连接请求报文是否是opc协议报文,如果是,则执行步骤204;如果不是,则执行步骤206。
步骤204、获取主连接请求报文中的动态端口获取方法名称,并将主连接请求报文发送给opc服务器。
步骤205、接收到来自opc服务器的主连接响应报文,在第三对应关系中查找获得的动态端口获取方法名称对应的表示执行结果的格式的信息,根据查找到的表示执行结果的格式的信息获取主连接响应报文中的执行结果中的动态端口编号,将第二对应关系中获得的动态端口编号对应的表示是否允许通过的信息设置为允许通过,并将主连接响应报文发送给opc终端。
步骤206、丢弃主连接请求报文。
第二实施例,参见图3,进行数据业务的方法包括:
步骤300、接收到来自opc终端的数据报文。
本步骤中,数据报文的目的端口为步骤209中获得的动态端口编号。
步骤301、在第三对应关系中查找数据报文中各预设参数对应的表示是否允许通过的信息。
步骤302、判断查找到的各表示是否允许通过的信息是否均为允许通过,如果是,则执行步骤303;如果不是,则执行步骤308。
步骤303、判断数据报文是否是opc协议报文,如果是,则执行步骤304;如果不是,则执行步骤310。
步骤304、在预先设置的允许执行的操作方法中查找数据报文中的操作方法,如果能查找到,则执行步骤305,如果查找不到,则执行步骤310。
步骤305、在第一对应关系中查找数据报文中的操作方法和opc项对应的表示是否允许操作的信息。
步骤306、判断查找到的表示是否允许操作的信息是否是表示允许操作的信息,如果是且操作方法为修改,则执行步骤307,如果是且操作方法不是修改,则执行步骤309,如果不是,则执行步骤310。
步骤307、在第二对应关系中查找数据报文中的各opc项对应的安全范围。
步骤308、分别判断数据报文中的各opc项对应的数值或字符串长度是否在查找到的各opc项对应的安全范围内,如果均在,则执行步骤309,如果有一个opc向对应的数值或字符串长度不在查找到的opc对应的安全范围内,则执行步骤310。
步骤309、将数据报文发送给opc服务器。
步骤310、丢弃数据报文。
参见图4,本发明还提出了一种实现报文过滤的装置,至少包括:
接收模块,用于接收到来自用户过程控制的对象连接与嵌入opc终端的数据报文;
过滤模块,用于在预先设置的操作方法、opc项和表示是否允许操作的信息之间的第一对应关系中,查找数据报文中的操作方法和opc项对应的表示是否允许操作的信息,判断出查找到的表示是否允许操作的信息为表示允许操作的信息,将数据报文发送给opc服务器。
本发明的装置中,过滤模块具体用于:
在预先设置的允许执行的操作方法中查找到数据报文中的操作方法,在预先设置的操作方法、opc项和表示是否允许操作的信息之间的第一对应关系中,查找数据报文中的操作方法和opc项对应的表示是否允许操作的信息,判断出查找到的表示是否允许操作的信息为表示允许操作的信息,将数 据报文发送给opc服务器。
本发明的装置中,当所述数据报文中的操作方法为修改时,所述过滤模块具体用于:
在所述第一对应关系中查找所述数据报文中的操作方法和opc项对应的表示是否允许操作的信息,判断出查找到的表示是否允许操作的信息为表示允许操作的信息,分别在预先设置的opc项和安全范围之间的第二对应关系中,查找数据报文中的各opc项对应的安全范围;分别判断出数据报文中的各opc项对应的数值或字符串长度在查找到的各opc项对应的安全范围内,将数据报文发送给opc服务器。
本发明的装置中,过滤模块具体用于:
在预先设置的参数和表示是否允许通过的信息之间的第三对应关系中,查找数据报文中的各预设参数对应的表示是否允许通过的信息,判断出查找到的各表示是否允许通过的信息均为允许通过;其中,预设参数为源互联网协议ip地址、或目的ip地址、或源端口、或目的端口;和/或,判断出数据报文为opc协议报文;
在所述第一对应关系中,查找所述数据报文中的操作方法和opc项对应的表示是否允许操作的信息,判断出查找到的表示是否允许操作的信息为表示允许操作的信息,将数据报文发送给opc服务器。。
本发明的装置中,过滤模块还用于:
当判断出所述查找到的表示是否允许操作的信息为表示不允许操作的信息,或在允许执行的操作方法中查找不到数据报文中的操作方法,或判断出数据报文中的某一个opc项对应的数值或字符串长度不在查找到的该opc项对应的安全范围内,或判断出查找到的各表示是否允许通过的信息中的至少一个为不允许通过,或判断出数据报文不是opc协议报文时,丢弃数据报文。
本发明的装置中,接收模块还用于:
接收到来自opc终端的主连接请求报文;接收到来自opc服务器的主 连接响应报文;
过滤模块还用于:
获取主连接请求报文中的动态端口获取方法名称,并将主连接请求报文发送给opc服务器;在预先设置的动态端口获取方法名称和表示执行结果的格式的信息之间的第三对应关系中,查找获得的动态端口获取方法名称对应的表示执行结果的格式的信息;根据查找到的表示执行结果的格式的信息获取主连接响应报文中的执行结果中的动态端口编号;将主连接响应报文发送给opc终端。
本发明的装置中,接收模块还用于:
接收到来自opc终端的主连接请求报文;接收到来自opc服务器的主连接响应报文;
过滤模块还用于:
在预先设置的参数和表示是否允许通过的信息之间的第三对应关系中,查找主连接请求报文/主连接响应报文中的各预设参数对应的表示是否允许通过的信息,判断出查找到的各表示是否允许通过的信息均为允许通过;和/或,判断出主连接请求报文/主连接响应报文为opc协议报文;
获取主连接请求报文中的动态端口获取方法名称,并将主连接请求报文发送给opc服务器;在预先设置的动态端口获取方法名称和表示执行结果的格式的信息之间的第三对应关系中,查找获得的动态端口获取方法名称对应的表示执行结果的格式的信息;根据查找到的表示执行结果的格式的信息获取主连接响应报文中的执行结果中的动态端口编号;将主连接响应报文发送给opc终端。
本发明的装置中,过滤模块还用于:
将第三对应关系中,获得的动态端口编号对应的表示是否允许通过的信息设置为允许通过。
需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提 下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。