基于报文重构的工控防火墙控制方法_2

文档序号:8398107阅读:来源:国知局
br>【附图说明】
[0016]图1为本发明的工控防火墙管理网络拓扑结构示意图;
[0017]图2为本发明的基于报文重构的工控防火墙控制方法的一个实施例的流程图;
[0018]图3为本发明的基于报文重构的工控防火墙控制方法的又一个实施例的流程图。
【具体实施方式】
[0019]下面结合附图和实施例对本发明作进一步的描述。
[0020]工控防火墙网络拓扑结构示意图如下图1所示,包括:防火墙管理平台(以下简称MP) 11,工控防火墙(以下简称FW) 12和多个工控设备(以下简称AD) 13,图中用3台工控设备 ADl (131)、AD2 (132)和 AD3 (133)做示意。MP 的 IP 地址假设为 192.168.0.50,ADl (131)、AD2(132)和 AD3(133)的 IP 地址分别为 192.168.0.20,192.168.0.21,192.168.0.22,Fff没有IP地址。FW将网络连接分割成内网区域和外网区域,分别对应着ADI (131)、AD2 (132)和AD3 (133)所在的网络区域和MP所在的网络区域,MP与AD之间的通信需要通过FW,并且在MP与FW之间需要建立安全防护模块(以下简称SSH)连接以防止MP与FW之间的通信被监听。详细描述工作原理如下:
[0021]Fff没有IP地址,但是需要在MP到FW之间的SSH加密信道中被发现,使得MP可以正常管理FW。首先,MP向其下游内网设备ADl (131)(即192.168.0.20)发送端口号为6689 (端口号6689为举例,并非一定需要为6689)的SSH加密的UDP报文,即discovery包。加密的用户数据协议(User Datagram Protocol,以下简称UDP)报文经由FW,FW根据端口号是否是6689截获数据报文:如果端口号不是6689,FW放过这个UDP报文,透传下发到ADl (131);如果端口是6689,FW将这个数据报文送到内核来判断是否为discovery包,如果是FW回传“收到discovery”消息给MP。
[0022]上面加密的UDP报文被送到内核后,由一个内置引擎来判断是否是discovery包,即在NETFILTER中的PRE_ROUTING点上放置一个hook函数,如果满足端口号为6689,随即解密这个报文,根据报文内容来判断是否为discovery包,如果是discovery包,FW需要在内核对这个包进行进一步的处理。整个discovery报文判断流程方法如附图2所示,具体步骤如下:
[0023]步骤S211:防火墙管理平台向至少一个工控设备发送由安全防护模块加密的第一数据报文;
[0024]步骤S212:工控防火墙截取第一数据报文;
[0025]步骤S213:工控防火墙判断第一数据报文是否满足第一预设条件;
[0026]步骤S215:当第一数据报文不满足第一预设条件时,阻止第一数据报文的传送;
[0027]步骤S214:当第一数据报文满足第一预设条件时,工控防火墙判断第一数据报文是否满足第二预设条件;
[0028]步骤S216:当第一数据报文满足第二预设条件时,工控防火墙发送确认收到信息给防火墙管理平台;
[0029]步骤S217:建立防火墙管理平台和工控防火墙之间的连接。
[0030]FW对于discovery包需要构造一个响应包,并回传给MP。实际上discovery包里面包含有MP的信息,也包含了一些安全机制,避免重放攻击、中间人攻击等。在discovery回传包中还包含了 FW的信息。
[0031]Discovery 包格式如下:
[0032]IIP 头 IUDP 头 I 管理帧头 |MP 信息 md5checksum
[0033]-1P头:MP发往下游设备的IP头
[0034]- UDP头:发往下游设备6689端口的UDP头
[0035]-管理帧头:此帧头格式中包括
[0036]。payload type,用来指示此包类型,是discovery包还是MCR包。
[0037]ο 64bit seq_num,用来指示当前MP发往下游device的第几个包,与MPidentifier 一起唯一标识这个包,避免重放攻击
[0038]-MP信息:内容包括
[0039]ο MP identifier,表示与FW通信的MP,全局唯一
[0040]ο MP Model Name,当前与FW通信的MP型号
[0041]o MP Vers1n,当前与FW通信的MP版本号
[0042]- Checksum:用来验证payload是否正确
[0043]Discovery响应包格式如下:
[0044]IP 头 UDP 头 I 管理帧头 IFW 信息 md5checksum
[0045]-1P头:FW模拟下游AD发送给MP的包头
[0046]- UDP头:FW模拟下游AD使用源端口 6689会送给MP对应端口
[0047]-管理帧头:与收到的discovery包一致
[0048]-FW信息:内容包括
[0049]ο FW identifier,唯一标识此FW,可用其上游网口 MAC地址
[0050]ο FW Model Name,当前与MP通信的FW型号
[0051]ο FW Vers1n,当前与MP通信的FW版本号
[0052]- Checksum:校验此包是否完整正确
[0053]参考附图3,在FW和MP建立连接之前,发送管理请求包,以保证连接建立的安全性,具体步骤如下:
[0054]步骤S311:防火墙管理平台向工控防火墙发送由安全防护模块加密的第二数据报文;
[0055]步骤S312:工控防火墙截取第二数据报文;
[0056]步骤S313:工控防火墙判断第二数据报文是否满足预设条件;
[0057]步骤S314:当第二数据报文不满足所述预设条件时,阻止第二数据报文的传送;
[0058]步骤S316:当第二数据报文满足所述预设条件时,在一定时间阈值内,使能相应的防火墙管理平台的IP:端口的TCP连接到工控防火墙的安全防护模块的守护进程。
[0059]Fff的管理可以通过与MP建立一条加密的SSH信道来实现。SSH通道的建立前增加一层Single Packet Authenticat1n,来保证连接建立的安全性。原理如下:MP向FW发送管理请求(MCR)包,Fff解密验证是否为授权的MP,即MP在进行SSH连接请求之前,需要发送一个UDP包通过FW的验证,FW验证通过后在后续10秒内使能相应MP的IP:P0RT (端口 )的TCP连接到FW的SSHD (SSH的守护进程)。建立连接后,可以通过相应的用户空间工具去配置FW。MCR包的截获原理与discovery包类似都是在内核中通过相应内置的引擎,再通过hook函数进行捕捉。在随后的MCR包的处理中,需要保证后续10秒以内的MP发出的连接请求都能成功到达FW上本地的SSHD。在内核中处理MCR的过程如下:
[0060]-判断是否为第一次接受管理,或者是否为已经授权过的MP;
[0061]-如果是第一次连接,或者是已经授权过的MP,继续。否则,返回NF_ACCEPT,FW透传此包到AD ;
[0062]-获取要建立TCP连接的PORT(端口);
[0063]-根据此包信息(下游设备的MAC:1P)建立二层和三层的目的地址转换(Destinat1n Network Address Translat1n,以下简称 DNAT)、源地址转换(SourceNetwork Address Translat1n,以下简称SNAT)规则,保证来自与对应MP的IP:P0RT的TCP连接可以到本机私有SSHD端口 ;
[0064]-启动定时任务,10秒之后,禁止建立新连接,但是DNAT、SNAT依然存在;
[0065]-释放此MCR包内存,返回NF_ST0LEN,TCP/IP协议栈无需处理此包。
[0066]MCR包除了含有要建立SSH连接的信息外,还需要一定的安全机制,避免重放攻击、中间人攻击。通过加密有效载荷(以下简称payload),避免信息泄漏与中间人攻击。同时MCR包头中的序列号(sequence number)唯一标识此包,避免了重放攻击。MCR包格式如下:
[0067]II
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1