CN103607346A - 可信路由器中ospf协议的异常和攻击检测方法 - Google Patents
可信路由器中ospf协议的异常和攻击检测方法 Download PDFInfo
- Publication number
- CN103607346A CN103607346A CN201310575258.XA CN201310575258A CN103607346A CN 103607346 A CN103607346 A CN 103607346A CN 201310575258 A CN201310575258 A CN 201310575258A CN 103607346 A CN103607346 A CN 103607346A
- Authority
- CN
- China
- Prior art keywords
- lsa
- router
- state
- module
- sequence number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
可信路由器的针对OSPF协议的异常和攻击检测方法属于信息安全领域。它首先利用路由器嵌入的TPM模块和内部的动态度量模块对路由器进行动态度量来防止路由器遭到操作系统层面的入侵,从而防止入侵后对系统配置甚至协议代码的篡改;然后利用外部攻击检测模块对常见的三种OSPF攻击手段进行检测,来防止中间人截获协议报文后篡改报文字段发起的外部攻击;最后利用内部监控模块来对路由器自身引发的异常状态转换和行为进行实时监控,从而能够及时发现路由器因为自身协议漏洞或人为操作造成的频繁异常状态,并且发出度量请求来触发动态度量模块,以检测路由器是否遭到入侵。
Description
技术领域
本发明涉及一种基于可信路由器的针对OSFP协议的异常和攻击检测方法的评估。属于信息安全领域。
背景技术
网络技术的快速发展和规模的不断扩大,使其正面临着严峻的安全挑战。路由器作为三层转发设备,承担着重要的任务和责任。目前网络上针对路由器的攻击越来越频繁普遍,如何保证路由器的安全可信成为了网络设备安全工作的重中之重。而路由协议是路由器的核心,路由功能主要由各种不同的路由协议完成。保证路由协议的安全可信,即保证了路由器的安全可信。路由协议种类不少,本发明主要从嵌入了TMP模块的路由上,针对OSPF路由协议着手,研究其存在的安全缺陷,并加以修改和补救。
TPM可信度量模块可以保证路由器从开始加电到启动完成的一个自身的可信。这是一个静态的度量。对路由器后续运行的状态,尚缺乏一个动态的度量方案。
而针对OSPF协议的常见攻击手段,主要有三种:最大年龄攻击、序列号+1攻击、最大序列号攻击。总结上述三种攻击的共同点为,均需要修改报文的特定字段,使得报文失效或异常,从而扰乱OSPF协议的正常流程。目前针对OSPF协议的防护措施,比较成熟的有用数字签名和信任管理系统。数字签名是将LSA报文的关键字段,进行数字签名保护,来防止关键字段被恶意篡改。此方法的缺陷在于,需要大量的计算开销和不能保护实时变化的age字段。而借助age字段进行的MaxAge攻击,是三种常见攻击中的一种。信任管理系统需要设立一个服务器,下发初始信任证书,动态维护每个路由器的信任值在计算信任值的过程中,主要考虑的参数是邻居路由器的延时、丢包率、吞吐率、链路流量和带宽等。没有在理论上给出能够有效防止攻击的说明和证据。
针对路由器状态的监控,较为常见的是利用入侵检测系统实时采集线路数据进行判断。
上述几种方案,都存在着各自的不足。因此,发明人从可信角度,提出了一种基于可信路由器的OSPF协议的异常和攻击检测方法。在此方法中,采用的可信路由器均自带TPM模块,在通过静态度量保证路由器自身可信的基础上,通过动态度量模块保证路由器动态可信;然后通过报文攻击检测模块判定是否存在攻击,并实时做出控制;最后监控路由器内部的状态行为,制定状态转换模型,用以发现路由器的异常状态和行为,实现OSPF协议的可信。
发明内容
本发明的目的,在于为一个接入可信网络的运行OSPF协议的路由器,提供一个动静结合、内外兼备的异常和攻击检测方案。
可信路由器的针对OSPF协议的异常和攻击检测方法,其特征在于包含以下步骤:
1.利用处于路由器内部的动态度量模块,对路由器上运行的所有进程的数量与关键进程的代码段,进行动态度量;关键进程包括路由器的管理进程和OSPF路由协议进程;路由器从启动到稳定的正常运行发挥路由功能之后,若不进行人为的操作和干预,则操作系统中进程的数量不变;若动态度量模块检测到路由器运行的进程数量发生变化,或者关键进程的代码段度量值发生变化,则会发出警报并记录当前状况;动态度量方式描述如下:
1.1动态度量的度量时机:
1.1.1路由器启动完毕,进行第一次进程数和关键进程代码段度量;
1.1.2第一次度量完成之后,每隔设定的时间T度量一次;
1.1.3通过特殊事件触发度量;特殊事件包括外部攻击检测模块报警和内部状态行为监控模块报警;
1.2动态度量的度量步骤:
1.2.1计时器或事件触发度量请求,度量模块接收度量请求;
1.2.2通过系统内核维护的进程列表,获得进程数以及包括OSPF协议进程和路由器管理进程的进程描述符;
1.2.3通过进程描述符获得内存描述符,从而获得进程代码段内容;
1.2.4将代码段内容交由TPM模块进行度量,并将度量结果和预设在TPM中的PCR值进行比较;TPM:Trusted Platform Module,是可信平台模块;PCR:是TPM中的平台配置寄存器;
1.2.5根据度量值的比对结果,若比对结果一致,不做处理;若结果不一致,则发出警报;
2.在路由器OSPF协议报文交互过程中,执行外部攻击检测模块,对常见的三种OSPF攻击手段进行检测;
2.1常见的三种攻击方式为:
2.1.1最大年龄攻击:将OSPF路由协议的LSA报文中的age字段,恶意设定为最大值,来删除LSA报文实体,以达到攻击目的;
2.1.2序列号+1攻击:假定有一个LSA报文,报文中的序列号字段的值为N。若恶意的将N+1,会导致生成该LSA的路由器又重新生成一个序列号为N+2的新LSA;若重复该攻击,会使路由器不停的生成LSA,造成链路状态异常,达到攻击目的;
2.1.3最大序列号攻击:将序列号人为设定为最大值;因为序列号值越大,则表明LSA实体越新;所以若网络中存在序列号的值为最大值的时候,该LSA正常的实体都将被丢弃,达到攻击的目的;
例如:序列号的初始值为0x80000001,0x80000000保留未用。OSPF协议规定了一条LSA实例增加序列号的最短时间MinLSInterval。MinLSInterval是生成一个特定LSA的最小间隔,MinLSInterval的值被设为5秒。因此理论上,将一个特定LSA的序列号从初始值开始持续增加到最大值0x7FFFFFFF,在时间上需要5*231秒,大概340年。这在正常情况下几乎是不可能的。OSPF的LSA更新机制规定,序列号大的LSA被视为较新。如果网络中存在序列号被修改为0x7fffffff的LSA,应当先将其清除,再由生成该LSA实例的路由器重新生成一个新的序列号为初始值的LSA,来替换具有最大序列号的LSA。然而,OSPF协议在此处存在一个BUG,路由器并没有先将达到最大序列号的LSA清除,而是直接生成了一个新的LSA。根据LSA更新机制,拥有最大序列号的LSA被认为最新。所以当别的路由器收到新生成的具有初始序列号的LSA时,会丢弃这个新生成的,但是被误认为“较旧”的LSA。由此造成了源路由器不断生成新LSA,并不断别别的路由器丢弃的后果。攻击的检测的方式为,在接收到协议报文后,该报文先进入模块。模块对报文中指定的关键字段,按设计好的流程进行检测。若根据检测流程判定为攻击行为,则放弃报文并发出警报。否则放行报文进入正常的协议处理流程。
攻击的检测的方式为,在接收到协议报文后,该报文先进入模块;模块对报文中指定的关键字段,按设计好的流程进行检测;若根据检测流程判定为攻击行为,则丢弃报文并发出警报。否则放行报文进入正常的协议处理流程;
2.2术语解释:
LSA:Link state advertisement,连接状态宣告,OSPF协议报文;
LSU:Link State Update,连接状态更新,OSPF协议报文;
AS-external-LSA:LSA报文的一种,描述到达AS外部目标的路径;
AS:Autonomous System,自治系统;
Summary-LSA:LSA报文的一种,描述了一条在区域外,但在AS内的路径;
Network-LSA:LSA报文的一种,由DR产生,列出了当前接入该网络的路由器列表;
DR:Designated Router,指定路由器;
AR:Advertising Router,宣告路由器,表明当前LSA是由AR产生的;
Seq:LSA的序列号字段;
DB_Seq:链路数据库中当前LSA实体的序列号;
MaxSeq:LSA序列号的最大值:
age字段:报文中代表报文年龄的字段;
MaxAge:age字段理论上能够达到的最大值;
LSRefreshTime:生成一个LSA的最大间隔时间;
Time_rev:路由器第一次收到该LSA实例时的age字段的值;
Time_mod:将LSA实体存入模块缓存时的时间;
源路由器:相对于收到的LSA的概念,如果收到LSA的路由器R恰好是生成该LSA的路由器,则称R为LSA的源路由器。
2.3具体的攻击检测流程如下:
2.3.1最大年龄攻击检测流程:
2.3.1.1路由器R收到了一个LSA报文,进入2.3.1.2;
2.3.1.2判断收到的LSA的age字段的值是否为MaxAge;若否,则不做处理;若是,则进入2.3.1.3;
2.3.1.3判断LSA报文的序列号是否为最大序列号;若否则进入2.3.1.4;若是则进入2.3.1.5;
2.3.1.4判断模块的缓存中是否有该LSA的实体;若有,则表明受到攻击,作出相应控制;若无,则在模块缓存中记录该LSA实体,并记录时间,之后按正常流程走;
2.3.1.5判断该LSA是否为AS-external-LSA或Summary-LSA;若是,则进2.3.1.6;若否,则进入2.3.1.7;
2.3.1.6判断模块缓存中是否有该LSA实体;若有,则表明受到攻击,做出相应控制;若无,则将该LSA实体存入模块缓存中,并记录时间,之后按正常流程走;
2.3.1.7判断该LSA是否为Network-LSA;若是,则进入2.3.1.8;若否,则进2.3.1.9;
2.3.1.8判断生成该LSA的路由器R是否仍是DR;若是,则表明受到攻击,做出相应控制;若否,则进入2.3.1.9;
2.3.1.9判断模块缓存中是否有该LSA实体;若有,则表明受到攻击;若无,则存入模块缓存并记录时间,之后按正常流程走。
2.3.2序列号+1攻击检测流程:
2.3.2.1路由器R接收到LSA,记录时间收到LSA的时间Time_rev;进入2.3.2.2;
2.3.2.2判断收到的LSA的序列号,是否等于链路数据库中该LSA实体的序列号+1;若否,则按正常流程走,若是,则进入2.3.2.3;
2.3.2.3判断路由器R是否为该LSA的源路由器;若是,则进2.3.2.4;若否,则进2.3.2.6;
2.3.2.4判断缓存模块中是否存在该LSA的实体;若否,则将该LSA存入缓存模块,并记录时间Time_mod,之后按正常流程走;若是,则进入2.3.2.5;
2.3.2.5判断Time_rev-Time_mod的差值是否大于等于LSRefreshTime;若是,则更新Time_mod,之后按正常流程走;若否,则表明受到攻击;
2.3.2.6判断模块缓存中是否存在该LSA实体;若是,则表明受到攻击;若否,则将该LSA存入模块缓存,并记录Time_mod。
2.3.3最大序列号攻击检测:
2.3.3.1路由器R接收到LSA,记录Time_rev;进入2.3.3.2;
2.3.3.2判断LSA的序列号seq是否等于MaxSeq;若否,则按正常流程走;若是,则进入2.3.3.3;
2.3.3.3判断age是否等于MaxAge;若否,则表明受到攻击;若是,则进2.3.3.4;
2.3.3.4判断模块缓存中是否存在该LSA实体;若否,则将该LSA存入模块缓存,并记录Time_mod;若是,则进入2.3.3.5;
2.3.3.5判断Time_rev-Time_mod的差值是否大于等于LSRefreshTime;若是,则更像Time_mod;若否,则表明受到攻击。
3.按照行为状态监控模块,对路由器的状态和行为进行监控;
为OSPF协议的邻居状态建立一个状态转换的六元组模型M=(Q,Σ,δ,q0,F,C);其中:Q:OSPF邻居状态的有穷集合;
Q={Down,Init,2-way,ExStart,ExChange,Loading,Full}.
参照RFC2328,将状态按处理过程排序;不能工作的状态排在最前面,称为低状态,经过一系列中间状态达到完全工作,状态层次逐渐升高;则状态排序从低到高为:
Down<Init<2-way<ExStart<ExChange<Loading<Full.
Σ:触发状态转移的事件与消息集合;
Σ={HellowReceived,2-way-Received,1-way-Received,Adj-yes,
Adj-no,NegotiationDone,ExChangeDone,LoadingDone,
SeqNumberMismatch,KillNeighbor}
事件说明:
HellowReceived:从邻居接收到一个Hello包;
2-way-Received:两台邻居路由器之间达到双向通讯;这表明在邻居的Hello包中包含了路由器自身;
1-way-Received:从邻居接收到Hello包,但并不包含路由器自身;这说明与该邻居的通讯不再是双向;
Adj-yes:需要形成邻接;
Adj-no:不需要形成邻接;
NegotiationDone:已经协商好主从关系,并交换了DD序号;这一信号表示开始收发DD包;其中,DD包是指数据库描述报文(Database Description);DD序号是DD包的序列号;
ExChangeDone:两台路由器都已成功交换了完整的DD包;每台路由器也知道其连接状态数据库中过期的部分;
LoadingDone:连接状态更新已经接收了数据库中所有需要更新的部分;这是由数据库交换过程完成后,连接状态请求列表为空而表明的;
SeqNumberMismatch:接收到的DD包出现下列情况:
a)含有错误的DD序号;
b)错误地设定了Init位;
c)与上一个接收到的DD包有着不同的选项域;
这些情况都说明,在建立邻接的过程中出现了错误;其中,选项域指的是DD包中的选项字段;包括Init位(I-bit):初始标志位,在第一个DD包中被设定为1;M位(M-bit):当后面还有更多的DD包时设定为1;MS位(MS-bit):主从位,在数据库交换过程中的主机设定为1,从机则为0;
KillNeighbor:这说明现在不可能与该邻居有任何通讯,强制转换邻居状态到Down;
δ:状态转换函数;
定义当前状态为Si(Si∈Q),下一状态为Sj(Sj∈Q),触发状态转换的事件为e(e∈Σ),模型判断该次状态转换结果的性质为Res(Res∈C),n为发生该类型状态转换的次数,则状态转换函数为:
f(Si,e)=Sj,Res;
q0:初始状态:Init
F:终止状态:F={Full,Down}
C:经过一次状态转换,监控模型得到的结果;C={Normal,Abnormal,
Danger};当得到的结果为Abnormal时,记录该类转换发生的次数n,若n>阈值N,阈值N为人为设定值,则发出警报和度量请求,触发动态度量模块;当得到的结果为Danger时,直接发出警报和度量请求。
本发明从不同的角度和方面实现了OSPF协议的异常和攻击检测。创新点在于:
1)采用动态度量模块,对路由器的进程数和关键进程的代码段进行度量,防止入侵路由器后对操作系统的恶意篡改。
2)外部攻击检测模块,针对不同的攻击,专门设计不同的检测流程来对其攻击行为进行检测,大大降低了以往采用数字签名方式时的计算开销。
3)内部监控模块,利用状态机模型,对运行OSPF协议时,路由器内部产生的异常状态和行为进行监控。当监控到频繁发生的异常状态行为或危险的状态行为时,触发动态度量模块对路由器进行动态度量,实现了两个模块的联动,进一步保证路由器的可信和安全。
附图说明
图1是最大年龄攻击的检测流程图。
图2是序列号+1攻击的检测流程图。
图3是最大序列号攻击的检测流程图。
图4是内部监控模块的状态转换图。
具体实施方式
下面结合附图1、2、3、4具体说明本发明的实现方法及步骤。
1.利用处于路由器内部的动态度量模块,对路由器上运行的所有进程的数量与关键进程的代码段,进行动态度量。路由器从启动到正常运行发挥路由功能之后,若不进行人为的操作和干预,则进程的数量不变。若动态度量模块检测到路由器运行的进程数发生变化,或者关键进程的代码段度量值发生变化,则会做出相应的控制。
1.1动态度量的度量时机:
1.1.1路由器启动完毕,进行第一次进程数和关键进程代码段度量;
1.1.2第一次度量完成之后,可以根据设定的时间,如每隔1小时度量一次;
1.1.3通过特殊事件触发度量;特殊事件包括外部攻击检测模块报警、内部状态行为监控模块报警;
1.2动态度量的度量步骤:
1.2.1计时器或事件触发度量请求,度量模块接收度量请求;
1.2.2通过系统内核维护的进程列表,获得进程数以及OSPF协议进程、路由器管理进程等关键进程的进程描述符;
1.2.3通过进程描述符获得内存描述符,从而获得进程代码段内容;
1.2.4将代码段内容交由TPM模块进行度量,并将度量结果和预设在TPM中的PCR值进行比较;
1.2.5根据度量值的比对结果,若比对结果一致,不做处理;若结果不一致,则发出警报;
2.在路由器OSPF协议报文交互过程中,执行外部攻击检测模块,对常见的三种OSPF攻击手段进行检测。检测的方式为,在接收到协议报文后,该报文先进入模块。模块对报文中指定的关键字段,按设计好的流程进行检测。若根据检测流程判定为攻击行为,则放弃报文并发出警报。否则放行报文进入正常的协议处理流程;
2.1具体的攻击检测流程如下:
2.1.1最大年龄攻击检测流程:
2.1.1.1路由器R收到了一个LSA报文,进入2.1.1.2;
2.1.1.2判断收到的LSA的age字段的值是否为MaxAge;若否,则不做处理;若是,则进入2.1.1.3;
2.1.1.3判断LSA报文的序列号是否为最大序列号;若否则进入2.1.1.4;若是则进入2.1.1.5;
2.1.1.4判断模块的缓存中是否有该LSA的实体;若有,则表明受到攻击,作出相应控制;若无,则在模块缓存中记录该LSA实体,并记录时间,之后按正常流程走;
2.1.1.5判断该LSA是否为AS-external-LSA或Summary-LSA;若是,则进2.1.1.6;若否,则进入2.1.1.7;
2.1.1.6判断模块缓存中是否有该LSA实体;若有,则表明受到攻击,做出相应控制;若无,则将该LSA实体存入模块缓存中,并记录时间,之后按正常流程走;
2.1.1.7判断该LSA是否为Network-LSA;若是,则进入2.1.1.8;若否,则进2.1.1.9;
2.1.1.8判断生成该LSA的路由器R是否仍是DR;若是,则表明受到攻击,做出相应控制;若否,则进入2.1.1.9;
2.1.1.9判断模块缓存中是否有该LSA实体;若有,则表明受到攻击;若无,则存入模块缓存并记录时间,之后按正常流程走。
2.1.2序列号+1攻击检测流程:
2.1.2.1路由器R接收到LSA,记录时间收到LSA的时间Time_rev;进入2.1.2.2;
2.1.2.2判断收到的LSA的序列号,是否等于链路数据库中该LSA实体的序列号+1;若否,则按正常流程走,若是,则进入2.1.2.3;
2.1.2.3判断路由器R是否为该LSA的源路由器;若是,则进2.1.2.4;若否,则进2.1.2.6;
2.1.2.4判断缓存模块中是否存在该LSA的实体;若否,则将该LSA存入缓存模块,并记录时间Time_mod,之后按正常流程走;若是,则进入2.1.2.5;
2.1.2.5判断Time_rev-Time_mod的差值是否大于等于LSRefreshTime;若是,则更新Time_mod,之后按正常流程走;若否,则表明受到攻击;
2.1.2.6判断模块缓存中是否存在该LSA实体;若是,则表明受到攻击;若否,则将该LSA存入模块缓存,并记录Time_mod。
2.1.3最大序列号攻击检测:
2.1.3.1路由器R接收到LSA,记录Time_rev;进入2.1.3.2;
2.1.3.2判断LSA的序列号seq是否等于MaxSeq;若否,则按正常流程走;若是,则进入2.1.3.3;
2.1.3.3判断age是否等于MaxAge;若否,则表明受到攻击;若是,则进2.1.3.4;
2.1.3.4判断模块缓存中是否存在该LSA实体;若否,则将该LSA存入模块缓存,并记录Time_mod;若是,则进入2.1.3.5;
2.1.3.5判断Time_rev-Time_mod的差值是否大于等于LSRefreshTime;若是,则更像Time_mod;若否,则表明受到攻击。
3.按照行为状态监控模块,对路由器状态行为进行监控;
3.1为OSPF协议的邻居状态建立一个状态转换的六元组模型M=(Q,Σ,δ,q0,F,S)。
其中:
Q:OSPF邻居状态的有穷集合;
Q={Down,Init,2-way,ExStart,ExChange,Loading,Full}.
参照RFC2328,将状态按处理过程排序;不能工作的状态排在最前面,称为低状态,经过一系列中间状态达到完全工作,状态层次逐渐升高;则状态排序从低到高为:Down<Init<2-way<ExStart<ExChange<Loading<Full.
Σ:触发状态转移的事件与消息集合;
Σ={HellowReceived,2-way-Received,1-way-Received,Adj-yes,
Adj-no,NegotiationDone,ExChangeDone,LoadingDone,
SeqNumberMismatch,KillNeighbor}
事件说明:
HellowReceived:从邻居接收到一个Hello包;
2-way-Received:两台邻居路由器之间达到双向通讯;这表明在邻居的Hello包中包含了路由器自身;
1-way-Received:从邻居接收到Hello包,但并不包含路由器自身;这说明与该邻居的通讯不再是双向;
Adj-yes:需要形成邻接;
Adj-no:不需要形成邻接;
NegotiationDone:已经协商好主从关系,并交换了DD序号;这一信号表示开始收发DD包;其中,DD包是指数据库描述报文(Database Description);DD序号是DD包的序列号;
ExChangeDone:两台路由器都已成功交换了完整的DD包;每台路由器也知道其连接状态数据库中过期的部分;
LoadingDone:连接状态更新已经接收了数据库中所有需要更新的部分;这是由数据库交换过程完成后,连接状态请求列表为空而表明的;
SeqNumberMismatch:接收到的DD包出现下列情况:
a)含有错误的DD序号;
b)错误地设定了Init位;
c)与上一个接收到的DD包有着不同的选项域;
这些情况都说明,在建立邻接的过程中出现了错误;其中,选项域指的是DD包中的选项字段;包括Init位(I-bit):初始标志位,在第一个DD包中被设定为1;M位(M-bit):当后面还有更多的DD包时设定为1;MS位(MS-bit):主从位,在数据库交换过程中的主机设定为1,从机则为0;
KillNeighbor:这说明现在不可能与该邻居有任何通讯,强制转换邻居状态到Down;
δ:状态转换函数;
定义当前状态为Si(Si∈Q),下一状态为Sj(Sj∈Q),触发状态转换的事件为e(e∈Σ),模型判断该次状态转换结果的性质为Res(Res∈C),n为发生该类型状态转换的次数,则状态转换函数为:
f(Si,e)=Sj,Res;
q0:初始状态:Init
F:终止状态:F={Full,Down}
C:经过一次状态转换,监控模型得到的结果;C={Normal,Abnormal,
Danger};当得到的结果为Abnormal时,记录该类转换发生的次数n,若n>阈值N,阈值N为人为设定值,则发出警报和度量请求,触发动态度量模块;当得到的结果为Danger时,直接发出警报和度量请求。
3.2具体的状态转换过程说明
图4记录了正常情况下状态从低到高的转换过程,描述如下:
1)f(Down,HellowReceived)=Init,normal;当在Down状态时,收到了邻居发来的Hellow包,就会触发HellowReceived事件,因此状态转换为Init;这是一次正常的转换;
2)f(Init,2_way_Received && Adj_no)=2-way,normal;当在Init状态时,收到邻居Hellow包中包含自身,或者收到邻接的DD包时,都会触发2-way-Received事件。触发事件后,需要判断是否需要和邻居建立邻接关系,经过判断后判定不需要建立邻接,则状态转换为2-way。这是一次正常的转换。
是否建立邻接关系的判断条件为,当满足下列至少一个条件时在双向邻居间建立邻接:
I)下层网络的类型为点对点;
II)下层网络的类型为点对多点;
III)下层网络的类型为虚拟通道;
IV)路由器自身为指定路由器;
V)路由器自身为备份指定路由器;
VI)邻居路由器为指定路由器;
VII)邻居路由器为备份指定路由器;
3)f(Init,2_way_Received&&Adj_no)=ExStart,normal;当在Init状态时,收到邻居Hellow包中包含自身或者收到邻接的DD包从而触发2-way-Received事件后,经判断选择建立邻接,则状态转为ExStart;这是一次正常的转换;
4)f(2-way,Adj_yes)=ExStart,normal;当在2-way状态,定期的判断是否需要建立邻接。若判断后得知需要建立邻接,则触发Adj_yes事件,状态转换为ExStart,这是一次正常的转换;
5)f(2-way,Adj_no)=2-way,normal;在2-way状态时,定期的判断是否需要建立邻接,若判断得知不需要建立邻接,则触发Adj_no事件,状态不变,仍然是2-way状态。这是一次正常的转换;
6)f(ExStart,NegotiationDone)=ExChange,normal;当ExStart状态时,和邻接路由器进行DD包的交互。交互完成后,触发ExChange事件,则状态转换为ExChange,这是一次正常的转换;
7)f(ExStart,Adj_yes)=ExStart,normal;当ExStart状态时,经过判断需要保持邻接,则触发Adj_yes事件,状态不变,这是一次正常的转换;
8)f(ExChange,ExChangeDone)=Loading,normal;当ExChange状态时,完成一次LSR包和LSU包的同步,触发ExChangeDone事件,并且检测邻接连接状态请求列表,发现列表非空,则继续进行LSR请求,状态转换为Loading,这是一次正常的转换;
9)f(ExChange,ExChangeDone)=Full,normal;在ExChange状态时,完成一次LSR包和LSU包的同步,触发ExChangeDone事件,发现邻居连接状态请求列表为空,则表明同步完成,状态转换为Full,这是一次正常的转换;
10)f(Loading,LoadingDone)=Full,normal;在Loading状态时,发现邻居连接状态请求列表为空,同步完成,状态转换为Full,这是一次正常的转换;
为了便于理解和简洁,图4只记录了正常的状态从低到高的转换过程。而更多的情况为状态从高到低的异常或危险的转换,具体转换如下所述:
11)f(Si>=ExStart,Adj_no)=2-way,abnormal;当状态不低于ExStart时,发现不再需要保持邻接状态,由Adj_no事件触发,状态转换为2-way。在已经建立邻接的情况下拆除邻接,只会发生在DR或BDR发生变动的情况下。OSPF协议的DR和BDR发生变动,是一个重大事件,因此,该次状态转换是一次异常的转换,计数器记录发生该类转换的次数n1;若n1>=N1,则发出警报,并触发动态度量请求;其中N1为人为设定的经验值,例如1小时5次;
12)f(Si>=ExChange,SeqNumberMismatch)=ExStart,abnormal;当状态不低于ExChange时,在进行DD包交互时发生错误,触发SeqNumberMismatch事件,状态转换为ExStart。
在下列情况下可能会接收到错误的DD包:a)含有错误的DD序号;b)错误地设定了Init位;c)与上一个接收到的DD包有着不同的选项域;
这些情况都说明,在建立邻接的过程中出现了错误。因此,该次状态转换是一次异常的转换,计数器记录发生该类转换的次数n2;若n2>=N2,则发出警报,并触发动态度量请求;其中N2为人为设定的经验值,例如1小时5次。
13)f(Si>=ExChange,BadLSReq)=ExStart,abnormal;当状态不低于ExChange时,接收到的连接状态请求中,包含有并不存在于数据库中的LSA。这说明在数据库交换过程中出现了错误,触发BadLSReq事件,状态转换为ExStart。因此,该次状态转换是一次异常的转换,计数器记录发生该类转换的次数n3;若n3>=N3,则发出警报,并触发动态度量请求;其中N3为人为设定的经验值,例如1小时5次;
14)f(Si>=2-way,1-way-Received)=Init,Danger;当状态不低于2-way时,收到邻居发来的Hellow包不再包含自身时,触发1-way-Received事件,状态转换为Init。当收到邻居的Hellow包中不再包含自身时,极有可能是人为清空了邻居路由器的邻居列表。
因此,该次状态转换是一次危险转换,直接发出警报,并触发动态度量请求;
15)f(Si>=Init,KillNbr)=Down,Danger;当状态不低于Init时,KillNbr事件触发,状态转换为Down。KillNbr事件的触发需要从下层协议传来信号,极有可能是人为的设置或操作系统异常。因此,该次状态转换是一次危险转换,直接发出警报,并触发动态度量请求;
16)f(Si>=Init,LLDonw)=Down,Danger;当状态不低于Init时,LLDown事件触发,状态转换为Down。LLDonw事件的触发需要从下层协议传来信号,极有可能是人为的设置或操作系统异常。因此,该次状态转换是一次危险转换,直接发出警报,并触发动态度量请求;
17)f(Si>=Init,InactivityTimer)=Down,Danger;当状态不低于Init时,长期没有收到来自邻居的Hellow包,非活跃计时器被激活,触发InactivityTimer事件,状态转换为Down。长期没有收到Hellow包,有可能是物理链路断开或OSPF协议被停止。因此,该次状态转换是一次危险转换,直接发出警报,并触发动态度量请求。
Claims (1)
1.可信路由器的针对OSPF协议的异常和攻击检测方法,其特征在于包含以下步骤:
1).利用处于路由器内部的动态度量模块,对路由器上运行的所有进程的数量与关键进程的代码段,进行动态度量;关键进程包括路由器的管理进程和OSPF路由协议进程;路由器从启动到稳定的正常运行发挥路由功能之后,若不进行人为的操作和干预,则操作系统中进程的数量不变;若动态度量模块检测到路由器运行的进程数量发生变化,或者关键进程的代码段度量值发生变化,则会发出警报并记录当前状况;动态度量方式描述如下:
1.1动态度量的度量时机:
1.1.1路由器启动完毕,进行第一次进程数和关键进程代码段度量;
1.1.2第一次度量完成之后,每隔设定的时间T度量一次;
1.1.3通过特殊事件触发度量;特殊事件包括外部攻击检测模块报警和内部状态行为监控模块报警;
1.2动态度量的度量步骤:
1.2.1计时器或事件触发度量请求,度量模块接收度量请求;
1.2.2通过系统内核维护的进程列表,获得进程数以及包括OSPF协议进程和路由器管理进程的进程描述符;
1.2.3通过进程描述符获得内存描述符,从而获得进程代码段内容;
1.2.4将代码段内容交由TPM模块进行度量,并将度量结果和预设在TPM中的PCR值进行比较;TPM:Trusted Platform Module,是可信平台模块;PCR:是TPM中的平台配置寄存器;
1.2.5根据度量值的比对结果,若比对结果一致,不做处理;若结果不一致,则发出警报;
2).在路由器OSPF协议报文交互过程中,执行外部攻击检测模块,对常见的三种OSPF攻击手段进行检测;
2.1常见的三种攻击方式为:
2.1.1最大年龄攻击:将OSPF路由协议的LSA报文中的age字段,恶意设定为最大值,来删除LSA报文实体,以达到攻击目的;
2.1.2序列号+1攻击:假定有一个LSA报文,报文中的序列号字段的值为N;若恶意的将N+1,会导致生成该LSA的路由器又重新生成一个序列号为N+2的新LSA;若重复该攻击,会使路由器不停的生成LSA,造成链路状态异常,达到攻击目的;
2.1.3最大序列号攻击:将序列号人为设定为最大值;因为序列号值越大,则表明LSA实体越新;所以若网络中存在序列号的值为最大值的时候,该LSA正常的实体都将被丢弃,达到攻击的目的;
攻击的检测的方式为,在接收到协议报文后,该报文先进入模块;模块对报文中指定的关键字段,按设计好的流程进行检测;若根据检测流程判定为攻击行为,则丢弃报文并发出警报;否则放行报文进入正常的协议处理流程;
2.2术语解释:
LSA:Link state advertisement,连接状态宣告,OSPF协议报文;
LSU:Link State Update,连接状态更新,OSPF协议报文;
AS-external-LSA:LSA报文的一种,描述到达AS外部目标的路径;
AS:Autonomous System,自治系统;
Summary-LSA:LSA报文的一种,描述了一条在区域外,但在AS内的路径;
Network-LSA:LSA报文的一种,由DR产生,列出了当前接入该网络的路由器列表;
DR:Designated Router,指定路由器;
AR:Advertising Router,宣告路由器,表明当前LSA是由AR产生的;
Seq:LSA的序列号字段;
DB_Seq:链路数据库中当前LSA实体的序列号;
MaxSeq:LSA序列号的最大值:
age字段:报文中代表报文年龄的字段;
MaxAge:age字段理论上能够达到的最大值;
LSRefreshTime:生成一个LSA的最大间隔时间;
Time_rev:路由器第一次收到该LSA实例时的age字段的值;
Time_mod:将LSA实体存入模块缓存时的时间;
源路由器:相对于收到的LSA的概念,如果收到LSA的路由器R恰好是生成该LSA的路由器,则称R为LSA的源路由器;
2.3具体的攻击检测流程如下:
2.3.1最大年龄攻击检测流程:
2.3.1.1路由器R收到了一个LSA报文,进入2.3.1.2;
2.3.1.2判断收到的LSA的age字段的值是否为MaxAge;若否,则不做处理;若是,则进入2.3.1.3;
2.3.1.3判断LSA报文的序列号是否为最大序列号;若否则进入2.3.1.4;若是则进入2.3.1.5;
2.3.1.4判断模块的缓存中是否有该LSA的实体;若有,则表明受到攻击,作出相应控制;若无,则在模块缓存中记录该LSA实体,并记录时间,之后按正常流程走;
2.3.1.5判断该LSA是否为AS-external-LSA或Summary-LSA;若是,则进2.3.1.6;若否,则进入2.3.1.7;
2.3.1.6判断模块缓存中是否有该LSA实体;若有,则表明受到攻击,做出相应控制;若无,则将该LSA实体存入模块缓存中,并记录时间,之后按正常流程走;
2.3.1.7判断该LSA是否为Network-LSA;若是,则进入2.3.1.8;若否,则进2.3.1.9;
2.3.1.8判断生成该LSA的路由器R是否仍是DR;若是,则表明受到攻击,做出相应控制;若否,则进入2.3.1.9;
2.3.1.9判断模块缓存中是否有该LSA实体;若有,则表明受到攻击;若无,则存入模块缓存并记录时间,之后按正常流程走;
2.3.2序列号+1攻击检测流程:
2.3.2.1路由器R接收到LSA,记录时间收到LSA的时间Time_rev;进入2.3.2.2;
2.3.2.2.判断收到的LSA的序列号,是否等于链路数据库中该LSA实体的序列号+1;若否,则按正常流程走,若是,则进入2.3.2.3;
2.3.2.3判断路由器R是否为该LSA的源路由器;若是,则进2.3.2.4;若否,则进2.3.2.6;
2.3.2.4判断缓存模块中是否存在该LSA的实体;若否,则将该LSA存入缓存模块,并记录时间Time_mod,之后按正常流程走;若是,则进入2.3.2.5;
2.3.2.5判断Time_rev-Time_mod的差值是否大于等于LSRefreshTime;若是,则更新Time_mod,之后按正常流程走;若否,则表明受到攻击;
2.3.2.6判断模块缓存中是否存在该LSA实体;若是,则表明受到攻击;若否,则将该LSA存入模块缓存,并记录Time_mod;
2.3.3最大序列号攻击检测:
2.3.3.1路由器R接收到LSA,记录Time_rev;进入2.3.3.2;
2.3.3.2判断LSA的序列号seq是否等于MaxSeq;若否,则按正常流程走;若是,则进入2.3.3.3;
2.3.3.3判断age是否等于MaxAge;若否,则表明受到攻击;若是,则进2.3.3.4;
2.3.3.4判断模块缓存中是否存在该LSA实体;若否,则将该LSA存入模块缓存,并记录Time_mod;若是,则进入2.3.3.5;
2.3.3.5判断Time_rev-Time_mod的差值是否大于等于LSRefreshTime;若是,则更像Time_mod;若否,则表明受到攻击;
3).按照行为状态监控模块,对路由器的状态和行为进行监控;
为OSPF协议的邻居状态建立一个状态转换的六元组模型M=(Q,Σ,δ,q0,F,C);其中:
Q:OSPF邻居状态的有穷集合;
Q={Down,Init,2-way,ExStart,ExChange,Loading,Full}.
参照RFC2328,将状态按处理过程排序;不能工作的状态排在最前面,称为低状态,经过一系列中间状态达到完全工作,状态层次逐渐升高;则状态排序从低到高为:Down<Init<2-way<ExStart<ExChange<Loading<Full.
Σ:触发状态转移的事件与消息集合;
Σ={HellowReceived,2-way-Received,1-way-Received,Adj-yes,
Adj-no,NegotiationDone,ExChangeDone,LoadingDone,
SeqNumberMismatch,KillNeighbor}
事件说明:
HellowReceived:从邻居接收到一个Hello包;
2-way-Received:两台邻居路由器之间达到双向通讯;这表明在邻居的Hello包中包含了路由器自身;
1-way-Received:从邻居接收到Hello包,但并不包含路由器自身;这说明与该邻居的通讯不再是双向;
Adj-yes:需要形成邻接;
Adj-no:不需要形成邻接;
NegotiationDone:已经协商好主从关系,并交换了DD序号;这一信号表示开始收发DD包;其中,DD包是指数据库描述报文(Database Description);DD序号是DD包的序列号;
ExChangeDone:两台路由器都已成功交换了完整的DD包;每台路由器也知道其连接状态数据库中过期的部分;
LoadingDone:连接状态更新已经接收了数据库中所有需要更新的部分;这是由数据库交换过程完成后,连接状态请求列表为空而表明的;
SeqNumberMismatch:接收到的DD包出现下列情况:
a)含有错误的DD序号;
b)错误地设定了Init位;
c)与上一个接收到的DD包有着不同的选项域;
这些情况都说明,在建立邻接的过程中出现了错误;其中,选项域指的是DD包中的选项字段;包括Init位(I-bit):初始标志位,在第一个DD包中被设定为1;M位(M-bit):当后面还有更多的DD包时设定为1;MS位(MS-bit):主从位,在数据库交换过程中的主机设定为1,从机则为0;
KillNeighbor:这说明现在不可能与该邻居有任何通讯,强制转换邻居状态到Down;
δ:状态转换函数;
定义当前状态为Si(Si∈Q),下一状态为Sj(Sj∈Q),触发状态转换的事件为e(e∈Σ),模型判断该次状态转换结果的性质为Res(Res∈C),n为发生该类型状态转换的次数,则状态转换函数为:
f(Si,e)=Sj,Res;
q0:初始状态:Init
F:终止状态:F={Full,Down}
C:经过一次状态转换,监控模型得到的结果;C={Normal,Abnormal,
Danger};当得到的结果为Abnormal时,记录该类转换发生的次数n,若n>阈值N,阈值N为人为设定值,则发出警报和度量请求,触发动态度量模块;当得到的结果为Danger时,直接发出警报和度量请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310575258.XA CN103607346B (zh) | 2013-11-17 | 2013-11-17 | 可信路由器中ospf协议的异常和攻击检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310575258.XA CN103607346B (zh) | 2013-11-17 | 2013-11-17 | 可信路由器中ospf协议的异常和攻击检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103607346A true CN103607346A (zh) | 2014-02-26 |
CN103607346B CN103607346B (zh) | 2016-11-09 |
Family
ID=50125546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310575258.XA Active CN103607346B (zh) | 2013-11-17 | 2013-11-17 | 可信路由器中ospf协议的异常和攻击检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103607346B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105049354A (zh) * | 2015-08-14 | 2015-11-11 | 电子科技大学 | 一种基于ospf的可信路由方法 |
CN108023826A (zh) * | 2016-11-03 | 2018-05-11 | 镇江常畅光伏电子有限公司 | 一种具有散热功能的可测试路由器 |
CN108737273A (zh) * | 2018-05-10 | 2018-11-02 | 新华三技术有限公司 | 一种报文处理方法和装置 |
CN108881315A (zh) * | 2018-08-29 | 2018-11-23 | 南京航空航天大学 | 一种基于nfv的检测和恢复双lsa攻击ospf协议的方法及系统 |
CN110225015A (zh) * | 2019-05-30 | 2019-09-10 | 北京网太科技发展有限公司 | 基于开放式最短路径优先协议的安全防护方法及装置 |
CN111614518A (zh) * | 2020-05-20 | 2020-09-01 | 中国电子科技集团公司第五十四研究所 | 一种基于ospf协议的自动化安全测试方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103178991A (zh) * | 2011-12-21 | 2013-06-26 | 中国移动通信集团黑龙江有限公司 | 一种多网络关系分析的方法和系统 |
-
2013
- 2013-11-17 CN CN201310575258.XA patent/CN103607346B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103178991A (zh) * | 2011-12-21 | 2013-06-26 | 中国移动通信集团黑龙江有限公司 | 一种多网络关系分析的方法和系统 |
Non-Patent Citations (2)
Title |
---|
刘孜文 等: "基于可信计算的动态完整性度量架构", 《电子与信息学报》 * |
杨蓓 等: "基于可信计算的动态完整性度量模型", 《计算机工程》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105049354A (zh) * | 2015-08-14 | 2015-11-11 | 电子科技大学 | 一种基于ospf的可信路由方法 |
CN108023826A (zh) * | 2016-11-03 | 2018-05-11 | 镇江常畅光伏电子有限公司 | 一种具有散热功能的可测试路由器 |
CN108737273A (zh) * | 2018-05-10 | 2018-11-02 | 新华三技术有限公司 | 一种报文处理方法和装置 |
CN108737273B (zh) * | 2018-05-10 | 2021-03-23 | 新华三技术有限公司 | 一种报文处理方法和装置 |
CN108881315A (zh) * | 2018-08-29 | 2018-11-23 | 南京航空航天大学 | 一种基于nfv的检测和恢复双lsa攻击ospf协议的方法及系统 |
CN108881315B (zh) * | 2018-08-29 | 2021-04-27 | 南京航空航天大学 | 一种基于nfv的检测和恢复双lsa攻击ospf协议的方法及系统 |
CN110225015A (zh) * | 2019-05-30 | 2019-09-10 | 北京网太科技发展有限公司 | 基于开放式最短路径优先协议的安全防护方法及装置 |
CN111614518A (zh) * | 2020-05-20 | 2020-09-01 | 中国电子科技集团公司第五十四研究所 | 一种基于ospf协议的自动化安全测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103607346B (zh) | 2016-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103607346A (zh) | 可信路由器中ospf协议的异常和攻击检测方法 | |
Sengan et al. | Detection of false data cyber-attacks for the assessment of security in smart grid using deep learning | |
CN110199500B (zh) | 用于更新网络拓扑的网络知识的计算机实现的系统和方法 | |
US11924223B2 (en) | Technologies for proving packet transit through uncompromised nodes | |
Ibrahim et al. | Darpa: Device attestation resilient to physical attacks | |
Ruiz et al. | Fault management in event-driven wireless sensor networks | |
CN110249603B (zh) | 用于检测无线网络中的分布式攻击的方法和装置 | |
US11201818B2 (en) | System and method of providing policy selection in a network | |
CN108684038B (zh) | 基于雾计算和分层信任评价机制的隐藏数据攻击检测方法 | |
JP2019009772A (ja) | ネットワーク上でデバイスの情報を追跡するための、ブロックチェーンの使用 | |
CN102438026A (zh) | 工业控制网络安全防护方法及系统 | |
CN112261052B (zh) | 基于流规则分析的sdn数据平面异常行为检测方法及系统 | |
US20220166779A1 (en) | Trustworthiness evaluation of network devices | |
Signorini et al. | Advise: anomaly detection tool for blockchain systems | |
Wu et al. | Nodes Availability Analysis of NB‐IoT Based Heterogeneous Wireless Sensor Networks under Malware Infection | |
CN103686737B (zh) | 基于树形拓扑的无线传感网入侵容忍方法和系统 | |
CN103634166B (zh) | 一种设备存活检测方法及装置 | |
TW201946419A (zh) | 監視裝置、網路系統、拓樸管理方法及監視程式產品 | |
CN103139219B (zh) | 基于可信交换机的生成树协议的攻击检测方法 | |
Kumar et al. | Fault detection methodology in wireless sensor network | |
Alansari et al. | A comparison analysis of fault detection algorithms in wireless sensor networks | |
CN103916376A (zh) | 具攻击防护机制的云端系统及其防护方法 | |
CN111464393B (zh) | 一种区块链运行状态的监测方法、装置及存储介质 | |
CN111935085A (zh) | 工业控制网络异常网络行为的检测防护方法和系统 | |
CN116170110A (zh) | 面向时间敏感网络的时间同步架构、安全方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |