一种基于Modbus/TCP深度解析的协议隔离方法

文档序号:10660850阅读:604来源:国知局
一种基于Modbus/TCP深度解析的协议隔离方法
【专利摘要】本发明涉及一种基于Modbus/TCP深度解析的协议隔离方法,本方法采用的技术方案主要基于虚拟化技术在高安全级别网络对外边界和内部不同安全级别网络边界部署安全策略。整体结构分为流量牵引、协议清洗和数据摆渡。流量牵引模块负责将物理数据包导入到指定的虚拟机中,协议清洗模块负责将导入的数据包进行协议识别、数据内容安全检测和私有协议封装与解析等工作,数据摆渡则是利用虚拟机共享内存对私有协议数据进行数据摆渡。针对不同的应用层协议进行正确且安全的流量过滤,本方案能够安全地摆渡协议数据,攻击者在正常状态下无法获取交互数据,本方案基于虚拟化技术的共享内存机制模拟物理网闸中的专用介质,进行数据摆渡提高处理性能,满足实时性需求。
【专利说明】
一种基于Modbus/TCP深度解析的协议隔离方法
技术领域
[0001] 本发明属于工业控制领域和信息技术领域,涉及一种工控系统中常用的通用协议 Modbus/TCP深度解析的协议隔离方法,尤其涉及一种基于Modbus/TCP深度解析的协议隔离 方法。
【背景技术】
[0002] 工业控制系统广泛应用于电力、化工、油气开采、交通运输等国家关键基础设施领 域,因而工业控制系统的安全关系到国家安全。近年来,随着工业以太网技术的快速发展, TCP/IP等互联网技术被引入到工业控制系统中。在将TCP/IP技术的安全威胁引入到工业控 制系统中的同时,亦破坏了工业控制系统的封闭性。将工业控制系统中广泛使用的私有协 议的设计和实现中的漏洞暴露给攻击者,给工业控制系统带来了巨大的威胁。
[0003] 工业控制网络与传统IT网络存在着巨大差异。工业控制系统一般情况下拥有固定 数量的设备,可预测的通信流及私有通信协议,最重要的是高可用性需求。由于工业控制系 统网络的特殊性,传统的IT安全保护机制是无效的。广泛部署的工业控制系统私有协议如: DNP3、Modbus、Modbus/TCP中没有提供安全控制,给攻击者提供了较多可以利用的漏洞。工 控网络对于安全性的要求越来越高,不论是传统网闸类产品还是入侵检测类产品都有各自 明显的缺陷,而工控环境对于这些缺陷更加敏感,因而单纯地依靠某种产品是不可行的。网 闸类安全产品运用应用协议剥离和转换的方法实现了两侧的通信协议阻断,有效降低了网 络协议带来的安全攻击概率,通过对剥离数据的安全审查和控制更是大大提高了网络安全 性。但网闸类产品适用范围较窄,需要开发相应的交换模块,而且物理网闸的交换速度已经 接近该技术的理论极限,可以预见物理网闸会成为瓶颈。工控系统的安全威胁集中于工控 协议,而现有的解决方案是在传统安全产品基础上针对工控环境单一地增加安全功能,缺 乏通用性和可扩展性。与传统的工控安全方案相比,本方法融合了物理网闸和防火墙各自 的优点,企业可以根据不同的网络环境定制虚拟机模板,能够部署到工控网络边界上,有针 对性地对数据流量进行安全过滤与隔离,利用Xen虚拟技术提升隔离性能和可扩展性,满足 企业的安全需求。

【发明内容】

