一种基于SDN架构的BGP路由可信验证方法与流程

文档序号:11148041阅读:354来源:国知局
一种基于SDN架构的BGP路由可信验证方法与制造工艺

本发明主要涉及到网络安全领域,特指一种基于SDN(Software Defined Network,软件定义网络)架构的BGP(Border Gateway Protocol,边界网关协议)路由可信验证方法。



背景技术:

域间路由安全对于整个互联网的安全具有重要的意义。增强域间路由安全的关键之一就是提高域间路由协议的安全性。BGP协议作为当前唯一的域间路由协议,其安全性是整个Internet路由系统安全的关键。而BGP路由是否可信又是保证BGP协议安全的基础,然而在BGP设计之初,并没有充分考虑可信路由问题,只有一些简单的认证机制保证安全。在目前复杂的网络环境下,这种简单的认证机制既不能确保路由信息的可靠性,也不能满足可信路由的需求。

BGP路由可信的核心问题就是确保信息发布的可靠性,其中最重要的就是源地址信息和路径属性,至今提出的多种BGP路由可信方法,多数都采用基于信息认证的数字签名认证方法,包括对源地址签名、路径属性签名、路由策略签名来保证信息的安全可信。这种方法存在以下不足:在数字签名认证方法中,要求每台设备都有公钥和私钥两种密钥,密钥产生、分配、维护工作繁琐,密钥系统难以部署,开销很大;而随着网络规模增大,网络设备成指数级增长,大大增加了密钥系统的部署管理难度,降低了系统的整体性价比。因此,数字签名认证方法代价太大,难于部署。

另一种常见的保证BGP路由可信的方法是采用BGP路由检测系统检测路由异常,这种方法存在以下不足:1、已有的路由安全监测系统只提供异常发现和报警服务,没有阻断异常功能,即没有形成自动的反馈控制。与此同时,在监测异常时,需要参考已有异常类型知识库确定系统是否存在异常,这种方法依赖于知识库的准确性和完整性,且只能检测异常,没有自动反馈机制。2、已有的路由安全监测系统只有在网络应用所需服务得不到保证、网络状态出现波动的情况下才能检测出异常,这种被动异常监测不具备很好的实时性和前瞻性,难以满足目前网络安全的实时性需求。3、已有的路由安全监测系统种类繁多、各成体系,系统之间互通性差,难以兼容。且系统大多只向后兼容,不具备向前兼容的特性。



技术实现要素:

本发明要解决的技术问题就在于:针对现有技术存在的问题,本发明提供一种基于SDN架构的BGP路由可信验证方法,该方法能够降低部署开销、提高异常检测性能和实时性、闭环控制阻断异常、向前兼容高可扩展、使系统整体性价比大幅提升。

为解决上述技术问题,本发明采用以下技术方案:

一种基于SDN架构的BGP路由可信验证方法,实施步骤如下:

1.一种基于SDN架构的BGP路由可信验证方法,其特征在于,实施步骤如下:

第一步,构建基于SDN架构的BGP路由可信验证环境,BGP路由可信验证环境包括:为每台路由器部署的一个代理,以及部署在客户端的集中控制点;代理负责与BGP协议进程交互,读写BGP邻居信息表;集中控制点是一个软件模块,负责使用网络配置协议NETCONF周期性地与代理交互,获取管辖范围内所有路由器的BGP邻居信息表,生成邻居信息数据库;

第二步、集中控制点采集BGP邻居信息,将BGP邻居信息表建模得到YANG模型;

第三步、集中控制点集中检测异常,验证BGP路由是否可信,如果BGP路由可信,则结束;否则,BGP路由不可信,进入第四步;

第四步、集中控制点生成阻断异常的安全策略,确保BGP路由可信;

第五步、集中控制点下发安全策略阻断异常路由;

第六步、集中控制点验证异常路由是否被阻断,方法是:安全路由策略下发成功后,代理再次读取BGP邻居信息表,并通过NETCONF协议发送给集中控制点,转第三步。

作为本发明的进一步改进,所述第二步集中控制点采集BGP邻居信息,将BGP邻居信息表建模得到YANG模型,具体流程为:

