logo好方法网

一种防御软件定义网络中LLDP中继攻击的方法


技术摘要:
本发明公开了一种防御软件定义网络中LLDP中继攻击的方法,该方法包括以下步骤:记录每个端口和其连接的设备类型以及链路信息;记录LLDP帧延时并根据延时计算出当前的网络拥塞状态以及延时阈值;判断网络中新增链路的两个端口的设备类型是否都是HOST‑REMOVED,如果是则  全部
背景技术:
软件定义网络(SDN)是一种新型的网络范式,它赋予控制器及其应用以全局的网 络可视性和灵活的网络可编程性,实现了网络协议和应用的创新。SDN的核心优势之一就是 SDN控制器提供了许多SDN应用所依赖的整个网络可视性。 SDN控制器使用链路层发现协议(Link  Layer  Discovery  Protocol,LLDP)发现所 有交换机之间的链路,当交换机的端口开启时,交换机会首先发送该端口的Port_up消息至 控制器,控制器收到Port_up消息后为该端口生成LLDP并将生成的LLDP通过交换机相应的 端口发送出去,若控制器从另外一台交换机收到了该LLDP,那么控制器就会认为这两台交 换机之间存在一条链路。 由上述过程可以看出,即使是主机也可以收到控制器所发的LLDP,因此攻击者可 以通过两台主机中继各自收到LLDP在网络中伪造一条虚假链路。 目前防御LLDP中继攻击的方法有:1、一种软件定义网络的拓扑保护方法;2、一种 拓扑污染攻击防御方法和系统;3、TopoGuard 。简单介绍如下: 现有技术一:一种软件定义网络的拓扑保护方法 原理:初始化并维护每一个存活交换机端口的端口信息;根据收集到的Packet-in 消息,进行主机状态检测,然后根据主机状态检测结果及所维护的端口信息对LLDP报文进 行分类;针对不同类型的LLDP报文,采用相应的攻击检测方法进行攻击检测;若检测到攻击 报文,则将攻击报文的报文规则实时记录在控制器的过滤规则中,从而通过报文规则过滤 的方式实现攻击防御;持续收集数据平面的Packet-in消息并根据收集到的Packet-in消息 更新所维护的端口信息,同时重复执行攻击检测和防御的步骤。 缺点:该方法需要训练链路模型,使得所述链路检测模型学习到正常链路和异常 链路的流量特征,以此判断链路是正常链路还是异常链路,因此当攻击者通过LLDP中继攻 击伪造了一条链路后,只需要在这条链路上伪造出类似正常链路的流量特征即可绕过该防 御方法。 现有技术二:一种拓扑污染攻击防御方法和系统 原理:1)通过监听SDN控制器收到的Packet-In消息,记录网络中主机,判断该主机 是否是真实的主机,所述真实主机是指该主机使用本机的IP和MAC地址发送主机流量;2)通 过监听SDN控制器下发流表项信号和SDN交换机上传的流表项删除消息,维护每个交换机端 口流表项的记录表,并且通过该表判断某个端口的主机是否离开了网络,以防止流量劫持 攻击;3)通过给SDN控制器下发的LLDP帧加上随机字符串作为校验字段,并对SDN控制器收 到的LLDP帧进行检查,以防止利用LLDP帧来伪造链路的攻击。 5 CN 111585965 A 说 明 书 2/8 页 缺点:该方法在防御LLDP中继攻击时,攻击者只需要重启相应主机的网卡再发起 LLDP中继攻击即可绕过该方法成功伪造链路,因此无法完全防御LLDP中继攻击。 现有技术三:TopoGuard 原理:记录所有LLDP的延时,通过四分位法计算出延时阈值,再将每个LLDP延时与 延时阈值进行比较,若LLDP延时大于阈值,则该LLDP是通过LLDP中继的,若LLDP延时小于阈 值则该LLDP代表的链路是真实的。 缺点:由于TopoGuard 的延时阈值是通过所有LLDP的延时阈值计算的,所以攻击 者只要想网络中注入数据包,缓慢增加链路延时即可导致控制器计算的LLDP延时阈值变 大,最终使得该延时阈值无法用来区分当前的LLDP是否是攻击这中继的。 综上所述现有的防御方法,要么依赖额外的训练数据,要么无法完全防御LLDP中 继攻击,要么本身存在逻辑漏洞导致攻击者依然可以实现LLDP中继攻击,适用场景有限。
技术实现要素:
本发明的目的是为了解决现有技术中的上述缺陷,提供一种防御软件定义网络中 LLDP中继攻击的方法,用以防御攻击者使用两台主机进行LLDP中继攻击,提高SDN控制器的 安全性。 本发明的目的可以通过采取如下技术方案达到: 一种防御软件定义网络中LLDP中继攻击的方法,所述方法包括下列步骤: S1、在SDN控制器中记录每个端口和其连接的设备类型,记录链路信息; S2、在SDN控制器中记录LLDP帧延时,并根据延时计算出当前的网络拥塞状态以及 延时阈值; S3、判断网络中新增链路的两个端口的设备类型是否都是HOST-REMOVED,如果不 是则认为不满足LLDP中继攻击条件,将该LLDP帧判定为正常,如果是则认为该链路满足 LLDP中继攻击条件,转入下一步骤对该LLDP帧进一步判断; S4、若满足LLDP中继攻击的条件,此时结合网络拥塞状态判断该LLDP帧延时是否 大于延时阈值,若大于延时阈值则判定为攻击并丢弃当前LLDP帧。 进一步地,所述步骤S1过程如下: 在SDN控制器中维护一张DeviceType表,以记录每个端口和其接连的设备类型;其 中,所述DeviceType表由PortID和Device组成,PortID使用数据路径DPID和端口号Port唯 一标识网络中交换机的端口,Device表示该端口连接的设备类型,该字段的值共有四种类 型:HOST、SWITCH、HOST-REMOVED、SWITCH-REMOVED,分别表示相应端口当前所连的设备为主 机、交换机、空、空,HOST-REMOVED代表上一次连接的设备为主机;SWITCH-REMOVED代表上一 次连接的设备为交换机; 在SDN控制器中维护一张Link表,以记录链路信息;其中,所述Link表由SrcPort和 DestPort组成,SrcPort使用DPID和Port标识链路的源端口,DestPort使用DPID和Port标识 链路的目的端口; 当SDN控制器收到代表某个端口关闭的Port_down消息时,需要同时更新 DeviceType表和Link表,当该端口存在于DeviceType表中时,若相应的Device字段为HOST 则修改为HOST-REMOVED,若该字段为SWITCH则修改为SWITCH-REMOVED,当该端口存在于 6 CN 111585965 A 说 明 书 3/8 页 Link表中时,则需要删除SrcPort等于该端口的所有记录以及DestPort等于该端口的所有 记录。 进一步地,所述LLDP帧延时的计算方法如下: 修改SDN控制器生成的LLDP帧,在LLDP帧中的Optional  TLV字段添加发送时间戳 TLV,其值为每个LLDP帧的发送时间,当SDN控制器收到LLDP帧时,用当前收到的时间减去发 送时间得到每个LLDP帧的传输延时。 进一步地,所述步骤S2过程如下: 在SDN控制器中设置大小为50的延时队列,用以记录最新的50个LLDP帧的延时时 间; 在SDN控制器中设置初始值为0的Entropy_before、Entropy_current、NetState、 Threshold,分别表示上一组延时队列的信息熵、当前延时队列的信息熵、当前网络的拥塞 状态、延时阈值; 每当延时队列满时,首先将Entropy_current赋值给Entropy_before,接着统计当 前延时队列中每个延时值出现的概率Pi,若延时值重复则只统计一次,因此i=1,2,……, m,0<m≤50,其中Pi=Ni/50,Ni为第i个延时在当前延时队列中出现的次数,再根据Pi计算 出延时队列的信息熵H,其中 Pi为第i个延时在当前延时队列中出 现的概率,最后将H值赋值给Entropy_current; 当Entropy_current更新后,比较Entropy_before与Entropy_current的大小,若 出现熵增,即Entropy_before<Entropy_current则NetState值 1,若没有出现熵增,即 Entropy_before≥Entropy_current则NetState值-1; 当NetState更新后,若此时Entropy_before≥Entropy_current且NetState≤0, 则计算当前延时队列的平均值,并将该值乘以3后赋值给延时阈值Threshold,否则不更新 延时阈值Threshold。 进一步地,所述步骤S3过程如下: 当SDN控制器收到一个Packet_in消息时,首先检查该Packet_in消息封装的消息 类型,若封装的不是LLDP帧则根据Packet_in消息解析出交换机的接收端口Port,此时在 DeviceType表中查找LLDP帧记录,若在DeviceType表中未查找到相应的记录则根据Port创 建该记录,并将相应的Device字段设为HOST,若在DeviceType表中找到相应的记录,则无需 更新DeviceType表; 若Packet_in消息封装的是LLDP帧时,则从Packet_in消息中取出链路信息,即链 路源端口SrcPort和目的端口DestPort,然后判断该链路信息是否已存在于Link表中,若存 在则代表该链路不是新增链路,此时计算得到该LLDP帧的延时值,并将该延时值交付延时 队列,若该链路信息在Link表中不存在,那么判定该链路是一条新增链路,继续判断链路源 端口SrcPort和目的端口DestPort在DeviceType表中的记录; 若链路源端口SrcPort和目的端口DestPort在DeviceType表中都有记录,且相应 的Device字段都为HOST,那么直接丢弃该包并发出警报:“该链路是通过LLDP中继攻击伪造 的”;若链路源端口SrcPort和目的端口DestPort在DeviceType表中都有记录,且都是HOST- REMOVED,此时该新增链路满足了LLDP中继攻击发起的条件,需要结合网络拥塞状态判断该 LLDP延时是否正常; 7 CN 111585965 A 说 明 书 4/8 页 若链路源端口SrcPort和目的端口DestPort不满足上述的两种情况,此时判断该 链路不是LLDP中继攻击伪造的,使用该LLDP帧的延时更新延时队列,在Link表中添加源端 口为SrcPort、目的端口为DestPort的链路,将DeviceType表中PortID分别为SrcPort和 DestPort的两条记录的Device字段值设为SWITCH,即SrcPort和DestPort两个端口所连的 设备为交换机,若在DeviceType表中没有相关记录则创建相应的记录,并将Device字段值 设为SWITCH。 进一步地,所述步骤S4过程如下: 首先检查NetState值,若该值大于0则丢弃当前的LLDP帧并发出警报:当前网络拥 塞,不允许添加满足LLDP攻击条件的链路; 若NetState值小于等于0,比较当前LLDP帧的延时与延时阈值Threshold,若当前 LLDP帧延时大于延时阈值Threshold则丢弃当前LLDP帧,并发出警报:“该链路是通过LLDP 中继攻击伪造的”;若当前LLDP帧延时小于等于延时阈值Threshold,则该新增链路一定为 真,使用该LLDP帧的延时更新延时队列,在Link表中添加源端口为SrcPort、目的端口为 DestPort的链路,同时将DeviceType表中PortID分别为SrcPort和DestPort的两条记录的 Device字段值设为SWITCH,即SrcPort和DestPort两个端口所连的设备为交换机。 本发明相对于现有技术具有如下的优点及效果: 1、本发明在防御LLDP中继攻击时不依赖第三方安全性,比如在现有技术“一种软 件定义网络的拓扑保护方法”中其安全性依赖额外的训练集是否完善,训练集越完善则其 方法越安全,但本发明不依赖第三方的安全性,而是充分利用了SDN自身的特性实现LLDP中 继攻击的防御; 2、本发明防御更加全面,比如现有技术“一种拓扑污染攻击防御方法和系统”中攻 击者可以通过重启网卡的方式来实现LLDP中继攻击,但在本发明中会被有效防御; 3、本发明没有引入新的安全漏洞,比如现有技术“TopoGuard ”中,TopoGuard 对 每个LLDP的延时都进行了校验,攻击者可以通过向网络中恶意注入数据包提高网络延时的 方式让控制器无法识别真实的链路,但本发明没有引入这种新漏洞。 附图说明 图1是本发明实施例提供的一种防御软件定义网络中LLDP中继攻击的方法组成示 意图; 图2是本发明实施例提供的一种在LLDP中添加额外发送时间戳TLV的结构组成示 意图; 图3是本发明实施例提供的一种防御软件定义网络中LLDP中继攻击的流程图。
下载此资料需消耗2积分,
分享到:
收藏