[0004] 为了解决上述问题,本方法采用的技术方案主要基于虚拟化技术在高安全级别网 络对外边界和内部不同安全级别网络边界部署安全策略。整体结构分为流量牵引、协议清 洗和数据摆渡。流量牵引模块负责将物理数据包导入到指定的虚拟机中,协议清洗模块负 责将导入的数据包进行协议识别、数据内容安全检测和私有协议封装与解析等工作,数据 摆渡则是利用虚拟机共享内存对私有协议数据进行数据摆渡。
[0005] 为实现上述目的,本发明采用的技术方案为一种基于Modbus/TCP深度解析的协议 隔离方法,
[0006] 在Xen虚拟环境下的协议隔离,用两台Guest 0S分别模拟协议隔离的内、外网处理 单元。Guest OS上部署协议清洗模块,在协议清洗模块首先对IP数据流量解析,剥离掉TCP/ IP的协议特征,阻断基于TCP/IP协议特征的攻击,得到应用层协议数据,然后按照私有协议 定义的属性和规则,将该数据包构造成私有协议数据包并用深度检测方法进行安全检测, 保证Modbus/TCP数据内容的合法性。
[0007] 1)协议隔离思想
[0008] Modbus/TCP的通信解释如下。
[0009] (1)在Xen环境下,搭建两台VM分别模拟协议隔离的内网处理单元即VM1和外网处 理单元即VM2。
[0010] (2)客户机发起的Modbus/TCP请求,首先发给VMUVM1对收到的Modbus/TCP请求进 行协议解析,剥离出头部信息和原始数据。之后VM1将剥离出来的数据经过协议清洗模块的 安全检测后,以共享内存的方式摆渡给VM2JM2收到剥离出的数据后,根据数据中的头部信 息,得到真正的服务器地址,同时将数据重新封装为Modbus/TCP协议,发送给Modbus/TCP服 务器。
[0011] (3 )Modbus/TCP服务器收到Modbus/TCP客户机请求后,做出响应,将响应报文发给 VM2JM2对收到的响应报文进行协议解析,剥离出头部信息和原始数据。VM2将剥离出的数 据经过协议清洗模块的安全检测之后,以共享内存的方式摆渡给VMUVM1收到剥离出的数 据和头部信息后,重新封装成Modbus/TCP协议发送给客户机。
[0012] (4)至此,完成一次Modbus/TCP客户机和Modbus/TCP服务器之间的通信。
[0013] 2)协议隔离的整体架构
[0014] 图1表示Xen虚拟化平台的协议隔离架构,包括VMM上的流量牵引模块、数据摆渡模 块以及两台虚拟机,其中两台虚拟机上均部署有协议清洗模块。两台虚拟机通过数据摆渡 的方式交换数据,在数据摆渡的时候需要用到同步机制,数据摆渡功能封装在数据摆渡模 块。
[0015] 3)协议隔离的处理流程
[0016] 协议隔离处理流程如图2所示,主要工作包括:
[0017] (1)虚拟化平台收到来自设备A的连接请求后,交给流量牵引模块处理。
[0018] (2)流量牵引模块根据制定的流表将流量牵引至VM1进行处理。VM1收到数据包后, 交由协议清洗模块进行解析和安全检测,若检测不通过,则丢弃数据包;若检测通过,则将 数据包的应用层原始数据进行私有协议封装,发送到数据摆渡模块。
[0019] (3)数据摆渡模块利用共享内存将私有协议数据包摆渡至VM2。VM2收到VM1"摆渡" 过来的私有协议数据包后,VM2协议清洗模块进行解析,按照相应的TCP/IP协议格式将数据 重新封装为标准的TCP/IP协议数据包,之后转发给流量牵引模块。
[0020] (4)流量牵引模块根据相应的流表规则将数据包发送给设备B。
[0021] 流量牵引模块负责将数据流量导入指定的虚拟机中,是实现安全功能的基础和前 提。流量牵引模块是由OpenFlow和OpenvSwitch(OVS)组建而成,其功能是将指定网口的数 据包导入指定虚拟机中,并将指定虚拟机的数据包导出到指定物理网口。流量牵引模块由 OpenFlow协议作为控制协议,OpenvSwitch作为虚拟交换机,向上由管理员通过OpenFlow协 议控制,其中的流表管理就是协议下发实现。流量牵引模块的核心是流表,它是整个模型中 的流量开关,直接决定网络的通断和数据的流向。
[0022] 协议清洗模块将牵引模块牵引过来的IP数据流量解析,剥离出应用层协议数据, 然后按照私有协议定义的属性和规则,将该数据包构造成私有协议数据包并进行安全检 测 。
[0023] 协议清洗模块的主要工作包括如下:
[0024] (1 )VM1收到流量牵引模块牵引过来的数据包后,首先对数据包进行剥离,得到应 用层数据,依据规则构建私有协议数据,同时对应用层数据进行安全性检测。检测不通过, 直接丢弃该数据包,中断通信连接。检测通过,则通过数据摆渡模块将私有协议数据包摆渡 到 VM2。
[0025] (2)VM2收到数据摆渡模块摆渡过来的私有协议数据包后,首先对私有协议数据包 进行完整性校验,同时解析私有协议数据包得到原始的应用层数据,按照标准的TCP/IP协 议将协议数据重新封装成标准的TCP/IP协议数据包。最后VM2将重新封装好的标准TCP/IP 协议数据包通过流量牵引模块发到网络。协议清洗模块流程图如图5。
[0026]共享内存的方式能够加快数据交换,因而在数据摆渡模块利用Xen的共享内存方 式,完成数据交换。数据交换的过程中用Grant Table机制创建共享内存,通过生产者/消费 者及XenStore机制进行数据同步。在数据摆渡的过程中传输的是私有协议数据,私有协议 数据剥离了 TCP/IP协议特征,能够阻断基于TCP/IP协议的攻击行为,从而保证摆渡过程中 数据的安全性。
[0027] VM1和VM2之间的通信通过数据摆渡的方式实现,VM1的协议清洗模块完成私有协 议的构建后,VM1和VM2建立起两个虚拟的内存环形队列,分别用于数据发送和数据接收。 [0028] (1 )VM1根据在特权虚拟机下维护的事件通道表,查询VM2相关的地址信息。若匹配 到相应的VM2地址和端口的信息,则说明能够建立通信连接,准备进行下一步操作。若匹配 不到,则终止本次通信。
[0029] (2)Xen利用Grant Table机制建立共享内存即两个实际内存环形队列,准备接收 和发送数据,与此同时Xenstore同步更新虚拟机的状态。XenStore是Xen下的不同虚拟机间 的共享存储区,以键/值的形式存储VM相关的配置和状态信息。在共享内存建立之前,通过 XenStore传递同步控制信息,确保VM1和VM2对共享内存读写的正确性。
[0030] (3)VM1将建好的共享内存信息,通过事件通道机制通知VM2,VM1和VM2准备通过共 享内存进行数据通信。
[0031] (4)VM1将协议清洗模块构建好的私有协议数据写入共享内存,此时在同步互斥机 制的控制下,VM2不可以从该共享内存读取数据。
[0032] (5)VM1向共享内存写入数据后,通过事件通道通知VM2。随后VM2从共享内存读取 数据,读取完毕后通知VM1,同时将数据交VM2的协议清洗模块处理。VM1接收到VM1发送的读 取完毕事件通知消息后,根据实际情况接着写或者是直接退出。
[0033] 本发明与现有技术相比,有以下优势:
[0034] 针对不同的应用层协议进行正确且安全的流量过滤,本方案中基于虚拟化的数据 摆渡方法能够安全地摆渡协议数据,攻击者在正常状态下无法获取交互数据,本方案基于 虚拟化技术的共享内存机制模拟物理网闸中的专用介质,进行数据摆渡,提高处理性能,满 足实时性需求。
【附图说明】
[0035]图1:协议隔离架构图。
[0036] 图2:协议隔离处理流程。
[0037]图3 :Proto_Handle 结构体。
[0038]图4:流量牵引模块架构图。
[0039]图5:协议清洗模块流程。
[0040]图6:数据摆渡模块流程。
[0041]图7:协议检测流程。
【具体实施方式】
[0042] 首先对该部分几个名词进行解释:
[0043] 可信功能码包括组态软件实现的少数功能码以及用户确认的自定义的功能码;因 每个功能码可定义多个子功能码或无子功能码;每个可信功能码对应一个可信功能码列 表、一个敏感子功能码列表以及不可用的子功能码。
[0044]可信功能码列表仅包含可信功能码。
[0045] 敏感子功能码从属于一个可信功能码;指系统需要,但被非法利用将引起系统故 障的子功能码。如功能码08的子功能码01。
[0046] 敏感子功能码列表由敏感子功能码组成的列表;其中每个敏感子功能码与IP地址 对(源IP地址和目的IP地址)白名单关联;每个敏感子功能码列表从属于一个可信功能码。
[0047] 可信子功能码从属于一个可信功能码;指无威胁特征的子功能码,系统中所有设 备均可执行该子功能码。
[0048] 可信子功能码列表由可信子功能码组成的列表,每个可信子功能码列表从属于一 个可信功能码。
[0049] 读写功能码列表是定义的8种常见读写功能码的列表,是表1列出的功能码。
[0050] 表1读写功能码与数据域关系列表
[0051]
[0052] 备注:写多个线圈中,N =输出数量/8,若余数不为0,N = N+1,写多个寄存器中N为 寄存器数量。
[0053] Modbus/TCP协议检测算法如图6所示:
[0054] 步骤l:M〇dbus/TCP应用报文在发送前,需建立相应的socket,本检测方法读取和 存储源IP地址、目的IP地址和目的端口号。
[0055] 步骤2:本检测方法对源IP地址和目的IP地址进行检验,判断IP地址是否在可信任 的地址列表中。若源IP地址和目的IP地址均在可信任的地址列表中,则检测通过;否则拒绝 该socket的连接请求。
[0056]步骤3:本检测方法判断目的端口号是否为502。检测通过,执行步骤4;否则拒绝该 报文。
[0057]步骤4:本检测方法读取事务标识符,检测事务处理标识符是否合标准,如是否为2 个字节。检测通过执行步骤5,否则拒绝该报文。
[0058]步骤5:检测方法校验MBAP中的协议标识符字段是否为0。协议标识符字段是0,执 行步骤6;否则拒绝该报文。
[0059]步骤6:检测方法将长度字段的值与单元标识符和Modbus数据字段的总长度进行 比较。值相等,执行步骤7;否则拒绝该报文。
[0060] 步骤7:检测方法判断单元标识符。若远程设备直接连接在TCP/IP网络中,则单元 标识符应为Oxff;若连接在串行链路网关上,则一个IP地址对应多个终端设备,依据单元标 识符来识别不同的终端设备,此时有效范围为0-255。若单元标识符字段合法,则执行步骤 8,否则拒绝该报文。
[0061] 步骤8:检测方法判断功能码是否为定义的读写操作功能码。若是定义的读写操作 功能码,则执行步骤9;否则执行步骤10。
[0062] 步骤9:检测方法读取数据对象起始地址字段,判断起始地址是否合法。若起始地 址合法,检测方法进一步判断该功能码是读操作还是写操作。若该功能码是读操作,检测方 法校验数据字节数是否合法,若字节数合法,该报文通过检测;若字节数不合法,拒绝该报 文。若是写操作,检测方法判断写入的字节个数和写入数据是否合法,合法则该报文通过检 测;不合法则拒绝该报文。若起始地址不合法,拒绝该报文。
[0063] 步骤10:检测算法判断功能码是否在可信任列表中。若该功能码在可信任列表中 执行步骤11,否则拒绝该报文。
[0064] 步骤11:检测算法判断数据域第一个字节是否为子功能码。若是子功能码执行步 骤12,否则执行步骤13。
[0065] 步骤12:检测方法读取该功能码的可信子功能码列表,看该子功能码是否在该列 表中。若在可信子功能码列表中,该报文通过检测。否则,检测方法继续查找敏感子功能码 列表。如果该子功能码在敏感子功能码列表中,检测方法继续查找该敏感子功能码的IP地 址对白名单,判断本报文的IP地址对是否在该敏感子功能码的IP地址对白名单中。若该IP 地址对在IP地址对白名单中,则该子功能码通过检测,否则拒绝该报文。如果该子功能码也 不在敏感子功能码列表中,拒绝该报文。
[0066] 步骤13:检测方法读取数据字段关键信息,判断关键信息是否合法。若合法,则检 测通过,否则拒绝该报文。例如根据长度规则判断该功能码对应的报文长度是否合法。 [0067] 协议隔离处理流程如图2所示,主要工作包括:
[0068] (1)虚拟化平台收到来自设备A的连接请求后,交给流量牵引模块处理。
[0069] (2)流量牵引模块根据制定的流表将流量牵引至VM1进行处理。VM1收到数据包后, 交由协议清洗模块进行解析和安全检测,若检测不通过,则丢弃数据包;若检测通过,则将 数据包的应用层原始数据进行私有协议封装,发送到数据摆渡模块。
[0070] (3)数据摆渡模块利用共享内存将私有协议数据包摆渡至VM2。VM2收到VM1"摆渡" 过来的私有协议数据包后,VM2协议清洗模块进行解析,按照相应的TCP/IP协议格式将数据 重新封装为标准的TCP/IP协议数据包,之后转发给流量牵引模块。
[0071 ] (4)流量牵引模块根据相应的流表规则将数据包发送给设备B。
[0072] 1)流量牵引模块负责将数据流量导入指定的虚拟机中,是实现安全功能的基础和 前提。流量牵引模块是由OpenFlow和OpenvSwitch(OVS)组建而成,其功能是将指定网口的 数据包导入指定虚拟机中,并将指定虚拟机的数据包导出到指定物理网口。流量牵引模块 由OpenFlow协议作为控制协议,OpenvSwitch作为虚拟交换机,向上由管理员通过OpenFlow 协议控制,其中的流表管理就是协议下发实现。流量牵引模块的核心是流表,它是整个模型 中的流量开关,直接决定网络的通断和数据的流向。
[0073] 图4主要由数据包接收(发送)端,数据流表项以及执行动作集构成。
[0074] (1)数据包接收(发送)端:提供数据包的入口和出口(类似于物理交换机的以太网 口)来交换数据包。流量迀移模块可以虚拟出N个端口,并为每一个端口分配端口号。为了防 止与外网IP冲突,可以创建一个虚拟网络空间(类似于NAT ),将端口放入其中。
[0075] (2)流表项集:流表项集,包含每一条管理员添加的流表,流表中的字段可以包含 端口号、VLAN号、源物理地址、目的物理地址、以太网类型、源IP地址及目的IP地址等。
[0076] (3)执行动作集:执行动作集对应于流表项,即每个流表项都会有一个动作集与之 对应。当数据包经过流量牵引模块进行流表匹配后,会在执行动作集中查看已经匹配的流 表所对应的动作并执行。执行动作集支持的操作包括输出数据包到指定端口,修改数据包 源/目的MAC地址,修改数据包源/目的IP地址,修改流表的字段等。
[0077] (4)控制器:基于OpenFlow协议,远程或者本地配置宿主机上的流量牵引模块。主 要配置对象就是流表项,控制器还可以接收未匹配任何流表项的数据包,并作默认操作。
[0078] 流量牵引模块位于宿主机上,物理网口和虚拟网口都映射在流量牵引模块。数据 流向根据该模块中的流表表项确定,数据包在流量牵引模块与流表项执行匹配操作。如果 该数据包匹配到流表项,执行该流表项的动作集,否则被丢弃。流量牵引模块的目的是正确 地导向和管理流量,保证通信数据被正确地解析、检测和摆渡。
[0079] 2)协议清洗模块将牵引模块牵引过来的IP数据流量解析,剥离出应用层协议数 据,然后按照私有协议定义的属性和规则,将该数据包构造成私有协议数据包并进行安全 检测。
[0080] 私有协议的构建,关系到数据交换的安全,因而重点介绍私有协议的关键数据结 构见图3。
[0081 ] Proto_Handler结构体包括私有协议构造的基本信息:协议的身份标识、协议列 表、协议的安全检测方法及实际应用数据。以Modbus/TCP协议为例,上述私有协议的结构体 中协议名称字段是Modbus/TCP,协议列表字段如下ETH->IP->TCP->Modbus/TCP,其中包含 链路层到应用层的报头基本信息,协议数量字段值为4,安全检测方法为Check_ ModbusTCP_*(),该方法中应用Modbus/TCP深度检测方法,pay load 是 Modbus/TCP FOU。 [0082]协议清洗模块的主要工作包括:
[0083] (1 )VM1收到流量牵引模块牵引过来的数据包后,首先对数据包进行剥离,得到应 用层数据,依据规则构建私有协议数据,同时对应用层数据进行安全性检测。检测不通过, 直接丢弃该数据包,中断通信连接。检测通过,则通过数据摆渡模块将私有协议数据包摆渡 到 VM2。
[0084] (2)VM2收到数据摆渡模块摆渡过来的私有协议数据包后,首先对私有协议数据包 进行完整性校验,同时解析私有协议数据包得到原始的应用层数据,按照标准的TCP/IP协 议将协议数据重新封装成标准的TCP/IP协议数据包。最后VM2将重新封装好的标准TCP/IP 协议数据包通过流量牵引模块发到网络。协议清洗模块流程图如图5。
[0085] 3)VM1和VM2之间的通信通过数据摆渡的方式实现,VM1的协议清洗模块完成私有 协议的构建后,VM1和VM2建立起两个虚拟的内存环形队列,分别用于数据发送和数据接收。 [0086] (1 )VM1根据在特权虚拟机下维护的事件通道表,查询VM2相关的地址信息。若匹配 到相应的VM2地址和端口的信息,则说明可以建立通信连接,准备进行下一步操作。若匹配 不到,则终止本次通信。
[0087] (2)Xen利用Grant Table机制建立共享内存(两个实际内存环形队列),准备接收 和发送数据,与此同时Xenstore同步更新虚拟机的状态。XenStore是Xen下的不同虚拟机间 的共享存储区,以键/值的形式存储VM相关的配置和状态信息。在共享内存建立之前,通过 XenStore传递同步控制信息,确保VM1和VM2对共享内存读写的正确性。
[0088] (3)VM1将建好的共享内存信息,通过事件通道机制通知VM2,VM1和VM2准备通过共 享内存进行数据通信。
[0089] (4)VM1将协议清洗模块构建好的私有协议数据写入共享内存,此时在同步互斥机 制的控制下,VM2不可以从该共享内存读取数据。
[0090] (5)VM1向共享内存写入数据后,通过事件通道通知VM2。随后VM2从共享内存读取 数据,读取完毕后通知VM1,同时将数据交VM2的协议清洗模块处理。VM1接收到VM1发送的读 取完毕事件通知消息后,根据实际情况接着写或者是直接退出。
【主权项】
1. 一种基于Modbus/TCP深度解析的协议隔离方法,其特征在于:在Xen虚拟环境下的协 议隔离,用两台Guest 0S分别模拟协议隔离的内、外网处理单元;Guest 0S上部署协议清洗 模块,在协议清洗模块首先对IP数据流量解析,剥离掉TCP/IP的协议特征,阻断基于TCP/IP 协议特征的攻击,得到应用层协议数据,然后按照私有协议定义的属性和规则,将该数据包 构造成私有协议数据包并用深度检测方法进行安全检测,保证Modbus/TCP数据内容的合法 性; 1) 协议隔离思想 Modbus/TCP的通信解释如下; (1) 在Xen环境下,搭建两台VM分别模拟协议隔离的内网处理单元即VM1和外网处理单 元即VM2; (2) 客户机发起的Modbus/TCP请求,首先发给VM1;VM1对收到的Modbus/TCP请求进行协 议解析,剥离出头部信息和原始数据;之后VM1将剥离出来的数据经过协议清洗模块的安全 检测后,以共享内存的方式摆渡给VM2;VM2收到剥离出的数据后,根据数据中的头部信息, 得到真正的服务器地址,同时将数据重新封装为Modbus/TCP协议,发送给Modbus/TCP服务 器; (3 )Modbus/TCP服务器收到Modbus/TCP客户机请求后,做出响应,将响应报文发给VM2; VM2对收到的响应报文进行协议解析,剥离出头部信息和原始数据;VM2将剥离出的数据经 过协议清洗模块的安全检测之后,以共享内存的方式摆渡给VM1; VM1收到剥离出的数据和 头部信息后,重新封装成Modbus/TCP协议发送给客户机; (4)至此,完成一次Modbus/TCP客户机和Modbus/TCP服务器之间的通信; 2) 协议隔离的整体架构 Xen虚拟化平台的协议隔离架构包括VMM上的流量牵引模块、数据摆渡模块以及两台虚 拟机,其中两台虚拟机上均部署有协议清洗模块;两台虚拟机通过数据摆渡的方式交换数 据,在数据摆渡的时候需要用到同步机制,数据摆渡功能封装在数据摆渡模块; 3) 协议隔离的处理流程 协议隔离处理流程主要工作包括: (1) 虚拟化平台收到来自设备A的连接请求后,交给流量牵引模块处理; (2) 流量牵引模块根据制定的流表将流量牵引至VM1进行处理;VM1收到数据包后,交由 协议清洗模块进行解析和安全检测,若检测不通过,则丢弃数据包;若检测通过,则将数据 包的应用层原始数据进行私有协议封装,发送到数据摆渡模块; (3) 数据摆渡模块利用共享内存将私有协议数据包摆渡至VM2; VM2收到νΜΓ'摆渡"过来 的私有协议数据包后,VM2协议清洗模块进行解析,按照相应的TCP/IP协议格式将数据重新 封装为标准的TCP/IP协议数据包,之后转发给流量牵引模块; (4) 流量牵引模块根据相应的流表规则将数据包发送给设备Β; 流量牵引模块负责将数据流量导入指定的虚拟机中,是实现安全功能的基础和前提; 流量牵引模块是由OpenFlow和OpenvSwitch组建而成,其功能是将指定网口的数据包导入 指定虚拟机中,并将指定虚拟机的数据包导出到指定物理网口;流量牵引模块由OpenFlow 协议作为控制协议,OpenvSwitch作为虚拟交换机,向上由管理员通过OpenFlow协议控制, 其中的流表管理就是协议下发实现;流量牵引模块的核心是流表,它是整个模型中的流量 开关,直接决定网络的通断和数据的流向。2. 根据权利要求1所述的一种基于Modbus/TCP深度解析的协议隔离方法,其特征在于: 协议清洗模块将牵引模块牵引过来的IP数据流量解析,剥离出应用层协议数据,然后按照 私有协议定义的属性和规则,将该数据包构造成私有协议数据包并进行安全检测; 协议清洗模块的主要工作包括如下: (1 )VM1收到流量牵引模块牵引过来的数据包后,首先对数据包进行剥离,得到应用层 数据,依据规则构建私有协议数据,同时对应用层数据进行安全性检测;检测不通过,直接 丢弃该数据包,中断通信连接;检测通过,则通过数据摆渡模块将私有协议数据包摆渡到 VM2; (2)VM2收到数据摆渡模块摆渡过来的私有协议数据包后,首先对私有协议数据包进行 完整性校验,同时解析私有协议数据包得到原始的应用层数据,按照标准的TCP/IP协议将 协议数据重新封装成标准的TCP/IP协议数据包;最后VM2将重新封装好的标准TCP/IP协议 数据包通过流量牵引模块发到网络; 共享内存的方式能够加快数据交换,因而在数据摆渡模块利用Xen的共享内存方式,完 成数据交换;数据交换的过程中用Grant Table机制创建共享内存,通过生产者/消费者及 XenStore机制进行数据同步;在数据摆渡的过程中传输的是私有协议数据,私有协议数据 剥离了 TCP/IP协议特征,能够阻断基于TCP/IP协议的攻击行为,从而保证摆渡过程中数据 的安全性。3. 根据权利要求1所述的一种基于Modbus/TCP深度解析的协议隔离方法,其特征在于: VM1和VM2之间的通信通过数据摆渡的方式实现,VM1的协议清洗模块完成私有协议的构建 后,VM1和VM2建立起两个虚拟的内存环形队列,分别用于数据发送和数据接收; (1) VM1根据在特权虚拟机下维护的事件通道表,查询VM2相关的地址信息;若匹配到相 应的VM2地址和端口的信息,则说明能够建立通信连接,准备进行下一步操作;若匹配不到, 则终止本次通信; (2) Xen利用Grant Table机制建立共享内存即两个实际内存环形队列,准备接收和发 送数据,与此同时Xenstore同步更新虚拟机的状态;XenStore是Xen下的不同虚拟机间的共 享存储区,以键/值的形式存储VM相关的配置和状态信息;在共享内存建立之前,通过 XenStore传递同步控制信息,确保VM1和VM2对共享内存读写的正确性; (3) VM1将建好的共享内存信息,通过事件通道机制通知VM2,VM1和VM2准备通过共享内 存进行数据通信; (4) VM1将协议清洗模块构建好的私有协议数据写入共享内存,此时在同步互斥机制的 控制下,VM2不可以从该共享内存读取数据; (5) VM1向共享内存写入数据后,通过事件通道通知VM2;随后VM2从共享内存读取数据, 读取完毕后通知VM1,同时将数据交VM2的协议清洗模块处理;VM1接收到VM1发送的读取完 毕事件通知消息后,根据实际情况接着写或者是直接退出。
【文档编号】H04L29/06GK106027511SQ201610320345
【公开日】2016年10月12日
【申请日】2016年5月13日
【发明人】詹静, 杨静, 吴欢, 陶政
【申请人】北京工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1