一种基于自学习规则的Modbus通信访问控制方法

文档序号:8383731阅读:334来源:国知局
一种基于自学习规则的Modbus通信访问控制方法【
技术领域
】[0001]本发明涉及一种针对Modbus通信的访问控制方法,其可检测和防范Modbus主站向Modbus从站发起的异常请求,属于工业控制网络安全领域。【
背景技术
】[0002]随着信息化与工业化进程的不断交叉融合,信息网络技术在工业控制系统中得到了普及应用,然而现有的工业控制系统大多未考虑网络安全因素,同时关于工业控制系统后门、漏洞及攻击隐患等方面的信息开始爆发性的传播,导致工业控制系统的信息及网络安全攻击更为容易实施,工业控制系统信息安全问题日益严峻。[0003]访问控制技术是一种实现在不同网络或网络安全域之间的安全保障方法,它能增强内部网络的安全性,确定哪些内部服务允许外部访问,以及允许哪些外部请求可以访问内部服务。访问控制通过审查经过的每一个数据包,判断它是否有匹配的访问控制规则,根据规则的先后顺序进行一一比较,直到满足其中的一条规则为止,然后依据规则做出相应的处理。如果都不满足,则采用默认的处理操作,从而保护网络的安全。目前的访问控制包括两种方式:一种是黑名单方式,即阻拦传输流通行;另一种是白名单方式,即允许传输流通过。[0004]Netfilter/iptables是Linux下基于数据包过滤的访问控制方法,它在网络层位置就可以直接检查单一数据包所承载的数据内容。Netfilter/iptables在网络层截获网络数据包,根据访问控制的规则表,检测网络攻击行为。数据包过滤是指在网络层对数据包进行分析、选择,通过检查数据流中每一个数据包的源IP地址、目的IP地址、源端口号、目的端口号、协议类型等因素或它们的组合来确定是否允许该数据包通过。[0005]然而,在工业控制系统中,Modbus协议是一种应用层协议,现有基于Netfilter/iptables的访问控制方法只能完成数据包的网络层及传输层关键字段的匹配,缺少针对Modbus协议的数据包深度解析技术,无法实现对Modbus应用数据的深度解析与检测。同时,现有的访问控制规则仅仅是以手动方式输入,无法根据网络中捕获的通信数据自动生成访问控制规则。【
发明内容】[0006]有鉴于此,本发明的目的是提供一种基于自学习规则的Modbus通信访问控制方法,结合“纵深防御”的思想,解决工业控制系统脆弱性和安全防护问题,保障工业控制系统的安全运行。[0007]本发明的进一步目的是提供一种基于自学习规则的Modbus通信访问控制方法,针对工业控制系统中广泛使用的Modbus通信协议,完成应用协议的深度解析,实现对Modbus主站与Modbus从站之间进行访问控制,检测与阻止异常的入侵行为。并且提供自学习规则功能,根据Modbus主站与Modbus从站之间的通信数据,自动生成Modbus访问控制规则,符合Modbus通信协议,提高规则输入的效率。[0008]本发明为实现上述目的所采用的技术方案是:一种基于自学习规则的Modbus通信访问控制方法,包括以下步骤:[0009]步骤一:根据Modbus主站与Modbus从站具体通信情况,设置白名单或黑名单的Modbus访问控制规则;[0010]步骤二:利用Netfilter/iptables捕获Modbus主站与Modbus从站之间通信的数据包;[0011]步骤三:将获得的关键字段信息与设置的Modbus访问控制规则进行匹配,执行相应的控制处理操作;[0012]步骤四:捕获下一个数据包,重新执行步骤二和步骤三。[0013]所述白名单或黑名单的Modbus访问控制规则包括,源IP地址——Modbus主站的IP地址、目的IP地址——Modbus从站的IP地址,目的端口号——Modbus协议端口号502、功能码-Modbus主站对Modbus从站的访问操作、起始地址-Modbus主站访问Modbus从站的起始地址、地址数-Modbus主站从起始地址访问Modbus从站的地址数量、控制处理操作-允许或不允许Modbus主站访问Modbus从站。[0014]所述访问控制规则具备自学习规则功能,执行如下步骤:[0015]设置自学习规则功能的自学习时间和自学习门限,自学习时间设置范围为O?72小时,自学习门限为O?10000;[0016]启动自学习规则功能,开始捕获Modbus主站与Modbus从站之间的通信数据包,从通信数据包中解析出源IP地址、目的IP地址、目的端口号、功能码、起始地址、地址数信息,存储至关键参数数据库,此条信息的计数器置I;[0017]捕获下一个Modbus通信数据包,解析出源IP地址、目的IP地址、目的端口号、功能码、起始地址、地址数信息,将此信息与关键参数数据库中的条目进行匹配,若匹配成功,则将此条信息所对应的计数器加I;若匹配不成功,则将此信息存储至关键参数数据库中,此条信息的计数器置I;[0018]对于每一个新捕获的数据包,重新执行上一步骤,直至到达设定的自学习时间;[0019]根据自学习门限及关键参数数据库中每一条关键参数信息的计数器值,判断是否自动生成Modbus访问控制规则。[0020]所述判断是否自动生成Modbus访问控制规则的判断准则如下:若关键参数数据库中某一条信息的计数器值大于或等于自学习门限时,根据信息自动生成Modbus访问控制规则,同时删除此条关键参数信息;若关键参数数据库中某一条关键参数信息的计数器值小于自学习门限时,不生成Modbus访问控制规则,在关键参数数据库中删除相应条目的信息。[0021]所述步骤二对于传输层为TCP协议,首先判断是否为TCP三次握手数据包,若是,则放行TCP三次握手数据包;若不是或者传输层为UDP协议,则解析数据包获得数据包的源IP地址、目的IP地址、目的端口号、Modbus应用层数据信息,再通过数据包深度解析技术解析Modbus应用层数据,提取功能码、起始地址、地址数信息。[0022]所述放行TCP三次握手数据包包括以下步骤:[0023]获取Modbus主站与Modbus从站之间通信的数据包的总长度、IP首部长度和TCP首部长度;[0024]判断数据包的总长度是否等于IP首部长度和TCP首部长度之和,若不等于,则执行Modbus访问控制规则的匹配;[0025]若等于,则获取TCP首部中的syn和ack标志位值,判断syn标志位是否为l、ack标志位是否是O:若是,则认为此数据包为TCP连接的第一次握手数据包,允许此数据包通过;[0026]若不是,则判断syn标志位是否为1、ack标志位是否是1:若是,则认为此数据包为TCP连接的第二次握手,允许此数据包通过;[0027]若不是,则判断syn标志位是否为O、ack标志位是否是1:若是,则认为此数据包为TCP连接的第三次握手,允许此数据包通过;若不是,则丢弃此数据包。[0028]所述步骤三对于白名单方式,将关键字段信息与白名单中的Modbus访问控制规则自上而下进行逐条匹配,若与其中一条匹配,则对此数据包进行放行,即允许此数据包通过,访问Modbus从站;若与白名单中所有的Modbus访问控制规则都不匹配,则执行白名单默认的控制处理操作,对此数据包进行丢弃,即不允许此数据包通过,禁止访问Modbus从站。[0029]所述步骤三对于黑名单方式,将关键字段信息与黑名单中的Modbus访问控制规则自上而下进行逐条匹配,若与其中一条匹配,则对此数据包进行丢弃,即不允许此数据包通过,禁止访问Modbus从站;若与黑名单中所有的Modbu当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1