2.1使用YANG数据建模语言对BGP邻居信息表进行建模,得到YANG模型,包括以下步骤:

2.1.1定义邻居为一个容器节点聚集所有的邻居信息;

2.1.2定义邻居表中每一行的条目为一个列节点,并用邻居ID唯一标识;

2.1.3定义条目中的每个属性为一个叶子节点;

2.2集中控制点向代理发送配置请求,请求获取BGP邻居信息表,包括以下步骤:

2.2.1集中控制点收到请求BGP邻居信息的命令后,自动生成XML格式的配置请求;

2.2.2集中控制点通过NETCONF协议将配置请求发往代理;

2.3代理响应集中控制点的请求,将邻居信息表发送给集中控制点,包括以下步骤:

2.3.1代理收到集中控制点的配置请求后,通过对BGP协议进程进行读操作,获取BGP邻居信息表;

2.3.2代理将BGP邻居信息表用XML进行编码,然后通过NETCONF协议发往集中控制点。

所述第三步集中控制点集中检测异常,验证BGP路由是否可信,具体流程为:

3.1集中控制点从代理收到XML编码的BGP邻居信息表后,从XML中解析出邻居信息,存储于邻居信息数据库中;

3.2集中控制点管辖范围内所有运行BGP的路由器的邻居信息都采集完成后,得到邻居信息数据库;然后,对比分析邻居信息数据库,判断互为邻居的路由器是否存在对方的邻居表中,验证BGP路由是否可信:如果互为邻居的路由器存在于对方的邻居表中,则BGP路由可信,结束;否则,此BGP路由不可信,进入第四步。

所述第四步集中控制点生成阻断异常的安全策略,具体流程为:

4.1集中控制点检测到某路由器的BGP邻居表中存在多余的邻居信息,则生成安全路由策略删除该邻居信息以阻断异常路由;

4.2集中控制点根据NETCONF协议规范以及第一步的YANG模型,将安全路由策略转换成XML编码的配置文件。

所述第五步集中控制点下发安全策略阻断异常路由,具体流程为:

5.1集中控制点生成XML编码的安全路由策略之后,通过标准的NETCONF协议将其发送给代理;

5.2代理收到安全路由策略之后,与BGP协议进程交互,通过对BGP邻居信息表进行写操作,执行安全路由策略,删除多余的邻居。

与现有技术相比,本发明的优点在于:

1、本发明在每台路由器上部署一个代理,代理自动采集路由信息、集中检测异常并下发安全路由策略阻断异常,这种集中闭环控制结构能够形成自动的反馈控制,确保路由安全可信。

2、本发明第三步集中控制点随时请求路由信息并进行异常检测,与传统的监测系统相比,具有更高的实时性。

3、本发明第三步在采集完BGP邻居信息表之后,对BGP邻居信息表进行对比分析判断,验证BGP是否可信。与传统的数字签名认证方法相比,大大提高了可信路由的验证效率;同时本发明只需要在每台路由器上部署一个代理,与传统的安全增强协议机制相比,大大降低了部署开销。

4、本发明采用NETCONF协议,提供认证、数据完整性、机密性和应答保护等机制确保BGP邻居信息安全传输;采用YANG数据建模语言,可以更好地描述数据之间的层次性和限制关系。同时NETCONF协议和YANG数据建模语言作为下一代网络管理的既定标准,使得本发明具有更好的通用性和可扩展性。

附图说明

图1是本发明方法的流程示意图;

图2是本发明具体应用时的系统结构示意图;

图3是本发明具体应用时的设计实现模块示意图;

图4是本发明YANG语言对BGP邻居建模示意图;

图5是本发明具体应用时的拓扑示意图;

图6是本发明具体应用时的配置示意图;

图7是本发明具体应用时节点伪造BGP路由时的邻居表示意图;

图8是本发明具体应用时节点异常阻断后的邻居表示意图;

图9是本发明具体应用时阻断异常的安全路由策略示意图。

具体实施方式

以下将结合说明书附图和具体实施案例对本发明做进一步详细说明。

如图1所示,本发明的一种基于SDN架构的BGP路由可信验证方法,其步骤为:

