Quagga上使用驗證加固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-as 200
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-as 100
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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive