Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

BGP 路由身份验证

了解 BGP 的路由器身份验证

路由器和路由身份验证和路由完整性的使用大大降低了已配置为与其他路由器共享错误路由信息的计算机或路由器攻击的风险。在此类攻击中,受攻击路由器会受骗创建路由环路,或者可大幅改进受攻击路由器的路由表,从而影响性能,或者将路由信息重定向至网络中供攻击者分析的位置。可以在分段上发送虚假路由通告。这些更新可以在相邻路由器的路由表中接受,除非已存在验证路由源的身份认证机制。

路由器和路由认证使路由器能够仅在根据密码(密钥)验证是否与可靠来源通信时才共享信息。在此方法中,哈希键与发送到另一个路由器的路由一起发送。接收路由器将发送的密钥与自己配置的密钥进行比较。如果两者相同,则接受路由。通过使用散列算法,密钥不会以纯文本形式通过电线发送。而是使用配置的密钥计算哈希值。路由更新用作哈希函数中的输入文本和密钥。此散列与接收路由器的路由更新一起发送。接收路由器将收到的哈希与路由更新上所配置的预共享密钥的哈希进行比较。如果两个哈希值相同,则假定路由来源可靠。仅在发送和接收路由器中知道密钥。

要进一步加强安全性,您可以配置一系列身份验证密钥( keychain)。Keychain 中的每个关键都有唯一的开始时间。Keychain 身份验证允许您定期更改密码信息,而无需关闭对等会话。这种 keychain 身份验证方法称为无中断,因为密钥从一个到下一个,但没有重置任何对等会话或中断路由协议。

发送方使用以下规则来识别活动身份验证密钥:

  • 开始时间小于或等于当前时间(换句话说,不是未来)。

  • 开始时间大于链中的开始时间小于当前时间的所有其他键(换句话说,最接近当前时间的项)。

接收方根据传入密钥标识符确定用于进行身份验证的密钥。

发送方对等端根据配置的开始时间识别当前身份验证密钥,然后使用当前密钥生成一个哈希值。发送方随后会在 BGP 更新消息中插入一个经过 TCP 增强的身份验证选项对象。该对象包含一个对象 ID (由 IANA)、对象长度、当前键和一个哈希值分配。

接收方检查传入的 TCP 增强型身份验证选项,查找收到的身份验证密钥,并根据开始时间、系统时间和容错参数确定密钥是否可接受。如果接受密钥,则接收方会计算哈希并对更新消息进行身份验证。

将 keychain 的初始应用于 TCP 会话会导致会话重置。但是,一旦应用了 keychain,从 keychain 中添加或卸下密码不会导致 TCP 会话重置。此外,当 keychain 从一种身份验证算法更改为另一种时,TCP 会话不会重置。

注:

在 Release 19.1 R1 中,Junos OS 将 TCP 身份验证的支持扩展到 BGP 对等方,通过在 BGP 组中配置的允许前缀子网发现。在版本 19.1 Junos OS 之前的版本中,BGP 在[edit protocols bgp group group-name neighbor address][edit protocols bgp group group-name]层次结构级别上支持 TCP 身份验证。从 Junos OS 版本19.1 开始,您可以在层次结构级别的[edit protocols bgp group group-name dynamic-neighbor dyn-name] allow 语句下配置 TCP 身份验证。

示例:为 BGP 配置路由器身份验证

所有 BGP 协议交换都可以通过身份验证,以保证只有可信路由设备参与自治系统(AS)路由更新。默认情况下,身份验证处于禁用状态。

要求

开始之前:

  • 配置路由器接口。

  • 配置内部网关协议(IGP)。

概述

配置身份验证时,算法会创建一个经过编码的校验和,并将其包含在传输的数据包中。接收路由设备使用认证密钥(密码)验证数据包的校验和。