第一步,构建基于SDN架构的BGP路由可信验证环境,如图2所示,BGP路由可信验证环境包括:为每台路由器部署的一个代理,以及部署在客户端的集中控制点;代理负责与BGP协议进程交互,读写BGP邻居信息表;集中控制点是一个软件模块,负责使用网络配置协议NETCONF(Network Configuration Protocol,网络配置协议)周期性地与代理交互,获取管辖范围内所有路由器的BGP邻居信息表,生成邻居信息数据库;

第二步、集中控制点与代理交互,从BGP协议进程处获取BGP邻居信息,将BGP邻居信息表建模得到YANG模型,结合图3,包含以下步骤:

2.1使用YANG数据建模语言对BGP邻居信息表进行建模,得到YANG模型。YANG是一种用于对NETCONF协议操作的配置和管理数据进行建模的语言。它可以描述数据之间层次性和限制关系。YANG定义了数据模型以及NETCONF协议操作。如图4所示,在充分分析BGP邻居结构之后,BGP邻居信息表被形式化成YANG模型。定义邻居为一个容器节点(图4中“container bgp-neighbor”)聚集所有邻居信息。由于邻居包含很多条目,我们定义每个条目为一个列节点(图4中“list neighbor”),并用邻居ID(图4中“key neighbor”)唯一标识。考虑到每个条目又包含很多属性:邻居ID(图4中“leaf neighbor”)、版本号(图4中“leaf v”)、AS号(图4中“leaf as”),每个属性有一个值且没有孩子节点,我们用叶子节点(leaf)定义属性。

2.2集中控制点向代理发送配置请求,请求获取BGP邻居信息表。集中控制点是一个软件模块,包含邻居验证器、邻居信息数据库和邻居监测器三个组件,邻居验证器负责验证BGP是否可信,邻居监测器负责生成对应XML格式的邻居信息请求,邻居信息数据库采用文件方式存储XML中解析的邻居信息。邻居监测器按照YANG语言对BGP邻居信息建模的结果,生成对应XML格式的邻居信息请求,然后将XML编码于<rpc>消息体中,通过标准的NETCONF协议发送给代理。

2.3代理响应集中控制点的请求,将邻居信息表发送给集中控制点。代理是一个软件模块,包含邻居采集器和邻居发送器两个组件。邻居发送器响应集中控制点的请求,将该请求发送给邻居采集器,邻居采集器和BGP协议进程通信,读取BGP邻居信息表,保留数据原格式发送给邻居发送器。邻居发送器组件按照YANG语言对BGP邻居信息建模,将收到的邻居信息表转换成对应的XML格式。最后,邻居发送器将XML编码于<rpc-reply>消息体中,通过标准的NETCONF协议发送给集中控制点。图3中的双向数据流表示了集中控制点向代理请求邻居信息,以及代理与BGP协议进程交互后,将获取到的邻居信息发送给集中控制点的过程。

第三步、集中控制点集中检测异常,验证BGP路由是否可信,如果BGP路由可信,则结束;否则,BGP路由不可信,进入第四步;具体流程如下:

3.1集中控制点从代理收到XML编码的BGP邻居信息表后,从XML中解析出邻居信息,存储于邻居信息数据库中。集中控制点的邻居监测器组件收到代理的响应消息,从XML中解析出邻居信息,存储于邻居信息数据库中。邻居信息数据库采用文件存储方式,既方便读写,也可以作为日志供以后查询。

3.2集中控制点检测异常,验证BGP是否可信。当集中控制点管辖范围内运行BGP协议的路由器的邻居信息表都采集完成后,得到邻居信息数据库,邻居验证器以邻居信息数据库作为输入,验证BGP是否可信。方法是:集中控制点在采集完所有运行BGP协议的路由器的邻居信息表后,对比分析判断互为邻居的路由器是否存在对方的邻居表中,验证BGP路由是否可信,如果BGP路由可信,结束;否则,进入第四步。因为BGP要建立邻居表首先要建立TCP会话,然后建立BGP的邻居关系,进而会把邻居关系记录到邻居表中,即两台运行BGP协议的路由器A和路由器B,路由器A在路由器B的邻居表中,如果路由器B也在路由器A的邻居表中,则两台路由器的BGP路由可信;如果路由器B不在路由器A的邻居表中,则路由器A伪造了一条到路由器B的BGP路由,即路由器A的BGP路由不可信。

