本發(fā)明主要涉及到網(wǎng)絡(luò)安全領(lǐng)域,特指一種基于SDN(Software Defined Network,軟件定義網(wǎng)絡(luò))架構(gòu)的BGP(Border Gateway Protocol,邊界網(wǎng)關(guān)協(xié)議)路由可信驗證方法。
背景技術(shù):
域間路由安全對于整個互聯(lián)網(wǎng)的安全具有重要的意義。增強域間路由安全的關(guān)鍵之一就是提高域間路由協(xié)議的安全性。BGP協(xié)議作為當(dāng)前唯一的域間路由協(xié)議,其安全性是整個Internet路由系統(tǒng)安全的關(guān)鍵。而BGP路由是否可信又是保證BGP協(xié)議安全的基礎(chǔ),然而在BGP設(shè)計之初,并沒有充分考慮可信路由問題,只有一些簡單的認(rèn)證機制保證安全。在目前復(fù)雜的網(wǎng)絡(luò)環(huán)境下,這種簡單的認(rèn)證機制既不能確保路由信息的可靠性,也不能滿足可信路由的需求。
BGP路由可信的核心問題就是確保信息發(fā)布的可靠性,其中最重要的就是源地址信息和路徑屬性,至今提出的多種BGP路由可信方法,多數(shù)都采用基于信息認(rèn)證的數(shù)字簽名認(rèn)證方法,包括對源地址簽名、路徑屬性簽名、路由策略簽名來保證信息的安全可信。這種方法存在以下不足:在數(shù)字簽名認(rèn)證方法中,要求每臺設(shè)備都有公鑰和私鑰兩種密鑰,密鑰產(chǎn)生、分配、維護工作繁瑣,密鑰系統(tǒng)難以部署,開銷很大;而隨著網(wǎng)絡(luò)規(guī)模增大,網(wǎng)絡(luò)設(shè)備成指數(shù)級增長,大大增加了密鑰系統(tǒng)的部署管理難度,降低了系統(tǒng)的整體性價比。因此,數(shù)字簽名認(rèn)證方法代價太大,難于部署。
另一種常見的保證BGP路由可信的方法是采用BGP路由檢測系統(tǒng)檢測路由異常,這種方法存在以下不足:1、已有的路由安全監(jiān)測系統(tǒng)只提供異常發(fā)現(xiàn)和報警服務(wù),沒有阻斷異常功能,即沒有形成自動的反饋控制。與此同時,在監(jiān)測異常時,需要參考已有異常類型知識庫確定系統(tǒng)是否存在異常,這種方法依賴于知識庫的準(zhǔn)確性和完整性,且只能檢測異常,沒有自動反饋機制。2、已有的路由安全監(jiān)測系統(tǒng)只有在網(wǎng)絡(luò)應(yīng)用所需服務(wù)得不到保證、網(wǎng)絡(luò)狀態(tài)出現(xiàn)波動的情況下才能檢測出異常,這種被動異常監(jiān)測不具備很好的實時性和前瞻性,難以滿足目前網(wǎng)絡(luò)安全的實時性需求。3、已有的路由安全監(jiān)測系統(tǒng)種類繁多、各成體系,系統(tǒng)之間互通性差,難以兼容。且系統(tǒng)大多只向后兼容,不具備向前兼容的特性。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題就在于:針對現(xiàn)有技術(shù)存在的問題,本發(fā)明提供一種基于SDN架構(gòu)的BGP路由可信驗證方法,該方法能夠降低部署開銷、提高異常檢測性能和實時性、閉環(huán)控制阻斷異常、向前兼容高可擴展、使系統(tǒng)整體性價比大幅提升。
為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案:
一種基于SDN架構(gòu)的BGP路由可信驗證方法,實施步驟如下:
1.一種基于SDN架構(gòu)的BGP路由可信驗證方法,其特征在于,實施步驟如下:
第一步,構(gòu)建基于SDN架構(gòu)的BGP路由可信驗證環(huán)境,BGP路由可信驗證環(huán)境包括:為每臺路由器部署的一個代理,以及部署在客戶端的集中控制點;代理負(fù)責(zé)與BGP協(xié)議進(jìn)程交互,讀寫B(tài)GP鄰居信息表;集中控制點是一個軟件模塊,負(fù)責(zé)使用網(wǎng)絡(luò)配置協(xié)議NETCONF周期性地與代理交互,獲取管轄范圍內(nèi)所有路由器的BGP鄰居信息表,生成鄰居信息數(shù)據(jù)庫;
第二步、集中控制點采集BGP鄰居信息,將BGP鄰居信息表建模得到Y(jié)ANG模型;
第三步、集中控制點集中檢測異常,驗證BGP路由是否可信,如果BGP路由可信,則結(jié)束;否則,BGP路由不可信,進(jìn)入第四步;
第四步、集中控制點生成阻斷異常的安全策略,確保BGP路由可信;
第五步、集中控制點下發(fā)安全策略阻斷異常路由;
第六步、集中控制點驗證異常路由是否被阻斷,方法是:安全路由策略下發(fā)成功后,代理再次讀取BGP鄰居信息表,并通過NETCONF協(xié)議發(fā)送給集中控制點,轉(zhuǎn)第三步。
作為本發(fā)明的進(jìn)一步改進(jìn),所述第二步集中控制點采集BGP鄰居信息,將BGP鄰居信息表建模得到Y(jié)ANG模型,具體流程為:
2.1使用YANG數(shù)據(jù)建模語言對BGP鄰居信息表進(jìn)行建模,得到Y(jié)ANG模型,包括以下步驟:
2.1.1定義鄰居為一個容器節(jié)點聚集所有的鄰居信息;
2.1.2定義鄰居表中每一行的條目為一個列節(jié)點,并用鄰居ID唯一標(biāo)識;
2.1.3定義條目中的每個屬性為一個葉子節(jié)點;
2.2集中控制點向代理發(fā)送配置請求,請求獲取BGP鄰居信息表,包括以下步驟:
2.2.1集中控制點收到請求BGP鄰居信息的命令后,自動生成XML格式的配置請求;
2.2.2集中控制點通過NETCONF協(xié)議將配置請求發(fā)往代理;
2.3代理響應(yīng)集中控制點的請求,將鄰居信息表發(fā)送給集中控制點,包括以下步驟:
2.3.1代理收到集中控制點的配置請求后,通過對BGP協(xié)議進(jìn)程進(jìn)行讀操作,獲取BGP鄰居信息表;
2.3.2代理將BGP鄰居信息表用XML進(jìn)行編碼,然后通過NETCONF協(xié)議發(fā)往集中控制點。
所述第三步集中控制點集中檢測異常,驗證BGP路由是否可信,具體流程為:
3.1集中控制點從代理收到XML編碼的BGP鄰居信息表后,從XML中解析出鄰居信息,存儲于鄰居信息數(shù)據(jù)庫中;
3.2集中控制點管轄范圍內(nèi)所有運行BGP的路由器的鄰居信息都采集完成后,得到鄰居信息數(shù)據(jù)庫;然后,對比分析鄰居信息數(shù)據(jù)庫,判斷互為鄰居的路由器是否存在對方的鄰居表中,驗證BGP路由是否可信:如果互為鄰居的路由器存在于對方的鄰居表中,則BGP路由可信,結(jié)束;否則,此BGP路由不可信,進(jìn)入第四步。
所述第四步集中控制點生成阻斷異常的安全策略,具體流程為:
4.1集中控制點檢測到某路由器的BGP鄰居表中存在多余的鄰居信息,則生成安全路由策略刪除該鄰居信息以阻斷異常路由;
4.2集中控制點根據(jù)NETCONF協(xié)議規(guī)范以及第一步的YANG模型,將安全路由策略轉(zhuǎn)換成XML編碼的配置文件。
所述第五步集中控制點下發(fā)安全策略阻斷異常路由,具體流程為:
5.1集中控制點生成XML編碼的安全路由策略之后,通過標(biāo)準(zhǔn)的NETCONF協(xié)議將其發(fā)送給代理;
5.2代理收到安全路由策略之后,與BGP協(xié)議進(jìn)程交互,通過對BGP鄰居信息表進(jìn)行寫操作,執(zhí)行安全路由策略,刪除多余的鄰居。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:
1、本發(fā)明在每臺路由器上部署一個代理,代理自動采集路由信息、集中檢測異常并下發(fā)安全路由策略阻斷異常,這種集中閉環(huán)控制結(jié)構(gòu)能夠形成自動的反饋控制,確保路由安全可信。
2、本發(fā)明第三步集中控制點隨時請求路由信息并進(jìn)行異常檢測,與傳統(tǒng)的監(jiān)測系統(tǒng)相比,具有更高的實時性。
3、本發(fā)明第三步在采集完BGP鄰居信息表之后,對BGP鄰居信息表進(jìn)行對比分析判斷,驗證BGP是否可信。與傳統(tǒng)的數(shù)字簽名認(rèn)證方法相比,大大提高了可信路由的驗證效率;同時本發(fā)明只需要在每臺路由器上部署一個代理,與傳統(tǒng)的安全增強協(xié)議機制相比,大大降低了部署開銷。
4、本發(fā)明采用NETCONF協(xié)議,提供認(rèn)證、數(shù)據(jù)完整性、機密性和應(yīng)答保護等機制確保BGP鄰居信息安全傳輸;采用YANG數(shù)據(jù)建模語言,可以更好地描述數(shù)據(jù)之間的層次性和限制關(guān)系。同時NETCONF協(xié)議和YANG數(shù)據(jù)建模語言作為下一代網(wǎng)絡(luò)管理的既定標(biāo)準(zhǔn),使得本發(fā)明具有更好的通用性和可擴展性。
附圖說明
圖1是本發(fā)明方法的流程示意圖;
圖2是本發(fā)明具體應(yīng)用時的系統(tǒng)結(jié)構(gòu)示意圖;
圖3是本發(fā)明具體應(yīng)用時的設(shè)計實現(xiàn)模塊示意圖;
圖4是本發(fā)明YANG語言對BGP鄰居建模示意圖;
圖5是本發(fā)明具體應(yīng)用時的拓?fù)涫疽鈭D;
圖6是本發(fā)明具體應(yīng)用時的配置示意圖;
圖7是本發(fā)明具體應(yīng)用時節(jié)點偽造BGP路由時的鄰居表示意圖;
圖8是本發(fā)明具體應(yīng)用時節(jié)點異常阻斷后的鄰居表示意圖;
圖9是本發(fā)明具體應(yīng)用時阻斷異常的安全路由策略示意圖。
具體實施方式
以下將結(jié)合說明書附圖和具體實施案例對本發(fā)明做進(jìn)一步詳細(xì)說明。
如圖1所示,本發(fā)明的一種基于SDN架構(gòu)的BGP路由可信驗證方法,其步驟為:
第一步,構(gòu)建基于SDN架構(gòu)的BGP路由可信驗證環(huán)境,如圖2所示,BGP路由可信驗證環(huán)境包括:為每臺路由器部署的一個代理,以及部署在客戶端的集中控制點;代理負(fù)責(zé)與BGP協(xié)議進(jìn)程交互,讀寫B(tài)GP鄰居信息表;集中控制點是一個軟件模塊,負(fù)責(zé)使用網(wǎng)絡(luò)配置協(xié)議NETCONF(Network Configuration Protocol,網(wǎng)絡(luò)配置協(xié)議)周期性地與代理交互,獲取管轄范圍內(nèi)所有路由器的BGP鄰居信息表,生成鄰居信息數(shù)據(jù)庫;
第二步、集中控制點與代理交互,從BGP協(xié)議進(jìn)程處獲取BGP鄰居信息,將BGP鄰居信息表建模得到Y(jié)ANG模型,結(jié)合圖3,包含以下步驟:
2.1使用YANG數(shù)據(jù)建模語言對BGP鄰居信息表進(jìn)行建模,得到Y(jié)ANG模型。YANG是一種用于對NETCONF協(xié)議操作的配置和管理數(shù)據(jù)進(jìn)行建模的語言。它可以描述數(shù)據(jù)之間層次性和限制關(guān)系。YANG定義了數(shù)據(jù)模型以及NETCONF協(xié)議操作。如圖4所示,在充分分析BGP鄰居結(jié)構(gòu)之后,BGP鄰居信息表被形式化成YANG模型。定義鄰居為一個容器節(jié)點(圖4中“container bgp-neighbor”)聚集所有鄰居信息。由于鄰居包含很多條目,我們定義每個條目為一個列節(jié)點(圖4中“l(fā)ist neighbor”),并用鄰居ID(圖4中“key neighbor”)唯一標(biāo)識。考慮到每個條目又包含很多屬性:鄰居ID(圖4中“l(fā)eaf neighbor”)、版本號(圖4中“l(fā)eaf v”)、AS號(圖4中“l(fā)eaf as”),每個屬性有一個值且沒有孩子節(jié)點,我們用葉子節(jié)點(leaf)定義屬性。
2.2集中控制點向代理發(fā)送配置請求,請求獲取BGP鄰居信息表。集中控制點是一個軟件模塊,包含鄰居驗證器、鄰居信息數(shù)據(jù)庫和鄰居監(jiān)測器三個組件,鄰居驗證器負(fù)責(zé)驗證BGP是否可信,鄰居監(jiān)測器負(fù)責(zé)生成對應(yīng)XML格式的鄰居信息請求,鄰居信息數(shù)據(jù)庫采用文件方式存儲XML中解析的鄰居信息。鄰居監(jiān)測器按照YANG語言對BGP鄰居信息建模的結(jié)果,生成對應(yīng)XML格式的鄰居信息請求,然后將XML編碼于<rpc>消息體中,通過標(biāo)準(zhǔn)的NETCONF協(xié)議發(fā)送給代理。
2.3代理響應(yīng)集中控制點的請求,將鄰居信息表發(fā)送給集中控制點。代理是一個軟件模塊,包含鄰居采集器和鄰居發(fā)送器兩個組件。鄰居發(fā)送器響應(yīng)集中控制點的請求,將該請求發(fā)送給鄰居采集器,鄰居采集器和BGP協(xié)議進(jìn)程通信,讀取BGP鄰居信息表,保留數(shù)據(jù)原格式發(fā)送給鄰居發(fā)送器。鄰居發(fā)送器組件按照YANG語言對BGP鄰居信息建模,將收到的鄰居信息表轉(zhuǎn)換成對應(yīng)的XML格式。最后,鄰居發(fā)送器將XML編碼于<rpc-reply>消息體中,通過標(biāo)準(zhǔn)的NETCONF協(xié)議發(fā)送給集中控制點。圖3中的雙向數(shù)據(jù)流表示了集中控制點向代理請求鄰居信息,以及代理與BGP協(xié)議進(jìn)程交互后,將獲取到的鄰居信息發(fā)送給集中控制點的過程。
第三步、集中控制點集中檢測異常,驗證BGP路由是否可信,如果BGP路由可信,則結(jié)束;否則,BGP路由不可信,進(jìn)入第四步;具體流程如下:
3.1集中控制點從代理收到XML編碼的BGP鄰居信息表后,從XML中解析出鄰居信息,存儲于鄰居信息數(shù)據(jù)庫中。集中控制點的鄰居監(jiān)測器組件收到代理的響應(yīng)消息,從XML中解析出鄰居信息,存儲于鄰居信息數(shù)據(jù)庫中。鄰居信息數(shù)據(jù)庫采用文件存儲方式,既方便讀寫,也可以作為日志供以后查詢。
3.2集中控制點檢測異常,驗證BGP是否可信。當(dāng)集中控制點管轄范圍內(nèi)運行BGP協(xié)議的路由器的鄰居信息表都采集完成后,得到鄰居信息數(shù)據(jù)庫,鄰居驗證器以鄰居信息數(shù)據(jù)庫作為輸入,驗證BGP是否可信。方法是:集中控制點在采集完所有運行BGP協(xié)議的路由器的鄰居信息表后,對比分析判斷互為鄰居的路由器是否存在對方的鄰居表中,驗證BGP路由是否可信,如果BGP路由可信,結(jié)束;否則,進(jìn)入第四步。因為BGP要建立鄰居表首先要建立TCP會話,然后建立BGP的鄰居關(guān)系,進(jìn)而會把鄰居關(guān)系記錄到鄰居表中,即兩臺運行BGP協(xié)議的路由器A和路由器B,路由器A在路由器B的鄰居表中,如果路由器B也在路由器A的鄰居表中,則兩臺路由器的BGP路由可信;如果路由器B不在路由器A的鄰居表中,則路由器A偽造了一條到路由器B的BGP路由,即路由器A的BGP路由不可信。
第四步、集中控制點生成阻斷異常的安全策略,確保BGP路由可信,流程如下:
4.1集中控制點檢測到某路由器的BGP鄰居表中存在多余的鄰居信息,則生成安全路由策略刪除該鄰居信息以阻斷異常路由;
4.2集中控制點根據(jù)NETCONF協(xié)議規(guī)范以及第二步的YANG模型,將安全路由策略轉(zhuǎn)換成XML編碼的配置文件,刪除多余的鄰居。
第五步、集中控制點下發(fā)安全路由策略阻斷異常路由,流程如下:
5.1集中控制點生成XML編碼的安全路由策略之后,通過標(biāo)準(zhǔn)的NETCONF協(xié)議將其發(fā)送給代理;
5.2代理收到安全路由策略之后,與BGP協(xié)議進(jìn)程交互,通過對BGP鄰居信息表進(jìn)行寫操作,執(zhí)行安全路由策略,刪除多余的鄰居。
第六步、集中控制點驗證是否阻斷異常,方法是:安全路由策略下發(fā)成功后,代理再次讀取BGP鄰居信息表,并通過NETCONF協(xié)議發(fā)送給集中控制點,轉(zhuǎn)第三步。
采用本發(fā)明進(jìn)行可信BGP路由驗證與異常阻斷的一個具體實施例如下:
系統(tǒng)配置:(1)硬件:DELL服務(wù)器一臺(2)軟件:Linux操作系統(tǒng)Red Hat和Ubuntu,VM VirtualBox軟件,Quagga軟件路由器。
第一步、搭建應(yīng)用環(huán)境
本應(yīng)用由七臺路由器構(gòu)成,依次命名為Victim、A、B、C、D、E和Dest。連接關(guān)系如圖5所示。名字為Fake Dest的路由器實際不存在,它是當(dāng)A被攻擊并且其BGP路由不可信之后,由A指向的偽造路由器。從Victim指向Dest的帶箭頭實線表示在所有路由器都可信的情況下,由Victim到Dest的BGP路徑。從Victim指向Fake Dest的帶箭頭實線表示A被攻擊且其BGP路由不可信之后,由Victim到Dest的BGP路徑。
集中控制點部署在Red Hat上。此外,我們用三步部署代理。首先,使用Oracle VMVirtualBox創(chuàng)建七個節(jié)點,每個節(jié)點上運行Ubuntu。然后,我們在每個節(jié)點上運行Quagga,并啟動BGPD進(jìn)程。最后,我們在每個節(jié)點上部署代理與BGPD和集中控制點交互。數(shù)據(jù)流從BGPD到代理到集中控制點,再從集中控制點到代理到BGPD,這種閉環(huán)控制結(jié)構(gòu)能夠?qū)崟r檢測和阻斷異常路由。
第二步、偽造BGP路由
如圖5所示,正常情況下,從Victim指向Dest的帶箭頭實線表示由Victim到Dest的BGP路徑。為了將該數(shù)據(jù)流變成從Victim指向Fake Dest的帶箭頭實線,我們選擇路由器A進(jìn)行BGP路由偽造。首先配置A的接口Serial0/2IP地址為70.1.1.2,這和Dest的接口Serial0/2在同一個網(wǎng)段。然后將A的該接口加入到BGP區(qū)域中。各路由器的詳細(xì)配置如圖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鄰居信息表進(jìn)行對比。在某一時刻,我們發(fā)現(xiàn)Dest在A的BGP鄰居信息表中,而Dest的鄰居信息表中只有路由器C一個條目。結(jié)果如圖7所示,路由器A中的鄰居表第一項為Dest,而路由器Dest的鄰居表中只有一項,即路由器C。此時我們認(rèn)為路由器A偽造了一條到Dest的BGP路由。為了驗證該推斷,我們使用從Victim到Dest的Traceroute命令,發(fā)現(xiàn)數(shù)據(jù)流確實改變成了從Victim到Fake Dest。
第四步、阻斷異常
為了阻斷這次異常,我們決定將Dest從A的BGP鄰居信息表中刪除。對應(yīng)的XML配置文件如圖9所示,該配置文件定義的操作為將路由器ID為7.7.7.7的鄰居從BGP鄰居信息表中刪除。使用標(biāo)準(zhǔn)的NETCONF協(xié)議下發(fā)該安全路由策略。然后我們檢查路由器的BGP鄰居信息表,發(fā)現(xiàn)Dest已不在A的表中,如圖8所示,路由器A的鄰居信息表中只剩下兩項,已將Dest成功刪除。此時我們認(rèn)為A可信且網(wǎng)絡(luò)恢復(fù)正常,結(jié)束。從Victim到Dest的Traceroute結(jié)果也驗證了我們的推斷。
以上僅是本發(fā)明的優(yōu)選實施方式,本發(fā)明的保護范圍并不僅局限于上述實施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護范圍。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤飾,應(yīng)視為本發(fā)明的保護范圍。