• <i id='kc1ry'></i>

    1. <span id='kc1ry'></span>
      1. <tr id='kc1ry'><strong id='kc1ry'></strong><small id='kc1ry'></small><button id='kc1ry'></button><li id='kc1ry'><noscript id='kc1ry'><big id='kc1ry'></big><dt id='kc1ry'></dt></noscript></li></tr><ol id='kc1ry'><table id='kc1ry'><blockquote id='kc1ry'><tbody id='kc1ry'></tbody></blockquote></table></ol><u id='kc1ry'></u><kbd id='kc1ry'><kbd id='kc1ry'></kbd></kbd>
      2. <fieldset id='kc1ry'></fieldset>
        <ins id='kc1ry'></ins>

        <code id='kc1ry'><strong id='kc1ry'></strong></code>

        <dl id='kc1ry'></dl>
            <acronym id='kc1ry'><em id='kc1ry'></em><td id='kc1ry'><div id='kc1ry'></div></td></acronym><address id='kc1ry'><big id='kc1ry'><big id='kc1ry'></big><legend id='kc1ry'></legend></big></address><i id='kc1ry'><div id='kc1ry'><ins id='kc1ry'></ins></div></i>

            Linux下加强BGP路由协议

            • 时间:
            • 浏览:13
            • 来源:124软件资讯网

                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会话宁静是相当简朴而直截了当的  ,我们会使用以下路由器 。

                常用的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会话的时间 。预共享密钥也应该宁静地生存  。