电站自动化系统数据网络安全监控方法 【技术领域】
本发明属于电力电子技术领域,特别是涉及一种电站自动化系统的数据网络安全监控方法。
技术背景
随着计算机技术、通信技术和网络技术的发展,变电站、电厂、电网调度中心、用户等之间进行的数据交换也越来越多,现代化电力系统在考虑基础电力设施的安全性和可靠性外,越来越需要加强对于信息安全性的考虑。电力生产自动化水平的提高导致大量远程控制、监视等事件通信,对电力控制系统和数据网络的安全性、可靠性、实时性提出了新的严峻挑战。
电力系统计算机网络系统分为四个安全工作区:实时控制区、非控制生产区、生产管理区、管理信息区。在2003年以前,四个区之间的隔离都是通过防火墙来实现的。如图1所示,通过防火墙隔离的各个安全区,在网络上通常是通过开放相应的服务端口来实现应用程序的通讯,开放了的端口一般无法对其传送的内容进行进一步的检测,当服务器端口出现安全漏洞后除了对相应应用程序进行修补外别无他法。此外以网络为主要传播途径的病毒、黑客也日益猖獗,加上构成电力系统的智能装置及各种应用系统都没有安全内核,应用系统普遍采用Windows平台,数据通信规约的公开化,从而使电力系统数据网络存在较大的安全隐患。有数据显示,国内监控系统已多次发生病毒和“逻辑炸弹”等事件,这些病毒占用计算机系统大量资源、伪造调度报文、影响相关电力软件正常工作,直接造成电力自动化的控制系统死机、录波器频发故障、监控系统异常等情况的发生,从而导致停电事故的频发,影响电力系统的安全生产。由此可见,电力系统的信息安全问题不容忽视。随着变电站无人值守技术的发展,出现了越来越多的集控站应用模式,变电站远程操作控制技术的应用是一种必然的趋势。
目前,网络数据安全主要基于以下几个方面的因素来考虑。
1)控制系统和通信规约
目前电力系统的实时运行系统很少采用加密或安全认证,许多控制系统不具备入侵识别能力。
2)远程数据访问模式
随着控制系统远程应用功能技术的发展,越来越多的RTU、变电站、发电厂开放了各种直接、间接的远程应用功能,而与各种控制系统的远程联结很少采取加密措施,也不具备电子安全认证能力。此外,系统供应商会在电力用户不知情的情况下安装远程进入功能。
3)专用软件操作系统
电站自动化系统通常采用专用的操作系统,对于新系统的用户接口基本上是基于Windows或Unix系统,因此,会将安全漏洞暴露给攻击者,尤其对于大量采用Windows操作系统的应用软件,其安全漏洞是非常明显的。
4)海量数据传输问题
电站网络承受的海量数据传输得不到有效控制,电力数据没有经过有效的过滤处理,造成非重要数据占用有限带宽资源,影响实时性高的重要数据的传输。
综上,目前电力系统的网络数据安全漏洞非常明显,且不具备电子安全认证能力,存在较大的隐患。
【发明内容】
针对现有技术存在的上述不足,本发明的目的是提供一种能实现对电站数据网络的信息安全和网络可靠性的实时监视,主动对数据传输网络进行诊断,并在网络传输异常情况下发出告警的电站自动化系统数据网络安全监控方法。
本发明的目的是这样实现的:一种电站自动化系统数据网络安全监控方法,其特征在于,它是在现有电力系统计算机网络系统上,利用Snort检测引擎实现对电站自动化数据网络的监视,引擎嵌入的规约包括CDT、IEC-60870-101以及IEC-61850在内的通信规约,利用所述规约自身的帧格式建立引擎匹配条件;具体步骤包括:
a)对网络上传输的数据帧内容进行监控。电站数据网络上传输地数据帧信息都是按照固定的标准规约来约定的,因此,数据帧信息都将满足相应传输规约的帧格式,以电站数据传输的规约格式为基准,满足规约格式的信息允许其继续流通,不满足规约格式的信息则进行隔离,从而保证了数据帧内容的可靠性和信息的安全性;
b)对电站数据采集网络的实时流量进行监测。由于电站数据采集网络传递的信息具有周期性且数据包大小相同,所以各个时段的网络流量也应该是相同的,以此为前提,若发现网络流量异常,则说明网络上有异常数据传递,电站自动化系统数据网络安全监控装置将给出告警信息。
当网络经上述判据诊断后,确认为网络异常后,将主动发出告警信息,对具有管理功能的交换机发出指令,关断与其通信的端口,实现安全隔离。
进一步,所述步骤a)中,对电站数据网络上传输的数据帧内容进行监控的方法为:
由网络监视模块结果统计得出网络数据帧的平均数据传输频率为f,监视模块设定一个计数器,每捕获一个数据帧则计数器自动加1,经时间T后自动为0,并重新开始计数。
其中,
T=1f]]>
则在时间段t内,第N-1个数据帧和第N个数据帧对应的计数值分别为采样计数值m1、m2;则通过以下判据来判断网络数据帧是否丢失;
若:
m1+1≠m2
则:数据帧传输不正常;
若网络帧符合上述任何一个条件,则说明数据帧丢失,发出报警信息。
进一步,所述步骤b)中,对电站数据采集网络的实时流量进行监测的方法,具体为:
设定统计流量的单位时间值为t1,n次随机抽样网络传输正常情况下的流量测量值在时间t1内的交换机流量分别为F1、F2、F3……Fn,并求取均值为F,其表达式如下:
F‾=1nΣi=1nFi]]>
若在t1时间内统计交换机实际输出流量为Fa;出现流量不稳定的时间ty;进一步设定流量阈值ΔF,以及流量不稳定时间阈值Δt;
若:
|F-Fa|>ΔF
ty>Δt
则:网络流量异常报警。
相比现有技术,本发明具有如下有益效果:
电站数据网络是通过防火墙来实现其与外部因特网隔离的,网络内部的各个安全工作区的隔离也是通过防火墙来实现。现有的防火墙技术不能完全有效的抵御来自网络的病毒、黑客攻击,不能检查应用层的数据,因此无法对数据信息内容进行监控防护,而且防火墙的设置将导致信息传输产生明显延时,从而使电力数据的实时性要求得不到很好的满足。本发明能够对电站数据网络传输的信息内容进行监控,能够明确区分病毒与合法信息,有效的监控电站内各个计算机网络工作区之间的信息交换;由于本发明选用简化的Linux操作系统以及嵌入式的硬件,信息的处理速度快,延时短,能够满足电力数据实时性的要求;此外采用简化的Linux操作系统,该操作平台具有安全性高、不易受到攻击的特点,较常规的Windows操作系统显得更为安全可靠;本发明亦能对传输网络进行监控,实现对数据传输网络进行诊断,这是防火墙技术所不具备的功能。
本发明方法能够实现对电站数据网络的信息安全和网络可靠性的实时监视,主动对数据传输网络进行诊断,并在网络传输异常情况下发出告警直至闭锁端口,解决了电站内数据网络通信的信息安全与可靠性瓶颈问题。
【附图说明】
图1为现有电力系统计算机网络安全防护图。
图2为本发明提供的CDT规约的匹配判断流程图。
图3为本发明提供的IEC-60870-101规约的匹配判断流程图。
图4为本发明提供的IEC-61850规约的匹配判断流程图。
【具体实施方式】
以下结合附图和具体实施方式对本发明作进一步详细说明。
一种电站自动化系统数据网络安全监控方法,它是在现有电力系统计算机网络系统上,利用Snort检测引擎实现对电站自动化数据网络的监视,引擎嵌入的规约包括CDT、IEC-60870-101以及IEC-61850在内的通信规约,利用所述规约自身的帧格式建立引擎匹配条件。本发明使用的监控装置运行平台采用Sis550CPU作为处理器,选用ICOP公司的Vortex6082作为集成主板,内存配置为128MB板载,硬盘选用32MB DOM电子盘。该装置选用精简的Linux操作系统,采用Snort入侵检测系统(IDS)完成对非法数据的检测。Snort是一个基于libpcap库的网络数据包嗅探器,可以作为一个基于网络和误用的轻量级入侵检测系统。基于Snort技术的入侵检测的思想是:研究分析网络入侵行为,提炼出其特征值,并按照规范写成检测规则,多个检测规则形成一个规则数据库,运用概率抽样,从网络中捕获的数据包,按照规则逐一匹配,从而完成入侵的预警或记录入侵检测引擎,并利用实时报警功能,将报警信息发往sys2log、Server Message Block(SMB)、WinPopupMessages或单独的alert文件。Snort对入侵规则进行匹配的过程是:首先依照规则文件建立规则语法树,其次对从网络上捕获的每一条数据报文和自身建立的规则树进行匹配,若发现存在一条规则匹配该报文,就表示检测到一个攻击,然后按照规定的动作进行处理,若搜索完所有的规则都没有找到匹配的规则则视该报文正常,本装置由以下软件系统来实现:
1.精简Linux操作系统的建立
从ftp.kernel.org下载最新的内核kernel-2.6.16.14.tar.gz(工作时最新内核)解压:tar-jxvf kernel-2.6.16.14.tar.gz配置:
Make menuconfig
在“Core Netfilter Configuration”选项中有如下配置:
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_QUEUE=y
CONFIG_NETFILTER_NETLINK_LOG=y
CONFIG_NETFILTER_XTABLES=y
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
CONFIG_NETFILTER_XT_TARGET_MARK=y
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
CONFIG_NETFILTER_XT_TARGET_NOTRACK=y
CONFIG_NETFILTER_XT_MATCH_COMMENT=y
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y
CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_NETFILTER_XT_MATCH_DCCP=y
CONFIG_NETFILTER_XT_MATCH_HELPER=y
CONFIG_NETFILTER_XT_MATCH_LENGTH=y
CONFIG_NETFILTER_XT_MATCH_LIMIT=y
CONFIG_NETFILTER_XT_MATCH_MAC=y
CONFIG_NETFILTER_XT_MATCH_MARK=y
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=y
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
CONFIG_NETFILTER_XT_MATCH_REALM=y
CONFIG_NETFILTER_XT_MATCH_SCTP=y
CONFIG_NETFILTER_XT_MATCH_STATE=y
CONFIG_NETFILTER_XT_MATCH_STRING=y
CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
在“IP:Netfilter Configuration”项中有以下设置:
CONFIG_IP_NF_CONNTRACK=y
CONFIG_IP_NF_CT_ACCT=y
CONFIG_IP_NF_CONNTRACK_MARK=y
CONFIG_IP_NF_CONNTRACK_EVENTS=y
CONFIG_IP_NF_CONNTRACK_NETLINK=y
#CONFIG_IP_NF_CT_PROTO_SCTP is not set
CONFIG_IP_NF_FTP=y
#CONFIG_IP_NF_IRC is not set
#CONFIG_IP_NF_NETBIOS_NS is not set
#CONFIG_IP_NF_TFTP is not set
#CONFIG_IP_NF_AMANDA is not set
#CONFIG_IP_NF_PPTP is not set
CONFIG_IP_NF_QUEUE=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_IPRANGE=y
CONFIG_IP_NF_MATCH_MULTIPORT=y
CONFIG_IP_NF_MATCH_TOS=y
CONFIG_IP_NF_MATCH_RECENT=y
CONFIG_IP_NF_MATCH_ECN=y
CONFIG_IP_NF_MATCH_DSCP=y
CONFIG_IP_NF_MATCH_AH_ESP=y
CONFIG_IP_NF_MATCH_TTL=y
CONFIG_IP_NF_MATCH_OWNER=y
CONFIG_IP_NF_MATCH_ADDRTYPE=y
CONFIG_IP_NF_MATCH_HASHLIMIT=y
CONFIG_IP_NF_MATCH_POLICY=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y
CONFIG_IP_NF_TARGET_TCPMSS=y
CONFIG_IP_NF_NAT=y
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_IP_NF_TARGET_NETMAP=y
CONFIG_IP_NF_TARGET_SAME=y
#CONFIG_IP_NF_NAT_SNMP_BASIC is not set
CONFIG_IP_NF_NAT_FTP=y
CONFIG_IP_NF_MANGLE=y
CONFIG_IP_NF_TARGET_TOS=y
CONFIG_IP_NF_TARGET_ECN=y
CONFIG_IP_NF_TARGET_DSCP=y
CONFIG_IP_NF_TARGET_TTL=y
CONFIG_IP_NF_TARGET_CLUSTERIP=y
CONFIG_IP_NF_RAW=y
CONFIG_IP_NF_ARPTABLES=y
#CONFIG_IP_NF_ARPFILTER is not set
#CONFIG_IP_NF_ARP_MANGLE is not set
内核主要配置成Iptables防火墙,来实行网络层的数据过滤。
2.利用Snort建立CDT、IEC-60870-101和IEC-61850规约的匹配规则
Snort检测引擎嵌入了包括CDT、IEC-60870-101以及最新的IEC-61850在内的大量通信规约,满足这些通信规约的数据与病毒有着截然的区别。下面对检测引擎中嵌入的规约及如何辨识数据是否为合法数据进行说明。
①CDT(循环式远动规约)
CDT规定了电网数据采集与监控系统中循环式远动规约的功能、帧结构、信息字结构和传输规则等,采用可变帧长度、多种帧类别循环传送、变位遥信优先发送、重要遥测量更新循环时间较短,区分循环量、随机量和插入量采用不同形式传送信息,以满足电网调度安全监控系统对远动信息的实时性和可靠性的要求。CDT帧结构包括同步字、控制字及多个信息字。同步字按通道传送顺序分为3组EB90H,即1110、1011、1001、0000,并写入串口。控制字由控制字节、帧类别、信息字数、源站址、目的站址、效验码组成。Snort通过查找自身配置信息来识别CDT规约,具体流程如图2所示。如果Iptable-jQueue获取的数据包信息是由CDT规约封装的,那么该数据包里面的帧格式将符合CDT规约对帧格式的定义。对该数据包进行匹配判定将按照同步字、控制字、帧类别、源站地址和目标站地址进行匹配。若检测获取的帧头部数据为3组EB90H即1110、1011、1001、0000,则第一步匹配成功,继续进入下一步对控制字匹配的判断;若控制字与“0F”相“与”后的结果为“1”,则该控制字匹配成功,反之则返回匹配不成功;匹配成功后继续进行对其帧类别、源站地址和目标站地址的判断。整个匹配过程表示如下:
base_ptr=start_ptr;//设置起始指针
if(btd->not_flag)//测试是否有非标志
{
if((*base_ptr!=0xeb)‖(*(base_ptr+1)!=0x90)‖
(*(base_ptr+2)!=0xeb)‖(*(base_ptr+3)!=0x90)‖
(*(base_ptr+4)!=0xeb)‖(*(base_ptr+5)!=0x90))
{//判断是否是eb90eb90eb90
return 1;//同步头不匹配,返回1,表示not_fag测试为真
};
if((*(base_ptr+6)&&0x0f)!=1)//测试控制字符是否匹配
{
return 1;//控制字格式不匹配
};
if((*(base_ptr+6)!=btd->ctrl_byte)‖//控制字不匹配
(*(base_ptr+7)!=btd->frame_byte)‖//帧类型字不匹配
(*(base_ptr+9)!=btd->src_st)‖//源地址字不匹配
(*(base_ptr+10)!=btd->des_st))//目的地址字不匹配
{
return 1;//返回1表示not_fag测试为真
}
return 0;//返回0表示not_fag测试为假;
②IEC-60870-101
IEC-60870-101是国际上通行远动、保护相关通信规约,在我国普及程度很高。该规约在物理层采用ITU-T建议,定义了控制站和被控制站的数据电路终端设备(DCE)和数据终端设备(DTE)之间的接口,在所要求的介质上提供了二进制对称无记忆传输,以保证在链路层定义的组编码的高级数据完整性;链路层采用明确的链路规约控制信息(LPCI)的链路传输处理过程,此链路处理过程将应用服务数据单元(ASDUS)当作链路用户数据来传输。链路层采用帧格式的方式来提供所需的数据完整性、高效性以及传输的便利;IEC-60870-101应用层未采用明确的应用规约控制信息(APCI),它隐含在应用服务数据单元的数据单元标识符以及所采用的链路服务类型中。图3描述了Snort对101匹配过程:若帧的第一个起始字节为E5H、10H和68H中的任何一个数,则通过第一步对帧起始字节的匹配检验;若为E5H,由于该帧结构为单字节,则直接返回匹配成功;若起始字节为10H,将判断其控制域、地址域及结束字是否正确;若起始字为68H,将判断帧的数据结构、控制域、地址域及结束字是否都全部正确;正确则返回匹配成功,反之则不匹配。
base_ptr=start_ptr;//设置起始指针
if(btd->not_flag)//测试是否有非标志
{
if((*base_ptr!=0xe5)‖(*(base_ptr!=0x10)‖
(*base_ptr!=0x68)//判断是否是E5H、10H、68H
{
return 1;//不匹配,返回1,表示not_fag测试为真
};
if((*(base_ptr=E5H)//测试起始字是E5H
{
return 0;//匹配成功
};
if(*base_ptr=0x10//起始字是10H
(*(base_ptr+1)!=0x49)||//控制域不匹配
(*(base_ptr+2)!=btd->src_st)‖//RTU地址不匹配
(*(base_ptr+2)!=0x16//结束字不匹配
{
return 1;//返回1表示not_fag测试为真
}
if((*(base_ptr=0x68)
(*(base_ptr+1)!=src_zl)‖//判断字符长度
(*(base_ptr+2)!=0x49)||//帧类型字不匹配
(*(base_ptr+3)!=btd->src_st)‖//RTU地址不匹配
(*(base_ptr+4)!=0x16//结束字不匹配
{
return 1;//返回1表示not_fag测试为真
}
return 0;//返回0表示not_fag测试为假;
③IEC-61850
IEC-61850标准是目前变电站自动化领域统一的、权威的标准体系,是数字化变电站实现无缝通信和互操作性的基础。在数字化变电站内,GOOSE(通用变电站状态事件)报文、GSE(通用变电站时间)信息和SAV(采样值)采用以太网进行传输,传输内容的格式满足以太网帧结构,IEC-61850中详细定义了ISO/IEC8802-3以太网帧格式。该以太网帧格式与病毒和其它帧信息在帧格式的定义上有较大的区别,通过对信息帧的格式进行逐一的辨识,从而可以区分出数字化变电站的信息和非数字化变电站信息。本装置在区分这两组信息的区别时主要考虑了满足IEC 61850的以太网帧的四项条件,即头MAC地址的标注、优先级标志、以太网类型和APDU(应用协议数据单元),通过对上述四项内容进行判别达到辨识是否为合法帧信息的目的。
帧格式中的头MAC地址规定了帧的目标地址和源地址,通过辨识MAC地址的方式可以很容易的区分出该数据帧信息是否是合法的信息。如果MAC地址是电站的地址,即是合法的地址,则进一步对以太网类型值进行判别。IEC 61850-8-1GOOSE报文、IEC61850-8-1GSE管理报文以及IEC 61850-9-2中的采样值信息在以太网中的以太网类型值分别是88-B8、88-B9和88-BA,对应的APPID值(应用标志)分别为00、00和01,如果帧信息既满足相应的类型值又满足类型值所对应的APPID值,那么对该帧信息继续进行下步判别,检验其APDU(应用协议数据单元)是否合法。具体的判别流程见图4。
3.网络数据检测异常的诊断判据
网络数据检测异常的诊断的基本思想:通过网络监听抓包获取电站网络的数据流量,建立网络的数据流量检测判据,当数据流量异常,满足该判据时,则判定网络出现故障。
电站网络上的固定数据节点包括:电流互感器、电压互感器、数字电度表、开关智能单元、继电保护装置等设备,这些设备周期性地收发数据,具有较大的确定性,因此其数据传输具有一定的规律性。通过在网络交换机上连接一个监听计算机,对网络上的数据流转情况进行实时、不间断的侦听,建立网络的数据流量规律。对于电站数据传输中那些数据流量具有较大波动、不确定的数据,如电站的监控数据、管理数据以及与远方调度间的远动数据等,这些数据流量具有较大的不确定性,难以在较短的时间内建立数据网络流量规律,但是通过一定时间的信息积累,仍可建立此信息的数据网络流量规律。通过两种方式实现对网络的监视:
①数据帧的监测
假设网络监视模块结果统计得出网络数据帧的平均数据传输频率为f,监视模块设定一个计数器,每捕获一个数据帧则计数器自动加1,经时间T后自动为0,并重新开始计数。
其中,
T=1f]]>
则在时间段t内,第N-1个数据帧和第N个数据帧对应的计数值分别为采样计数值m1、m2;则通过以下判据来判断网络数据帧是否丢失。
若:
m1+1≠m2
则:数据帧传输不正常。
若网络帧符合上述任何一个条件,则说明数据帧丢失,需发出报警信息。
②网络流量监视
设定统计流量的单位时间值为t1,n次随机抽样网络传输正常情况下的流量测量值在时间t1内的交换机流量分别为F1、F2、F3……Fn,并求取均值为F,其表达式如下:
F‾=1nΣi=1nFi]]>
若在t1时间内统计交换机实际输出流量为Fa;出现流量不稳定的时间ty。进一步设定流量阈值ΔF,以及流量不稳定时间阈值Δt。
若:
|F-Fa|>ΔF
ty>Δt
则:网络流量异常报警。
当网络经上述判据诊断后,确认为网络异常后,将主动发出告警信息,对具有管理功能的交换机发出指令,关断与其通信的端口,实现安全隔离。
最后需要说明的是,以上实施例仅用以说明本发明的技术方案而非限制技术方案,尽管申请人参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,那些对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,均应涵盖在本发明的权利要求范围当中。