2021-05-12 14:32:11
Quagga上使用驗證加固BGP對談安全
BGP協定執行於TCP之上,因而,它也繼承了TCP連線的所有漏洞。例如,在一個BGP對談內,攻擊者可以冒充一個合法的BGP鄰居,然後說服另一端的BGP路由器共用路由資訊給攻擊者。在攻擊者通告並向鄰居路由注入偽造的路由時,就會發生這個問題。毫無戒備的鄰居路由器就會開始向攻擊者傳送通訊實況,實際上這些資訊並沒有去向任何地方,僅僅只是被丟棄了。回到2008年,YouTube實際上也受害於這樣的BGP路由中毒,並遭受了長達一個小時的視訊服務大量中斷。一個更加糟糕的情況是,如果攻擊者是個足夠懂行的人,他們可以偽裝成一台透明路由器,然後嗅探經過的通訊以獲取敏感資料。你可以想象,這會造成深遠的影響。
要保護活躍的BGP對談不受攻擊,許多服務提供商在BGP對談中使用MD5校驗和及預共用金鑰。在受保護的BGP對談中,一台傳送包的BGP路由器通過使用預共用的金鑰生成MD5雜湊值、部分IP和TCP頭以及有效載荷。然後,MD5雜湊作為一個TCP選項欄位儲存。在收到包後,接受路由器用同樣的方法使用預共用金鑰生成它的MD5版本。它會將它的MD5雜湊和接收到的某個包的值進行對比,以決定是否接受該包。對於一個攻擊者而言,幾乎不可能猜測到校驗和或其金鑰。對於BGP路由器而言,它們能在使用包的內容前確保每個包的合法性。
在本教學中,我們將為大家演示如何使用MD5校驗和以及預共用金鑰來加固兩個鄰居間的BGP對談的安全。
準備
加固BGP對談安全是相當簡單而直截了當的,我們會使用以下路由器。
路由器名稱 | AS 號 | IP地址 |
router-A | 100 | 10.10.12.1/30 |
router-B | 200 | 10.10.12.2/30 |
常用的Linux核心原生支援IPv4和IPv6的TCP MD5選項。因此,如果你從全新的Linux機器構建了一台Quagga路由器,TCP的MD5功能會自動啟用。剩下來的事情,僅僅是設定Quagga以使用它的功能。但是,如果你使用的是FreeBSD機器或者為Quagga構建了一個自定義核心,請確保核心開啟了TCP的MD5支援(如,Linux中的CONFIGTCPMD5SIG選項)。
設定Router-A驗證功能
我們將使用Quagga的CLI Shell來設定路由器,我們將使用的唯一的一個新命令是‘password’。
[root@router-a ~]# vtysh
router-a# conf t
router-a(config)# router bgp 100
router-a(config-router)# network 192.168.100.0/24
router-a(config-router)# neighbor 10.10.12.2 remote-as200
router-a(config-router)# neighbor 10.10.12.2 password xmodulo
本例中使用的預共用金鑰是‘xmodulo’。很明顯,在生產環境中,你需要選擇一個更健壯的金鑰。
注意: 在Quagga中,‘service password-encryption’命令被用做加密組態檔中所有明文密碼(如,登入密碼)。然而,當我使用該命令時,我注意到BGP設定中的預共用金鑰仍然是明文的。我不確定這是否是Quagga的限制,還是版本自身的問題。
設定Router-B驗證功能
我們將以類似的方式設定router-B。
[root@router-b ~]# vtysh
router-b# conf t
router-b(config)# router bgp 200
router-b(config-router)# network 192.168.200.0/24
router-b(config-router)# neighbor 10.10.12.1 remote-as100
router-b(config-router)# neighbor 10.10.12.1 password xmodulo
驗證BGP對談
如果一切設定正確,那麼BGP對談就應該起來了,兩台路由器應該能交換路由表。這時候,TCP對談中的所有流出包都會攜帶一個MD5摘要的包內容和一個金鑰,而摘要資訊會被另一端自動驗證。
我們可以像平時一樣通過檢視BGP的概要來驗證活躍的BGP對談。MD5校驗和的驗證在Quagga內部是透明的,因此,你在BGP級別是無法看到的。
如果你想要測試BGP驗證,你可以設定一個鄰居路由,設定其密碼為空,或者故意使用錯誤的預共用金鑰,然後檢視發生了什麼。你也可以使用包嗅探器,像tcpdump或者Wireshark等,來分析通過BGP對談的包。例如,帶有“-M ”選項的tcpdump將驗證TCP選項欄位的MD5摘要。
小結
在本教學中,我們演示了怎樣簡單地加固兩台路由間的BGP對談安全。相對於其它協定而言,設定過程非常簡明。強烈推薦你加固BGP對談安全,尤其是當你用另一個AS設定BGP對談的時候。預共用金鑰也應該安全地儲存。
via: http://xmodulo.com/bgp-authentication-quagga.html
作者:Sarmed Rahman 譯者:GOLinux 校對:wxy
來源:https://linux.cn/article-5524-1.html
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-05/118102.htm
相關文章