一种用于Modbus网络的安全防护系统以及方法

文档序号:10492186阅读:614来源:国知局
一种用于Modbus网络的安全防护系统以及方法
【专利摘要】本申请提供一种用于Modbus网络的安全防护方法,包括S1.接收外部请求端口传输的基于Modbus协议的字节流,按Modbus协议类型的帧结构对所述字节流进行组包以形成相应的完整的Modbus帧结构,根据组包结果进行相应处理。另外,本申请还提供了一种用于Modbus网络的安全防护系统。本申请提供的用于Modbus网络的安全防护方法和系统通过组包引入Modbus帧的完整性检验,可以有效地抵御针对采用Modbus协议的工控设备或系统的攻击,确保采用Modbus协议的工控设备和系统的保密性、完整性和可用性。
【专利说明】
-种用于Mo化US网络的安全防护系统从及方法
技术领域
[0001] 本发明设及网络安全防护领域,尤其设及用于Mcxlbus网络的安全防护系统W及方 法。
【背景技术】
[0002] Mo化US协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之 间、控制器经由网络(例如W太网)和其它设备之间可W通信,不同厂商生产的控制设备可 W连成工业网络,进行集中监控。
[0003] Mo化US协议具有标准性、开放性、帖格式简单、紧凑等优点,因此在工业控制系统、 远程监控系统(SCADA系统)W及离散控制系统化CS系统)中广泛使用,不但用于本地智能设 备与控制器(PLC)间的通讯、智能设备与人机界面化MI)的通讯,而且在某些场景还应用于 工业设备远程集中监控系统的远程通讯中。
[0004] 但是,由于Mo化US帖结构缺乏基本的加密手段,因此存在明显的安全漏桐,主要体 现在:
[0005] 1.数据保密性差。由于没有机制区分不同主机(客户端)访问的数据范围,因此网 络中的主机(客户端)可W访问从机(服务端)提供的任何数据。
[0006] 2.数据完整性容易破坏。由于没有机制限制主机(客户端)可执行的命令及其参数 的范围,网络中的任意主机(客户端)可W通过发送从机(服务端)支持的功能码,修改从机 (服务端)的数据。
[0007] 3.可用性很难保证。除了面临常规的TCP/IP层网络攻击之外,在Modbus应用层,攻 击者很容易通过发送不完整的Mcxlbus帖,使从机(服务器)进行大量的无效处理,导致其性 能下降。此外,还有很多智能设备其配置协议与数据通讯协议均采用Mcxlbus协议,但缺乏保 护配置数据的机制,很容易被攻击者利用,修改智能设备配置参数,甚至删除智能设备的关 键内容,例如固件程序,从而导致严重的后果。

【发明内容】