第四步、集中控制点生成阻断异常的安全策略,确保BGP路由可信,流程如下:

4.1集中控制点检测到某路由器的BGP邻居表中存在多余的邻居信息,则生成安全路由策略删除该邻居信息以阻断异常路由;

4.2集中控制点根据NETCONF协议规范以及第二步的YANG模型,将安全路由策略转换成XML编码的配置文件,删除多余的邻居。

第五步、集中控制点下发安全路由策略阻断异常路由,流程如下:

5.1集中控制点生成XML编码的安全路由策略之后,通过标准的NETCONF协议将其发送给代理;

5.2代理收到安全路由策略之后,与BGP协议进程交互,通过对BGP邻居信息表进行写操作,执行安全路由策略,删除多余的邻居。

第六步、集中控制点验证是否阻断异常,方法是:安全路由策略下发成功后,代理再次读取BGP邻居信息表,并通过NETCONF协议发送给集中控制点,转第三步。

采用本发明进行可信BGP路由验证与异常阻断的一个具体实施例如下:

系统配置:(1)硬件:DELL服务器一台(2)软件:Linux操作系统Red Hat和Ubuntu,VM VirtualBox软件,Quagga软件路由器。

第一步、搭建应用环境

本应用由七台路由器构成,依次命名为Victim、A、B、C、D、E和Dest。连接关系如图5所示。名字为Fake Dest的路由器实际不存在,它是当A被攻击并且其BGP路由不可信之后,由A指向的伪造路由器。从Victim指向Dest的带箭头实线表示在所有路由器都可信的情况下,由Victim到Dest的BGP路径。从Victim指向Fake Dest的带箭头实线表示A被攻击且其BGP路由不可信之后,由Victim到Dest的BGP路径。

集中控制点部署在Red Hat上。此外,我们用三步部署代理。首先,使用Oracle VMVirtualBox创建七个节点,每个节点上运行Ubuntu。然后,我们在每个节点上运行Quagga,并启动BGPD进程。最后,我们在每个节点上部署代理与BGPD和集中控制点交互。数据流从BGPD到代理到集中控制点,再从集中控制点到代理到BGPD,这种闭环控制结构能够实时检测和阻断异常路由。

第二步、伪造BGP路由

如图5所示,正常情况下,从Victim指向Dest的带箭头实线表示由Victim到Dest的BGP路径。为了将该数据流变成从Victim指向Fake Dest的带箭头实线,我们选择路由器A进行BGP路由伪造。首先配置A的接口Serial0/2IP地址为70.1.1.2,这和Dest的接口Serial0/2在同一个网段。然后将A的该接口加入到BGP区域中。各路由器的详细配置如图6所示。例如路由器A,配置路由器ID为2.2.2.2,所在的AS为AS200,有三个接口Serial 0/0、Serial 0/1和Serial 0/2,IP地址分别为10.1.1.3、20.1.1.2和70.1.1.2。

第三步、检测异常

集中控制点周期性的采集所有路由器的BGP邻居信息表进行对比。在某一时刻,我们发现Dest在A的BGP邻居信息表中,而Dest的邻居信息表中只有路由器C一个条目。结果如图7所示,路由器A中的邻居表第一项为Dest,而路由器Dest的邻居表中只有一项,即路由器C。此时我们认为路由器A伪造了一条到Dest的BGP路由。为了验证该推断,我们使用从Victim到Dest的Traceroute命令,发现数据流确实改变成了从Victim到Fake Dest。

第四步、阻断异常

为了阻断这次异常,我们决定将Dest从A的BGP邻居信息表中删除。对应的XML配置文件如图9所示,该配置文件定义的操作为将路由器ID为7.7.7.7的邻居从BGP邻居信息表中删除。使用标准的NETCONF协议下发该安全路由策略。然后我们检查路由器的BGP邻居信息表,发现Dest已不在A的表中,如图8所示,路由器A的邻居信息表中只剩下两项,已将Dest成功删除。此时我们认为A可信且网络恢复正常,结束。从Victim到Dest的Traceroute结果也验证了我们的推断。

以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1