本發明主要涉及到網絡安全領域,特指一種基于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結果也驗證了我們的推斷。
以上僅是本發明的優選實施方式,本發明的保護范圍并不僅局限于上述實施例,凡屬于本發明思路下的技術方案均屬于本發明的保護范圍。應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明原理前提下的若干改進和潤飾,應視為本發明的保護范圍。