[000引鉴于现有技术中存在的问题,1、一种用于Mcxlbus网络的安全防护方法,包括:S1. 接收外部请求端口传输的基于Mo化US协议的字节流,按Mo化US协议类型的帖结构对所述字 节流进行组包W形成相应的完整的Mo化US帖结构,根据组包结果进行相应处理。
[0009] 在本发明的一些实施方式中,所述步骤Sl包括:对于接收到的Mo化US ASCII协议 类型字节流,根据所述包是否具有起始符和结束符W及是否能够通过CRC校验,来判定所述 包是否具有完整的Mcxlbus帖结构;或对于接收到的Mcxlbus RTU协议类型的字节流:a.对预 定长度的字节流进行CRC校验,和b.判断通过CRC校验的所述字节流中的功能码是否为 Modbus RTU帖结构所允许的功能码,如不是允许的功能码,则改变所述字节流长度后返回 步骤a进行CRC校验。
[0010] 在本发明的一些实施方式中,所述步骤a进一步包括:对于Mo化US RTU协议类型的 字节流,从字节流最小长度开始进行所述CRC校验,如校验不通过,则将所述字节流长度增 加预定字节后再进行CRC校验,如果直到当前字节流长度达到最大长度仍未通过CRC校验, 则移除所述字节流。
[0011] 在本发明的一些实施方式中,所述步骤Sl还包括:C .按照所述功能码对应的数据 结构,检验所述当前字节流中的数据结构是否与所述功能码匹配;若不匹配,则将所述字节 流长度增加预定字节,返回步骤a。
[0012] 在本发明的一些实施方式中,所述步骤Sl还可包括:当所述Mo化US帖结构的首、尾 部分包含有除完整的Mcxlbus帖结构之外的非法字节流,则去除所述非法字节流,保留完整 的Modbus帖结构。
[0013] 在本发明的一些实施方式中,所述的用于Mo化US网络的安全防护方法,还可包括: 52. 检验所述完整的Mo化US帖中包含从机地址是否为允许访问的从机地址,检验所述完整 的Mo化US帖中包含功能码是否在预设的功能码白名单内。
[0014] 本发明的一种实施方式中,其通过设置能够访问的从机地址范围W及判断完整的 Mo化US帖结构中的功能码是否为有效的功能码,对经过组包的完整的Mo化US帖进行进一步 过滤,即若Mo化US帖包含不在允许访问范围内的从机地址和不属于Mo化US协议的非法功能 码,则将其丢弃。运种方式可W有效的避免针对设备或系统的攻击,同时减少设备或系统的 工作量,提高运行效率。
[0015] 在本发明的一些实施方式中,所述的用于Mo化US网络的安全防护方法还可包括: 53. 对于读取数据功能码,检验所述完整的Mcxlbus帖中包含的寄存器范围是否在允许范围 内;S4.对于写数据功能码,检验所述完整的Mcxlbus帖中包含的寄存器范围是否在允许范围 内,提取所述完整的Mcxlbus帖中包含的工艺参数,根据所述工艺参数和所述寄存器范围内 的寄存器的对应关系W及编码类型,生成相应的控制值,并且判断所述控制值是否为允许 值。
[0016] 由于功能码的类型不同,其生成的操作指令也不同,因此本发明的实施方式中,通 过判断功能码的类型,将完整的Mo化US帖分为写命令和读命令。针对读命令而言,可W限制 从机能够访问的寄存器范围,进而控制其能够由寄存器中读取到的数据,可W有效的保护 存储于寄存器中的工艺参数,避免工艺参数和工艺流程被非法获取。针对写命令而言,通过 寄存器与工艺参数相关联,采用组态(用户自定义)的方法,建立了寄存器与工艺参数的映 射关系,可W有效地保证工艺过程的正确性。另外,对工艺参数生成的控制值进行过滤,可 W有效地防止工控装置或系统被写命令非法更改装置的地址、非法上传配置文件等。
[0017] 在本发明的一些实施方式中,所述步骤S4可包括:提取所述完整Mo化US帖中包含 的多个工艺参数,根据所述多个工艺参数和所述寄存器范围内的每一个寄存器或者每一个 寄存器的Bit位的对应关系W及编码类型,生成相应的控制值,并且判断每个所述控制值是 否为允许值。
[001引本发明还提供一种用于Mcxlbus网络的安全防护系统,包括:完整性检验模块,接收 外部请求端口传输的基于Mo化US协议的字节流,按Mo化US协议类型的帖结构对所述字节流 进行组包W形成相应的完整的Mo化US帖结构,根据组包结果进行相应处理;
[0019]含读/写数据的功能码的Mo化US帖检验模块,对于读数据的功能码,检验所述完整 的Mo化US帖中包含的寄存器范围是否在允许范围内;对于写数据的功能码,检验所述完整 的Mcxlbus帖中包含的寄存器范围是否在允许范围内,提取所述完整的Mcxlbus帖中包含的工 艺参数,根据所述工艺参数和所述寄存器范围内的寄存器的对应关系W及编码类型,生成 相应的控制值,并且判断所述控制值是否为允许值。
[0020] 在本发明的一些实施方式中,所述的用于Mo化US网络的安全防护系统还可包括: 从机地址检验模块,用于检验所述完整的Mo化US帖中包含从机地址是否为允许访问的从机 地址;功能码合法性检验模块,用于检验所述完整的Mo化US帖中包含功能码是否在预设的 功能码白名单内
[0021] 本发明提供了用于Mo化US网络的安全防护方法和系统通过组包方式进行Mo化US 帖的完整性检验,可W有效地避免采用非Mo化US协议持续向工控设备或系统装置发起数据 请求(字节流)W导致工控设备和系统性能下降。
[0022] 根据上述用于Mo化US网络的安全防护方法和系统可W有效地抵御针对采用 Mo化US协议的工控设备或系统的攻击,确保采用Mo化US协议的工控设备和系统的保密性、 完整性和可用性。
【附图说明】
[0023] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面简要说明实施例 或现有技术描述中使用的附图。
[0024] 图Ia示意性地显示了常规的Mo化US ASCII/RTU帖结构;
[00巧]图化示意性地显示了常规的Mcxlbus TCP帖结构;
[00%]图2a为带独立数据块的Mo化US数据模型;
[0027]图化为仅一个数据块的Mo化US数据模型;
[00巧]图3a示意性地显示了Mo化US RTU单播模式;
[00巧]图3b示意性地显示了Mo化US RTU多播模式;
[0030] 图4示意性地显示了Mo化US TCP的典型应用场景;
[0031] 图5示意性地显示了本发明一实施方式的安全防护方法;
[0032] 图6a示意性地显示了自定义模拟型工艺控制参数与Mcxlbus寄存器模型的映射关 系;
[0033] 图6b示意性地显示了自定义布尔型工艺控制参数与Mcxlbus寄存器模型的映射关 系;
[0034] 图7示意性地显示了本发明一实施方式的用于Mcxlbus网络的安全防护系统。
【具体实施方式】
[0035] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。在此说明,显然,附图所示 仅是本发明的一些实施例,目的是使本领域技术人员能够理解本发明的实质特征。本领域 普通技术人员可W根据所公开的附图及其说明,做出修改或其他等同的变型或替代方案。 因此,本发明的范围并不受运些附图和说明的限制。
[0036] 在对本发明的实施例做详细说明之前,首先说明本发明中所设及的一些相关概 念。
[0037] Mo化US协议主要包含了两种模式,分别适合于串行链路和TCP/IP链路。其中, Mo化US串行模式有两种编码格式,分别为ASCII(美国标准信息交换代码)和RTU(远程终端 设备),前一种在应用中简称Mo化US ASCII,后一种在应用中简称Mo化US RTU。基于TCP/IP 协议的Mo化US采用RTU的二进制编码格式,在应用中简称Mo化US TCP。
[0038] Mo化US协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线 或网络上的Mcxlbus协议映射能够在应用数据单元(ADU)上引入一些附加域。如图1(a)所示 为Modbus ASCII/RTU的帖结构,图1(b)所示为Modbus TCP的帖结构。
[0039] Mo化US协议采用四种类型的数据定义数据模型:
[0040]
[(
[0042] 图2(a)和图2(b)分别显示了带独立数据块的Mcxlbus数据模型和仅一个数据块的 Mo化US数据模型。
[0043] Mo 化 US 网络:
[0044] Mo化US RTU运行在串行链路上,支持一个主机(客户端)多个从机(服务端)结构 (1-N结构),参见图3(a)和图3(b),其通讯模式支持单播和多播两种模式。
[0045] 单播模式:主机(客户端)W指定地址的方式发送请求,相应地址的从机(服务端) 根据请求向主机(客户端)返回数据。在运种情况下,Modbus通讯事务只包含2个报文(客户 端请求报文和服务端应答报文)。服务端在单播模式中的地址必须在网络上是唯一的(1~ 247) O
[0046] 多播模式:主机(客户端)对所有从机(服务端)发送请求,从机(服务端)沉默,仅仅 根据主机(客户端)发送的请求完成相应的自身功能。在运种情况下,Mcxlbus通讯事务只包 含1个报文(客户端请求报文)。从机(服务端)在多播模式下的地址可W不用考虑,但是其必 须能够响应地址0的请求。0在协议中定义为多播地址。
[0047] Mo化US TCP运行在TCP/IP协议找上,采用多点对多点连接TCP通讯,支持多个主机 (客户端)多个从机(服务端)结构(N-N结构),典型应用场景如图4所示。在图4中,存在一类 称为Mo化US TCP/IP网关的设备,其负责将Mo化US RTU协议转换为Mo化US TCP协议,对 Mo化US PDU解包和组包。因此,Mo化US雌?八?网关是协议转换设备。
[004引参照图5,本发明一实施方式提供了一种用于Mcxlbus网络的安全防护方法,包括: [0049] Sl .Mo化US帖结构完整性检验步骤:
[00加]Mo化US协议类型包括Mo化US ASCII、Mo化US RTUW及Mo化US TCP。
[0化1] 其中,Mo化US ASCII和Mo化US RTU协议的帖结构如图1(a)所示,由地址域、功能 码、数据W及差错校验组成。在一个例子中,地址域的大小为8bits,功能码的大小为8bits, 数据的大小为N X 8b i ts,CRC差错校验的大小为16b i ts。
[0052] Mcxlbus TCP协议的帖结构如图1(b)所示,由MBAP报文头、功能码和数据组成。
[0053] 如表1所示为常见的功能码、名称及作用:
[0化4] 表1
[0化7]
[005引具体而言,Mo化US帖结构的完整性检验可包括如下步骤:
[0059] Sl 1.接收外部请求端口(串口或TCP端口或UDP端口)传输的字节流;
[0060] S12.尝试按Mo化US协议类型(ASCII/RTU/TCP)的帖结构对上述字节流进行组包;
[0061 ] S13.判断是否能够组成与Mcxlbus协议类型相应的完整的Mcxlbus帖结构。
[0062] 如果不能组成完整的Mo化US帖结构,即组包失败时,则表明该字节流为非法的 Mo化US请求帖,产生日志记录及告警输出,丢弃该包。
[0063] W下为导致组包失败的几种情形:
[0064] (1)对于Mo化US ASCII协议的帖结构,找不到起始符和结束符,或者找到起始符和 结束符,但无法通过CRC校验;
[0065] (2)对于Mo化US RTU协议的帖结构,按其最小帖长度进行CRC计算,到达最大帖长 度仍然不能通过CRC校验,或者通过CRC校验但不符合对应功能码的帖结构。
[0066] 由于Mo化US RTU协议的帖结构没有起始符和结束符,且帖长度可变,因此,对于 Mcxlbus RTU帖的完整性检查,可W采用如下CRC校验和帖结构检查相结合的方法:
[0067] a.将接收的字节流保存到缓冲区;
[006引b.针对缓冲区中的字节流,从最小Mo化US RTU帖长度(例如3字节)开始进行CRC校 验。如果CRC校验不通过,则检验当前字节流长度,如果当前字节流长度未达到最大Mo化US RTU帖长度(如255字节),则将当前字节流长度加1字节,继续进行CRC校验;如果当前字节流 长度达到最大Mo化US RTU帖长度,则从缓冲区中移除该段字节流;C.针对通过CRC校验的字 节流,提取出该字节流中的功能码字节,判断所述功能码是否为Mcxlbus RTU帖结构所允许 的功能码,如表1中所列的功能码,如果不是所允许的功能码,则将当前处理的字节流长度 加预定长度(例如1字节),返回步骤b;
[0069] d.针对通过功能码校验的字节流,按照该功能码对应的数据结构,检查当前字节 流中的数据结构是否与该功能码匹配。如果通过检查,则说明为当前处理的字节流具有合 法的帖结构;否则,将当前处理的字节流长度增加预定长度(例如1字节),返回步骤b。
[0070] (3)对于Mo化US TCP协议的帖结构,对每一个接收到的TCP应用帖,按Mo化US TCP 帖结构进行逐个组包,Mcxlbus TCP帖中的规约参数(功能码)和数据长度相对应,因此含有 特定规约参数的帖应当具有一定的帖长度。当Modbus TCP帖中的规约参数与帖长度不匹 配,即不能通过校验,则组包失败。
[0071] S2.如果能够组成完整的Mo化US帖结构,即组包成功,则进行从机地址检验W及功 能码检验步骤,包括:
[0072] S21.提取Mo化US帖的从机地址W及Mo化US帖的功能码。
[0073] S22.检验该从机地址是否为允许访问的从机地址。如果是不允许访问的从机地 址,则产生日志记录及告警输出,丢弃该包。
[0074] S23.如果是允许访问的从机地址,则按照预设的功能码白名单对提取出的功能码 进行过滤,如果所提取的功能码不在白名单中,则产生日志记录及告警输出,丢弃该包。
[0075] 当不想使得网络中的任意主机(客户端)通过发送从机(服务端)支持的功能码,修 改从机(服务端)的数据,那么可W在白名单中排除一些具有"写"功能的功能码。例如,白名 单中不包括05、06、15、16。
[0076] 类似的,还可W通过设置白名单的方式控制用户自定义的其他类型的功能码,例 如可W使功能码22~64包含在白名单之中,使功能码65~72不包含在白名单之中。采用运 种设置方法,可W控制主机(客户端)向从机(服务端)发送何种类型的功能码。
[0077] 举例说明,当提取的Mcxlbus帖的功能码的为22时,则产生日志记录及告警输出,丢 弃该包。当提取的Mo化US帖的功能码为65时,继续执行步骤S3。
[0078] S3. Mcxlbus帖类型检验步骤:
[0079] 检验Mcxlbus帖的功能码类型,如果为读取数据功能码(即该命令为读取命令),执 行步骤S4;如果为写数据功能码(即该命令为写命令),执行步骤S5。
[0080] S4.当完整的Mo化US帖中包含的功能码为读取数据功能码时,检验Mo化US帖中包 含的寄存器范围是否在允许范围内:
[0081 ] S41.提取Mo化US帖中包含的寄存器范围;
[0082] S42.判断所提取的寄存器范围是否在允许读取的寄存器范围之内(寄存器范围白 名单内)。
[0083] 按照预先定义的允许的寄存器范围对Mo化U S帖进行过滤,如果该Mo化U S帖的寄存 器范围不在允许读取的寄存器范围内,则产生日志记录及告警输出,丢弃该包;反之,将链 路层和传输层信息与Mo化US帖一起转发到内部通讯端口(串口或TCP端口或UDP端口)。
[0084] S5.当完整的Mo化US帖中包含的功能码为写数据功能码时,检验Mcxlbus帖中包含 的寄存器范围是否在允许范围内和并生成相应的工艺参数控制值:
[00化]S51.提取Mcxlbus帖中包含的寄存器范围及工艺参数:
[0086] S52.判断寄存器范围是否在允许的寄存器范围之内(寄存器范围白名单内);
[0087] S53.按预先定义的工艺参数(如图6a和6b中的标签项)与寄存器范围内的寄存器 的对应关系及编码类型,生成与所述工艺参数匹配的控制值;
[0088] 工艺参数的编码类型可W是布尔型、有符号整型、无符号整型、浮点型或BCD型。
[0089] 对于工艺参数和寄存器对应关系W及编码类型作出如下示例说明:
[0090] 采用用户自定义(组态)的方法,在配置工具中自定义工艺参数与Mcxlbus寄存器模 型的映射关系:
[0091] 对于模拟型工艺控制参数(有符号整型、无符号整型、浮点型或BCD型等),映射关 系包括工艺控制参数对应的起始寄存器地址、在寄存器中的起始字节、数据的字节长度、编 码类型。图6(a)显示了一个自定义的模拟型工艺控制参数与Mcxlbus寄存器的映射关系的示 例。
[0092] 对于布尔型工艺控制参数,映射关系包括工艺参数对应的寄存器地址、在寄存器 中的Bit位偏移量、Bit位数。图6(b)显示了一个自定义的布尔型工艺参数与Mcxlbus寄存器 模型的映射关系的示例。
[0093] 其中,工艺参数和寄存器的对应关系可W是一个工艺参数对应一个或者多个寄存 器,也可W是一个工艺参数对应一个寄存器的一个或者几个Bit位,还可W是多个工艺参数 共享某个寄存器。
[0094] 工艺参数的长度可W是一个或多个字节,对于有符号整型、无符号整型、浮点型或 BCD型,其工艺参数长度最多可达到8个字节。对于浮点型,其工艺参数长度可W是4个字节 或8个字节。工艺参数的原始值和工程值之间可W定义转换关系,所述转换关系可W是比例 关系,也可W是用于自定义的技术系数关系。
[00巧]S54.判断工艺参数控制值是否为允许值:
[0096] 按照预先定义的允许的工艺参数控制值范围(工艺参数控制值范围白名单),对 Mo化US帖进行过滤,如果Mo化US帖包含的一个或者多个工艺参数控制值不在白名单内,贝U 产生日志记录及告警输出,丢弃该包;反之,将链路层和传输层信息与经过滤的Mcxlbus帖一 起转发到内部通讯端口(串口或TCP端口或UDP端口)。
[0097] 在本发明的另一个实施例中,当执行步骤S13后,如果接收的数据请求包成功地按 照相应的Mcxlbus协议类型的帖结构进行组包,但是该帖结构的首、尾还包含有非法的字节 流(完整的Mo化US帖结构之外的字节流),则去除非法字节流,保留合法的、完整的Mo化US 帖,并且执行S2~S5步骤对其进行分析。
[0098] 根据本发明的另一方面,一种用于Mcxlbus网络的安全防护系统1的实施例包括:
[0099] 完整性检验模块11,接收外部请求端口传输的基于Mo化US协议的字节流,按 Mo化US协议类型的帖结构对所述字节流进行组包W形成相应的完整的Mo化US帖结构,根据 组包结果进行相应处理;
[0100] 含读/写数据的功能码的Mo化US帖检验模块12,对于含有读取数据功能码,检验所 述完整的Mcxlbus帖中包含的寄存器范围是否在允许范围内;对于写数据功能码,检验所述 完整的Mcxlbus帖中包含的寄存器范围是否在允许范围内,提取所述完整的Mcxlbus帖中包含 的工艺参数,根据所述工艺参数和所述寄存器范围内的寄存器的对应关系W及编码类型, 生成相应的控制值,并且判断所述控制值是否为允许值。
[0101] 参照图7,在另外一个实施例中,Mo化US网络的安全防护系统1包括:
[0102] 完整性检验模块11,接收外部请求端口传输的基于Mo化US协议的字节流,按 Mo化US协议类型的帖结构对所述字节流进行组包W形成相应的完整的Mo化US帖结构,根据 组包结果进行相应处理;
[0103] 从机地址检验模块12,用于检验所述完整的Mo化US帖中包含从机地址是否为允许 访问的从机地址;
[0104] 功能码合法性检验模块13,用于检验所述完整的Mcxlbus帖中包含功能码是否在预 设的功能码白名单内;
[0105] 含读取数据功能码的Mcxlbus帖检验模块14,对于含有读取数据功能码,检验所述 完整的Mcxlbus帖中包含的寄存器范围是否在允许范围内;
[0106] 含写数据功能码的Mo化US帖检验模块15,对于写数据功能码,检验所述完整的 Mcxlbus帖中包含的寄存器范围是否在允许范围内,提取所述完整的Mcxlbus帖中包含的工艺 参数,根据所述工艺参数和所述寄存器范围内的寄存器的对应关系W及编码类型,生成相 应的控制值,并且判断所述控制值是否为允许值。
[0107] W上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可 W是或者也可W不是物理上分开的,作为单元显示的部件可W是或者也可W不是物理单 元,即可W位于一个地方,或者也可W分布到多个网络单元上。可W根据实际的需要选择其 中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性 的劳动的情况下,即可W理解并实施。
[0108] 通过W上的实施方式的描述,本领域的技术人员可W清楚地了解到各实施方式可 借助软件加必需的通用硬件平台的方式来实现,当然也可W通过硬件。基于运样的理解,上 述技术方案本质上或者说对现有技术做出贡献的部分可WW软件产品的形式体现出来,该 计算机软件产品可W存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指 令用W使得一台计算机设备(可W是个人计算机,服务器,或者网络设备等)执行各个实施 例或者实施例的某些部分所述的方法。
[0109] 最后应说明的是:W上实施例仅用W说明本发明的技术方案,而非对其限制;尽管 参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可 W对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换; 而运些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和 范围。
【主权项】
1. 一种用于Modbus网络的安全防护方法,包括:51. 接收外部请求端口传输的基于Modbus协议的字节流,按Modbus协议类型的帧结构 对所述字节流进行组包以形成相应的完整的Modbus帧结构,根据组包结果进行相应处理。2. 根据权利要求1所述的用于Modbus网络的安全防护方法,其中,所述步骤S1包括: 对于接收到的Modbus ASCII协议类型字节流,根据所述包是否具有起始符和结束符以 及是否能够通过CRC校验,来判定所述包是否具有完整的Modbus帧结构;或 对于接收到的Modbus RTU协议类型的字节流: a. 对预定长度的字节流进行CRC校验,和 b. 判断通过CRC校验的所述字节流中的功能码是否为Modbus RTU帧结构所允许的功能 码,如不是允许的功能码,则改变所述字节流长度后返回步骤a进行CRC校验。3. 根据权利要求1所述的用于Modbus网络的安全防护方法,其中,所述步骤a进一步包 括:对于Modbus RTU协议类型的字节流,从字节流最小长度开始进行所述CRC校验,如校验 不通过,则将所述字节流长度增加预定字节后再进行CRC校验,如果直到当前字节流长度达 到最大长度仍未通过CRC校验,则移除所述字节流。4. 根据权利要求3所述的用于Modbus网络的安全防护方法,其中,所述步骤S1还包括: c. 按照所述功能码对应的数据结构,检验所述当前字节流中的数据结构是否与所述功 能码匹配;若不匹配,则将所述字节流长度增加预定字节,返回步骤a。5. 根据权利要求1-4任一项所述的用于Modbus网络的安全防护方法,所述步骤S1还包 括: 当所述Modbus帧结构的首、尾部分包含有除完整的Modbus帧结构之外的非法字节流, 则去除所述非法字节流,保留完整的Modbus帧结构。6. 根据权利要求1-5任一项所述的用于Modbus网络的安全防护方法,还包括:52. 检验所述完整的Modbus帧中包含从机地址是否为允许访问的从机地址,检验所述 完整的Modbus帧中包含功能码是否在预设的功能码白名单内。7. 根据权利要求6所述的用于Modbus网络的安全防护方法,还包括:53. 对于读取数据功能码,检验所述完整的Modbus帧中包含的寄存器范围是否在允许 范围内;54. 对于写数据功能码,检验所述完整的Modbus帧中包含的寄存器范围是否在允许范 围内,提取所述完整的Modbus帧中包含的工艺参数,根据所述工艺参数和所述寄存器范围 内的寄存器的对应关系以及编码类型,生成相应的控制值,并且判断所述控制值是否为允 许值。8. 根据权利要求7所述的用于Modbus网络的安全防护方法,其中,所述步骤S4还包括: 提取所述完整Modbus帧中包含的多个工艺参数,根据所述多个工艺参数和所述寄存器 范围内的每一个寄存器或者每一个寄存器的Bit位的对应关系以及编码类型,生成相应的 控制值,并且判断每个所述控制值是否为允许值。9. 一种用于Modbus网络的安全防护系统,包括: 完整性检验模块,接收外部请求端口传输的基于Modbus协议的字节流,按Modbus协议 类型的帧结构对所述字节流进行组包以形成相应的完整的Modbus帧结构,根据组包结果进 行相应处理; 含读/写数据的功能码的Modbus帧检验模块,对于读数据的功能码,检验所述完整的 Modbus帧中包含的寄存器范围是否在允许范围内;对于写数据的功能码,检验所述完整的 Modbus帧中包含的寄存器范围是否在允许范围内,提取所述完整的Modbus帧中包含的工艺 参数,根据所述工艺参数和所述寄存器范围内的寄存器的对应关系以及编码类型,生成相 应的控制值,并且判断所述控制值是否为允许值。 1 〇.根据权利要求9所述的用于Modbus网络的安全防护系统,还包括: 从机地址检验模块,用于检验所述完整的Modbus帧中包含从机地址是否为允许访问的 从机地址; 功能码合法性检验模块,用于检验所述完整的Modbus帧中包含功能码是否在预设的功 能码白名单内。
【文档编号】H04L1/00GK105847249SQ201610164736
【公开日】2016年8月10日
【申请日】2016年3月22日
【发明人】陈惠欣
【申请人】英赛克科技(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1