欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种针对BACnet的网络安全防护方法独创技术13920字

一种针对BACnet的网络安全防护方法

2021-02-01 08:12:16

一种针对BACnet的网络安全防护方法

  技术领域

  本发明涉及BACnet网络的安全技术领域,具体地涉及一种针对BACnet的网络安全防护方法

  背景技术

  BACnet协议是针对采暖、通风、空调、制冷控制设备所设计的,同时也为其他楼宇控制系统(例如照明、安保、消防等系统)的集成提供一个基本原则,随着智能建筑的不断发展,以及内部智能设施的日趋进步,BACnet网络所互联的控制系统也日益庞大。庞大的BACnet网络对安全的需求开始显得越来越重要。而BACnet网络与IP网络的互联,使得BACnet网络的安全保护不得不面临全新的挑战。特别是在当今网络攻击和入侵手段不断发展的背景下,对BACnet网络的安全提出了更高的要求。

  现有的防护技术采用包过滤技术结合内容检测点,其存在的缺点如下:1、传统的包过滤技术不能适用于802.3承载的BACnet网络,因为BACnet协议与TCP/IP协议是平行的协议族。而对于UDP(UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI开放式系统互联参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范)承载的BACnet协议,有限的信息在BVLC(BACnet Virtual Link Layer)层之上,无法进行有效的防御。

  2、由于BACnet设备发出的报文没有原地址,接收的报文没有目的地址,在边界部署的时候地址信息来源不全,导致针对BACnet协议报文的包过滤技术无法获取足够的地址信息。

  3、BACnet报文头长度不固定网络地址信息充足程度不确定。

  发明内容

  (一)发明目的

  本发明的目的是克服现有技术利用包过滤技术结合内容检测点存在的缺陷,提供一种针对BACnet的网络安全防护方法。

  (二)技术方案

  为解决上述问题,本发明提出一种针对BACnet的网络安全防护方法,包括如下步骤:

  步骤a:对BACnet报文进行区分,具体为区分802.3协议承载的BACnet报文以及UDP协议承载的BACnet报文;

  步骤b:对BACnet网络层报文进行解析,得到网络层信息;

  步骤c:对BACnet应用层报文进行解析,得到应用层信息;

  步骤d:对BACnet报文的网络层信息进行补全;

  步骤e:根据应用层信息对BACnet报文进行处理。

  进一步的,通过BACnet报文报文头的标识区分802.3协议承载的BACnet报文以及UDP协议承载的BACnet报文。

  进一步的,步骤b中所述网络层信息包括源地址信息和目的地址信息。

  进一步的,步骤b中对BACnet网络层报文进行解析,得到网络层信息具体包括:

  步骤b1:获取BACnet报文的Version字段和Control字段;

  步骤b2:根据获取的Version字段和Control字段判断BACnet网络层报文是否存在目的地址信息,如果存在目的地址信息则执行步骤b3,否则执行步骤b6;

  步骤b3:解析目的网络号和目的MAC地址长度,如果目的MAC地址长度大于0则执行步骤b4,否则执行步骤b6;

  步骤b4:解析目的MAC地址;

  步骤b6:判断是否存在源地址信息,若存在源地址信息,则执行步骤b7;

  步骤b7:解析源地址信息;

  步骤b35:调用BACnet应用层的处理接口。

  进一步的,步骤c中,所述应用层信息包括Apdu类型信息、服务类型信息、ObjectId信息和PropertyId信息。

  进一步的,对BACnet应用层报文进行解析具体包括:

  步骤c1:解析BACnet应用层报文头,获取应用层Apdu类型信息和服务类型信息;

  步骤c2:判断是否分片报文,如果是则执行步骤c3,否则执行步骤c4;

  步骤c3:对BACnet应用层报文分片重组,执行步骤c4;

  步骤c4:解析BACnet应用层报文获取ObjectId信息和PropertyId信息。

  进一步的,利用哈希对BACnet应用层报文分片重组。

  进一步的,步骤e中,根据应用层信息对BACnet报文进行处理具体为根据获取的ObjectId信息和PropertyId信息,对BACnet报文进行处理。

  进一步的,步骤d具体为通过拓扑的配置自动补全缺失的Bacnet网络层信息。

  (三)有益效果

  本发明针对BACnet的网络安全防护方法,由于包括对BACnet报文进行区分,具体为区分802.3协议承载的BACnet报文以及UDP协议承载的BACnet报文;对BACnet网络层报文进行解析,得到网络层信息;步骤c:对BACnet应用层报文进行解析,得到应用层信息;步骤d:对BACnet报文的网络层信息进行补全;步骤e:根据应用层信息对BACnet报文进行处理。从而克服现有的防护技术采用包过滤技术结合内容检测点存在的缺点:不能适用于802.3承载的BACnet网络,对于UDP承载的BACnet协议,有限的信息在BVLC(BACnet Virtual LinkLayer)层之上,无法进行有效的防御。由于BACnet设备发出的报文没有原地址,接收的报文没有目的地址,在边界部署的时候地址信息来源不全,导致针对BACnet协议报文的包过滤技术无法获取足够的地址信息。BACnet报文头长度不固定网络地址信息充足程度不确定。

  下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

  附图说明

  附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

  图1为本发明具体实施方式所述的对BACnet网络层报文进行解析流程图。

  图2为本发明具体实施方式所述的对BACnet应用层报文进行解析流程图。

  图3为本发明具体实施方式所述的802.3报文头格式图;

  图4为本发明具体实施方式所述的Ethernet报文头格式图;

  图5为本发明具体实施方式所述的BACnet网络层报文头格式图。

  具体实施方式

  为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。

  802.3一种网络协议。描述物理层和数据链路层的MAC子层的实现方法,在多种物理媒体上以多种速率采用CSMA/CD访问方式,对于快速以太网该标准说明的实现方法有所扩展。

  结合附图,一种针对BACnet的网络安全防护方法,包括如下步骤:

  步骤a:对BACnet报文进行区分,具体为区分802.3协议承载的BACnet报文以及UDP协议承载的BACnet报文;

  步骤b:对BACnet网络层报文进行解析,得到网络层信息;

  步骤c:对BACnet应用层报文进行解析,得到应用层信息;

  步骤d:对BACnet报文的网络层信息进行补全;

  步骤e:根据应用层信息对BACnet报文进行处理。

  通过BACnet报文报文头的标识区分802.3协议承载的BACnet报文以及UDP协议承载的BACnet报文。

  本发明通过识别802.3报文头的bacnet特殊标识来识别802.3承载的Bacnet报文。检查Ethernet类型字段大于0x5dc为以太网报文,否则为802.3报文。802.3报文头和Ethernet报文头格式分别如图3和图5所示。对于802.3报文,当sdap,ssap,cntl分别为:0x82,0x82,0x03是为BACnet报文。而对于UDP承载的Bacnet报文,当UDP数据场前2字节数据为:81 01,81 02,81 03,81 04,81 05,81 06,81 07,81 08,81 09,81 0a,81 0b时,可能为Udp承载的Bacnet数据。对此数据在进行深度解析以确认验证。对于无论802.3承载的Bacnet数据还是UDP承载的Bacnet数据其Bacnet网络层开始的格式都是一样的。步骤b中所述网络层信息包括源地址信息和目的地址信息。

  结合图1,步骤b中对BACnet网络层报文进行解析,得到网络层信息具体包括:

  步骤b1:获取BACnet报文的Version字段和Control字段;

  步骤b2:根据获取的Version字段和Control字段判断BACnet网络层报文是否存在目的地址信息,如果存在目的地址信息则执行步骤b3,否则执行步骤b6;

  步骤b3:解析目的网络号和目的MAC地址长度,如果目的MAC地址长度大于0则执行步骤b4,否则执行步骤b6;

  步骤b4:解析目的MAC地址;

  步骤b6:判断是否存在源地址信息,若存在源地址信息,则执行步骤b7;

  步骤b7:解析源地址信息;

  步骤b35:调用BACnet应用层的处理接口。

  如图5所示BACnet网络层报文头格式,其中,Version和Control字段是固定的,其余的是可变的。Control字段指示了其他字段是否会存在。根据Control字段提供的信息,可以获知DNET,DLEN,DADR,SNET,SLEN,SADR的存在情况。

  Control的bit5为0时:DNET,DLEN,DADR,HopCount不存在;

  Control的bit5为1时:DNET,DLEN,HopCount存在。如果DLEN等于0,则表示这是一个广播地址,否则DADR存在;

  Control的bit3为0时:SNET,SLEN,SADR不存在;

  Control的bit3为1时:SNET,SLEN,SADR存在,其中不存在SLEN为0的情况。

  步骤c中,所述应用层信息包括Apdu类型信息、服务类型信息、ObjectId信息和PropertyId信息。

  如图2所示,对BACnet应用层报文进行解析具体包括:

  步骤c1:解析BACnet应用层报文头,获取应用层Apdu类型信息和服务类型信息;

  步骤c2:判断是否分片报文,如果是则执行步骤c3,否则执行步骤c4;

  步骤c3:对BACnet应用层报文分片重组,执行步骤c4;

  步骤c4:解析BACnet应用层报文获取ObjectId信息和PropertyId信息。

  利用哈希对BACnet应用层报文分片重组。

  步骤e中,根据应用层信息对BACnet报文进行处理具体为根据获取的ObjectId信息和PropertyId信息,对BACnet报文进行处理。

  步骤d具体为通过拓扑的配置自动补全缺失的Bacnet网络层信息。应用层报文经过哈希进行分组,可以区分不同Bacnet会话。hashkey的数据结构如下:

  

  

  经过分片重组(如果需要)后的Bacnet报文将从其中提取提取出ObjectId,PropertyId等信息,由于决定对报文的处理行为(放行、阻断、告警)等。根据预先部署的规则(决定了哪些报文可以被放行,哪些需要被阻断或者告警)和从报文中获取的信息,对报文进行相应的处理动作。这样就可以放行那些可以预期以及行为安全的报文,而阻断那些不应该出现以及带有危险信息的报文。发明的优点在于,通用性强,本发明适用于802.3以及以太网UDP承载的Bacnet协议。部署灵活,本发明可以部署在网络终端位置,也可以部署在网络路由器附近。本发明可以对Bacnet网络层以及应用层的信息进行控制,可以达到对报文的精细控制。

  本发明能够克服现有的防护技术采用包过滤技术结合内容检测点存在的缺点:不能适用于802.3承载的BACnet网络,对于UDP承载的BACnet协议,有限的信息在BVLC(BACnetVirtual Link Layer)层之上,无法进行有效的防御。由于BACnet设备发出的报文没有原地址,接收的报文没有目的地址,在边界部署的时候地址信息来源不全,导致针对BACnet协议报文的包过滤技术无法获取足够的地址信息。BACnet报文头长度不固定网络地址信息充足程度不确定。

  显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

  此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。

  应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

  以上参照本发明的实施例对本发明予以了说明。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。本发明的范围由所附权利要求及其等价物限定。不脱离本发明的范围,本领域技术人员可以做出多种替换和修改,这些替换和修改都应落在本发明的范围之内。

  尽管已经详细描述了本发明的实施方式,但是应该理解的是,在不偏离本发明的精神和范围的情况下,可以对本发明的实施方式做出各种改变、替换和变更。

  显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

《一种针对BACnet的网络安全防护方法.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)