此示例包括以下用于配置和应用 keychain 的语句:

  • key—一个密钥链可以有多个密钥。Keychain 中的每个键都必须由一个唯一整数值标识。有效标识符值的范围为 0 到 63。

    密钥的长可高达 126 个字符。字符可以包含任何 ASCII 字符串。如果包含空格,请用引号 (" ") 将所有字符括起来。

  • tolerance—(可选)对于每个密钥链,您可以配置一个时钟倾斜容限值(以秒为秒)。时钟倾斜容差适用于接收方接受 BGP 更新的密钥。可配置的范围为0到999999999秒。在容差期间内,当前密码或以前口令是可接受的。

  • key-chain—对于每个密钥链,都必须指定一个名称。此示例定义了一个 keychain:bgp-auth. 一个路由设备上可以有多个 keychains。例如,您可以有 BGP 的 keychain、OSPF 的 keychain 以及 LDP 的 keychain。

  • secret—对于密钥链的每个密钥,都必须设置密钥密码。此密码可通过加密或纯文本格式在secret语句中输入。它始终以加密格式显示。

  • start-time—每个键都必须以 UTC 格式指定启动时间。控制从一个关键传到下一个。当配置的启动时间到达(基于路由设备的时钟)时,该启动时间的关键将成为活动状态。开始时间在路由设备的本地时区中指定,并且在 keychain 中必须是唯一的。

  • authentication-key-chain—允许您在所有对等方、群组或邻接方BGP全局密钥链。本示例将 keychain 应用于外部 BGP (EBGP)组中定义的对等方ext

  • authentication-algorithm—对于每个密钥链,您可以指定一个散列算法。该算法可以是 AES-128、MD5 或 SHA-1。

    您将 keychain 和身份验证算法与 BGP 邻接会话相关联。

此示例配置名为bgp-auth的 keychain。将从 2011-6-23.20:19: 33-0700 开始发送和接受密钥0,并且当 keychain (key 1)中的下一个密钥变为活动状态时,将停止发送和接受。Key 1 每年的有效时间为 2012-6-23.20:19: 33-0700,除非配置另一个密钥的开始时间晚于 key 1 的开始时间,否则不会停止发送和接受。时钟-倾斜容差30秒适用于接收方接受密钥的接收器。在容差期间内,当前密钥或以前键是可接受的。密钥是共享机密密码。这意味着接收经过身份验证的路由更新的邻居必须具有相同的身份验证 keychain 配置,包括相同的密钥(密码)。因此,如果将路由器 R0 和路由器 R1 配置为对等方,则它们必须具有相同的身份验证密钥链配置。此示例显示仅一个路由设备上的配置。

拓扑图

图 1显示了此示例中使用的拓扑。

图 1: BGP 身份验证BGP 身份验证

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除任何换行符,更改与网络配置匹配的必要详细信息,然后将命令复制并粘贴到[edit]层次结构级别的 CLI 中。

操作

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航指南CLI,请参阅 Junos OS CLI 指南 中的 在配置模式下使用 CLI编辑器

要将路由器 R1 配置为从设备 CE1 接受路由过滤器并使用接收到的过滤器执行出站路由过滤:

  1. 配置本地自治系统。

  2. 配置一个或多个 BGP 组。

  3. 使用多个密钥配置身份验证。

    每个密钥的开始时间在 keychain 中必须是唯一的。

  4. 将身份验证 keychain 应用于 BGP,并设置散列算法。

  5. 必以秒为单位应用时钟倾斜公差值。

成果

从配置模式,输入show protocolsshow routing-optionsshow security命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

如果您完成了设备配置,请从commit配置模式进入。

对网络中每个支持 BGP 的设备重复该过程,同时为每个启用 BGP 的设备使用相应的接口名称和地址。

针对

确认配置是否正常工作。

验证邻居的身份验证

用途

请确保该AutheKeyChain选项出现在show bgp neighbor命令输出中。

行动

在操作模式下,输入show bgp neighbor命令。

验证是否发送了授权消息

用途

确认 BGP 具有增强的授权选项。

行动

在操作模式下,输入monitor traffic interface fe-0/0/1命令。

检查身份验证错误

用途

检查由于身份验证错误而被 TCP 丢弃的数据包数量。

行动

在操作模式下,输入show system statistics tcp | match auth命令。

验证 Keychain 的操作

用途

检查由于身份验证错误而被 TCP 丢弃的数据包数量。

行动

在操作模式下,输入show security keychain detail命令。