本发明属于入侵检测技术领域,更为具体地讲,涉及一种基于机器学习的工业控制系统入侵检测方法。
背景技术:
工业控制系统信息安全在控制器的安全防护方面有着非常广泛的应用,诸如电力、石油天然气、以及大型制造行业等。过去几年间,工业控制系统开始广泛采用信息化技术,使工厂变的智能化,但是由于工业控制系统与传统的it系统之间有着很大的区别,工业控制系统在安全方面还存着很多不足,而由于防护不足会造成很多严重的问题,其中包括核心数据被窃取、关键工控流程被破坏、对工业系统功能未经授权的访问以及甚至造成工厂停产等,所以增加工业控制系统的防护功能有非常重要的意义。机器学习是一种让计算机在没有事先明确的编程的情况下做出正确反应的科学。在过去的十年中,机器学习已经给我们在自动驾驶汽车,实用语音识别,有效的网络搜索,以及提高人类基因组的认识方面带来大量帮助。将机器学习应用到工业控制环境中具有极大的适用性和极强的便利性。工业控制系统网络中的通信跟传统网络不同的是,工业控制系统网络中通信具有较高的周期性特点,这给机器学习在工业控制系统安全方面的使用提供了基础,这是机器学习在工业控制环境中具有适用性的体现。在工业控制系统中引入机器学习可以减少对于工业防火墙的配置,提高工业防火墙对于不同工业环境的适应性,所以将机器学习引入工业控制系统环境中是一种非常有效且可行的方式。
工业控制系统环境中,所谓控制端是指工业环境中控制指令发送端,也就是发送工业现场设备动作指令的一端;所谓执行端就是工业环境中具体执行动作的一端,像plc控制器等。实际工业环境中,发送指令的控制端和执行指令的执行端都相对固定,也就是说发送指令的控制端的ip、执行端的ip和端口号等都相对固定,在防火墙的机器学习阶段,我们可以对于控制端和执行端的ip和端口号进行学习,在检测过程中若出现非常用的ip或者端口号则进行报警。另外,根据工业控制系统环境中通信的周期性特点,将实际的通信流量和时间作为一种检测特征,将在机器学习阶段,统计不同时间段内流量大小的阈值,在检测过程中,若出现在某个时间段内高于学习阶段的阈值情况则发送报警。
技术实现要素:
本发明的目的在于克服现有技术的不足,提供一种基于机器学习的工业控制系统入侵检测方法,在任何工业环境中都无需人工配置工业防火墙,通过入侵检测模块的机器学习实现入侵的自动检测。
为实现上述发明目的,本发明一种基于机器学习的工业控制系统入侵检测方法,其特征在于,包括以下步骤:
(1)、对待检测的工业控制系统通信进行数据包的检测、识别和分析;
设工业控制系统中共有m组控制端和执行端组合,其通信周期划分为x个单位时间;
在机器学习阶段,通过防火墙中的入侵检测模块对工业控制系统的通信数据包进行检测、识别,分析提取出控制端和执行端之间通信数据包的源ip地址sip、源端口号sd、目的ip地址dip、目的端口号dd、时刻值t以及单位时间内通过的数据包数量n,则共提取出m×x组数据;
(2)、对获取的数据进行预处理;
在m×x组数据中,分别将每组数据中的源ip地址sip、源端口号sd、目的ip地址dip、目的端口号dd、时刻值t以及单位时间内通过的数据包数量n组成向量(sip,sd,dip,dd,t,n),再将m×x组向量(sip,sd,dip,dd,t,n)传入防火墙中的入侵检测模块;
(3)、判断m×x组向量(sip,sd,dip,dd,t,n)的异常
(3.1)、入侵检测模块监测机器学习阶段某一组向量出现未检测到的源/目的ip地址sip或未使用的端口号sd或未出现的组合,即出现非法ip或非法端口或非法组合,则判断该组向量异常,否则判断该组向量正常,并进入步骤(3.2)进行下一步判断;
(3.2)、根据源ip地址sip、源端口号sd、目的ip地址dip、目的端口号dd确定通信的双方,若时刻值t通信双方的通信数据包数量n在合法的通信数据包的上限阈值和下限阈值之间,则判断该组向量正常,否则判断该组向量异常;
(4)、建立入侵检测模型
将步骤(3)中得到的m×x组正常或异常的向量进行机器学习,其正常向量对应的输出设置为1,异常向量对应的输出设置为0,从而建立起入侵检测模型;
(5)、利用入侵检测模型对通信数据进行异常流量检测
在实际的工业环境中进行检测,入侵检测模块提取到工业控制系统的通信数据之后,将通信数据按照步骤(1)~(2)所述方法调整成向量(sip,sd,dip,dd,t,n),并输入到入侵检测模型中进行检测,若入侵检测模型的输出为1,则判断该通信数据正常,若入侵检测模型的输出为0,则判断该通信数据异常,存在入侵。
本发明的发明目的是这样实现的:
本发明一种基于机器学习的工业控制系统入侵检测方法,先通过实际的工业环境中进行机器学习,记录下控制端和执行端的ip和端口号等,再将数据流量和时间对应的特征建立模型,最后通过建立的模型进行入侵检测,其中,如果发现有未知ip或者端口进行通信或者某个时间段的通信流量极大的大于或者小于学习阶段的阈值,则进行报警,极大的提高系统的通信安全性;此外,本发明还可以适用于各种工业网络环境下的入侵检测,无需手动配置,通过自动学习即可实现异常检测。
附图说明
图1是本发明基于机器学习的工业控制系统入侵检测的拓扑结构图;
图2是入侵检测模块检测流程图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
实施例
图1是本发明基于机器学习的工业控制系统入侵检测的拓扑结构图。
在本实施例中,如图1所示,控制端和执行端所有的通信流量都会经过防火墙,而入侵检测模块就在防火墙之中,在防火墙中包含有入侵检测模块和深度包解析模块。
下面结合图1对本发明一种基于机器学习的工业控制系统入侵检测方法进行详细说明,具体包括以下步骤:
s1、对待检测的工业控制系统通信进行数据包的检测、识别和分析;
设工业控制系统中共有m组控制端和执行端组合,其通信周期划分为x个单位时间;
在机器学习阶段,通过防火墙中的入侵检测模块对工业控制系统的通信数据包进行检测、识别,分析提取出控制端和执行端之间通信数据包的源ip地址sip、源端口号sd、目的ip地址dip、目的端口号dd、时刻值t以及单位时间内通过的数据包数量n,则共提取出m×x组数据;
s2、对获取的数据进行预处理;
在m×x组数据中,分别将每组数据中的源ip地址sip、源端口号sd、目的ip地址dip、目的端口号dd、时刻值t以及单位时间内通过的数据包数量n组成向量(sip,sd,dip,dd,t,n),例如此刻的向量值为(19216810147,10036,19216810133,502,011008,30)其中19216810147是源ip地址,10036是源端口号,1921610133是目的ip地址,502是目的端口号,011008代表时刻值,30代表此时刻内通过的数据包数量,再将m×x组向量(sip,sd,dip,dd,t,n)传入防火墙中的入侵检测模块;
s3、判断m×x组向量(sip,sd,dip,dd,t,n)的异常
s3.1、入侵检测模块监测机器学习阶段某一组向量出现未检测到的源/目的ip地址sip或未使用的端口号sd或未出现的组合,即出现非法ip或非法端口或非法组合,则判断该组向量异常,否则判断该组向量正常,并进入步骤(3.2)进行下一步判断;例如正常的ip地址为19216810147、19216810133、19216810178出现了未知的ip地址1921610110则通信异常;再比如正常的端口号为10036,10098,出现了未知的端口号10010则判断为通信异常;再比如ip地址19216810147跟端口号10098是合法搭配,但是出现了19216810133跟端口10098搭配则判断为通信异常。
s3.2、根据源ip地址sip、源端口号sd、目的ip地址dip、目的端口号dd确定通信的双方,若时刻值t通信双方的通信数据包数量n在合法的通信数据包的上限阈值和下限阈值之间,则判断该组向量正常,否则判断该组向量异常;例如通过源ip地址19216810147、源端口号10036、目的ip地址1921610133、目的端口号502来确定的通信双方在时刻011008时通信的数据包的上限阈值是50,下限阈值是30,但是此刻检测到通信数据包是100则判断为通信异常。
s4、建立入侵检测模型
将步骤s3中得到的m×x组正常或异常的向量进行机器学习,其正常向量对应的输出设置为1,异常向量对应的输出设置为0,从而建立起入侵检测模型;
s5、利用入侵检测模型对通信数据进行异常流量检测
在实际的工业环境中进行检测,入侵检测模块提取到工业控制系统的通信数据之后,将通信数据按照步骤s1~s2所述方法调整成向量(sip,sd,dip,dd,t,n),例如(19216810147,10036,19216810133,502,011008,30),并输入到入侵检测模型中进行检测,若入侵检测模型的输出为1,则判断该通信数据正常,若入侵检测模型的输出为0,则判断该通信数据异常,存在入侵。
实例
使用控制端软件作为客户端,执行端软件服务器,设置为每1分钟读取一次数据。
进行一段时间的通讯,我们选取的合法样本值为:
x1=(19216810147,10036,19216810133,502,011008,30)
x2=(19216810147,10098,19216810133,502,011009,45)
x3=(19216810147,10023,19216810133,502,011010,50)
x4=(19216810125,10211,19216810133,502,011010,19)
选取非法的样本值为:
x1=(19216810147,10036,19216810133,502,011008,100)
x2=(19216810147,10098,19216810133,502,011009,10)
x3=(19216810147,10023,19216810133,502,011010,198)
x4=(19216810125,10211,19216810133,502,011010,201)
输出结果:对于该模型,当入侵检测模块获取数据为(19216810147,10036,19216810133,502,011008,30),输入入侵检测模型,正常时候由源ip地址19216810147、源端口号10036、目的ip地址1921610133、目的端口号502确定的同通信双方在时刻011008通信数据包的合法范围是30到50,此时通过的数据包是30,检测结果是0.99,通常在理想状态下,入侵检测模型的输出为1或0,但在实际的检测中,其输出只能趋近于1或0,如图2所示,当输出结果在0.7至1.3之间的时候,我们判断为通信正常;当入侵检测模块获取的数据为(19216810147,10036,19216810133,502,011008,100),输出结果为0.001,此时0.001不在0.7到1.3的范围内,所以同样的分析判断为通信异常。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。