Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

TCP 身份验证选项 (TCP-AO)

总结 了解 BGP 和 LDP 会话的 TCP 身份验证选项 (TCP-AO)。

用于 BGP 和 LDP 会话的 TCP-AO

BGP 和 LDP 协议使用 TCP 进行传输。TCP-AO 是 RFC5925 提出的一种新的身份验证方法,TCP 身份验证选项旨在增强在 BGP 和 LDP 会话期间交换的 TCP 分段的安全性和真实性。它还支持 IPv4 和 IPv6 流量。

TCP-AO 的优势

与 TCP MD5 比,TCP-AO 提供以下优势:

  • 更强大的算法 — 支持多个更强大的身份验证算法,如 HMAC-SHA-1-96 和 AES-128-CMAC-96(由 RFC5925,TCP 身份验证选项强制要求)。HMAC-SHA-1-96 是基于哈希的 MAC,而 AES-128-CMAC-96 是基于密码的 MAC,因此与使用 MD5 算法创建的摘要相比,消息摘要更加复杂和安全。

  • 双折叠安全性 — 在 TCP-AO 方法中,配置了身份验证算法分两个阶段使用:一旦从用户配置的密钥生成内部流量密钥,然后使用生成的流量密钥生成消息摘要;而在 TCP MD5 方法中,MD5 算法会使用用户配置的密钥生成消息摘要。

  • 更好的密钥管理和敏捷性 — 可以为一个会话配置多达 64 个密钥,并在会话的整个生命周期内随时添加这些密钥。它提供了一种简单的密钥协调机制,可在不会导致任何 TCP 连接关闭的情况下在同一连接内更改密钥(从一个密钥移动到另一个密钥)。在建立连接期间更改 TCP MD5 密钥可能会导致连接翻动或重新启动。

  • 适用于长期连接 — 更适合 BGP 和 LDP 等路由协议以及跨单个连接的重复实例的长寿命连接。

什么是 TCP-AO?

TCP-AO 提供了一个框架:

  • 支持多个更强大的算法,如 HMAC-SHA1 和 AES-128,以创建内部流量密钥和消息摘要。

  • 添加新用户配置的密钥,为已建立的连接重新生成内部流量密钥,以及同步 BGP 或 LDP 对等方之间的密钥更改的机制。

在早期版本中,Junos 设备仅支持用于 BGP 和 LDP 会话的 TCP MD5 身份验证方法。MD5 方法仅支持 MD5 算法,其安全性不如 TCP-AO。此外,与 TCP-AO 不同,更改 MD5 密钥通常会中断 TCP 会话。TCP MD5 在 RFC2385 中定义,通过 TCP MD5 签名选项保护 BGP 会话。有关 TCP MD5 的详细信息,请参阅 TCP

注意:
  • 虽然 Junos 设备同时支持 TCP-AO 和 TCP MD5 身份验证方法,但对于给定连接,您不能同时同时使用这两种方法。

  • TCP-AO 支持 不间断主动路由

下图解释了 TCP-AO 和 TCP MD5 身份验证之间的区别。第一个流显示 TCP-AO 的配置和处理流,第二个流显示 TCP-MD5 的配置和处理流。

图 1:TCP-AO 与 TCP MD5 TCP-AO in comparison with TCP MD5 的比较

以下是图 1 所示的处理流说明:

  • TCP-AO — 用户使用所有必要的参数在密钥链中配置了两个密钥(密钥 0 和密钥 1)。密钥链支持两种算法:HMAC SHA1 和 AES-128(根据 RFC5925 强制要求)。TCP 提取密钥 0,即当前处于活动状态的密钥,如图中的时间戳所示。在本示例中,密钥 0 配置了 HMAC-SHA1。

    SHA1 采用“密钥 0 配置”和连接特定参数进行加密,并生成内部流量密钥。

    SHA1 再次加密内部流量密钥和 TCP 分段,以生成消息摘要。摘要将复制到 TCP 分段中 TCP-AO 选项的 TCP-AO MAC 字段。然后,该分段被发送至接收设备。

  • TCP-MD5 — 用户配置了一个密钥,因为 TCP MD5 选项仅支持一个连接密钥。此外,它仅支持 MD5 算法。MD5 算法从密钥和 TCP 分段中获取“密钥”进行加密,并生成消息摘要。然后,此消息摘要复制到 TCP 分段中的 MD5 摘要字段,并发送至接收设备。

配置

首先,配置钥匙串。然后将 TCP-AO 应用于 BGP 或 LDP 会话。

要为 TCP-AO 配置密钥链(使用一个密钥),请在 [edit security] 层次结构级别配置以下语句。

要向 BGP 会话应用 TCP-AO(使用配置的密钥链),请在 [edit protocols] 层次结构级别配置以下语句。

要向 LDP 会话应用 TCP-AO(使用配置的密钥链),请在 [edit protocols] 层次结构级别配置以下语句。

示例:配置密钥链 (TCP-AO)

总结 此示例说明如何创建 TCP-AO 密钥链来验证 BGP 或 LDP 会话。

此示例使用以下硬件和软件组件:

  • MX 系列或 PTX 系列路由器。

  • Junos OS 20.3R1 或更高版本。

此示例说明如何创建 TCP-AO 密钥链来验证 BGP 或 LDP 会话。

在此示例中,您可以在设备 R1 和 R2 上创建一个包含两个密钥的密钥 key 0 key 1new_auth_key

  1. 要创建包含第一个密钥的密钥链new_auth_key,(key 0):
    注意:

    复制以下命令,将其粘贴到文本文件中,删除所有换行符并更改必要的详细信息,以便与网络配置匹配,将命令复制并粘贴到 CLI 中。

    R1

    R2 (带 send-idrecv-id 反转值)

    配置密钥链时,请考虑以下参数:

    表 1:钥匙串参数

    参数

    描述

    key-chain

    输入唯一名称。

    key

    输入唯一密钥 ID。

    secret

    输入唯一密码。

    start-time

    输入格式的唯一时间 YYYY-MM-DD.HH:MM ,以指定密钥的开始时间。

    algorithm

    输入算法 ao

    send-idrecv-id

    输入 0 到 255 之间的任意两个数字。您不得将这些数字用于该密钥链中的任何其他密钥。

    cryptographic-algorithm

    选择或hmac-sha-1-96aes-128-cmac-96

    tcp-ao-option

    选择 enabled 启用 TCP-AO 选项。

  2. 在创建key 0之后添加另一个密钥 (key 1):

    R1

    R2 (带 send-idrecv-id 反转值)

  3. 在两台设备上从配置模式进入 commit ,以激活更改。
  4. 要验证配置了 2 个密钥的密钥链new_auth_key,请在show security authentication-key-chains配置模式下使用命令。

    以下是基于此示例的示例输出:

您已成功创建密钥链!

要删除密钥链,请 delete security authentication-key-chains key-chain key-chain-name 从配置模式使用命令。

注意:
  • 在生命周期内,您只能将一个 TCP-AO 密钥链与 BGP 或 LDP 会话关联。您不能在会话生命周期内将另一个密钥链指向该会话。

  • 我们建议,在一个密钥链中,任意两个后续密钥的开始时间之间的最小间隔为 30 分钟。

  • 配置密钥链并由 TCP 连接使用后,便无法更改 send-id 其活动密钥的或 recv-id 值。但是,您可以更改密钥中的其他参数,与更新的密钥链关联的任何新连接都将采用更新后的参数进行连接建立。

  • 从 Junos OS 21.2R1 版开始,如果任何一个 TCP 端点上没有配置 TCP-AO,您可以使用 tcpao-auth-mismatch allow-without-tcpao 它来允许在没有 TCP-AO 的情况下建立连接。

要从操作模式显示有关现有密钥链(如果有)的信息,请使用 show security keychain 命令。下面是示例输出:

示例:使用 TCP-AO 对 BGP 会话进行身份验证

总结 此示例说明如何使用 TCP 身份验证选项 (TCP-AO) 密钥链来验证 BGP 会话。

要求

此示例使用以下硬件和软件组件:

概述

BGP 使用 TCP 作为其传输协议。TCP-AO 是一种可用于验证 BGP 会话的方法。您可以在 BGP 邻接方或配置层次结构的 BGP 组级别应用 TCP-AO 密钥链。

拓扑

图 2:BGP 身份验证 Topology for BGP Authentication拓扑

配置

在此示例中,您将关联两台设备上的 TCP-AO 身份验证密钥链 new_auth_key 和身份验证算法 ao ,以便对 BGP 会话进行身份验证。

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到 CLI 中。

R1

R 2

逐步过程

  1. 进入配置模式。

  2. 配置基本设置,如两台设备上的接口 IP 地址、接口说明、环路地址、路由器 ID 和 AS 编号。

    R1

    R 2

  3. 在 R1 和 R2 之间配置 EBGP。

    R1

    R 2

  4. 将认证密钥链 new_auth_key 和身份验证算法 ao 与两台设备上的 BGP 会话相关联。

    R1

    R 2

  5. 在两台设备上从配置模式进入 commit

    在两台设备上提交配置语句后,BGP 会话应使用 TCP-AO 身份验证方法建立。

结果

使用 show interfacesshow routing-optionsshow protocols 配置模式下的命令确认您的配置。

user@R1# show interfaces

user@R1# show routing-options

user@R1# show protocols

验证

验证 BGP 会话建立
目的

启用 TCP-AO 后,确认 BGP 会话建立输出。

行动

使用操作模式命令查看 BGP 会话状态的 show bgp summary BGP 摘要。

意义

突出显示的输出值表示 BGP 已成功地在 1:19 分钟前使用 TCP-AO 身份验证方法建立了会话。

验证 BGP 会话是否正在使用 TCP-AO
目的

验证 BGP 邻接方是否使用 TCP-AO 密钥链进行验证。

行动

show bgp neighbor neighbor使用命令查看 BGP 对等方的配置详细信息。要仅过滤输出中特定于身份验证的详细信息,请使用管道 (|) 功能并在上authentication匹配,如下所示:

意义

输出指示将认证密钥链 new_auth_key 和身份验证算法 ao 应用于 BGP 邻接方 192.0.2.2

示例:使用 TCP-AO 对 LDP 会话进行身份验证

总结 此示例说明如何使用 TCP 身份验证选项 (TCP-AO) 密钥链对 LDP 会话进行身份验证。

要求

此示例使用以下硬件和软件组件:

概述

标签分配协议 (LDP) 是一种 MPLS 信令协议。它允许路由器通过网络建立标签交换路径 (LSP)。TCP-AO 有助于增强在 LDP 对等方之间创建的会话的安全性。

图 3:LDP 配置的 Topology for LDP Configuration拓扑

配置

在此示例中,您将 TCP-AO 身份验证密钥链 new_auth_key 和身份验证算法 ao 关联到两台设备,以验证其 LDP 会话。

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到 CLI 中。

R1

R 2

逐步过程

  1. 进入配置模式。

  2. 配置基本设置,例如设备接口、环路、接口说明、路由器 ID 和 R2 上的 AS 编号。

    R1

    R 2

  3. 在两台设备上配置 MPLS 和 LDP。

    R1

    R 2

  4. 配置内部网关协议 (IGP),以通告环路地址可访问性。在此示例中,我们配置 OSPF。

    R1

    R 2

  5. 与 R1 和 authentication-algorithm ao R2 的标签空间 ID 关联authentication-key-chain new_auth_key

    R1

    R 2

  6. 从两台设备的配置模式进入 commit

结果

使用和 show routing-options show protocols命令确认show interfaces您的配置。

user@R1# show interfaces

user@R1# show routing-options

user@R1# show protocols

验证

验证 LDP 会话

目的

使用 TCP-AO 验证 LDP 会话建立。

行动

使用 show ldp session detail 操作模式命令验证是否已正确建立 LDP 会话。

意义

输出指示已建立 LDP 会话。

示例:使用 TCP-AO 对 RPKI 验证会话进行身份验证

概述

资源公钥基础架构 (RPKI) 是一个公钥基础架构框架,旨在保护互联网的路由基础架构,特别是 BGP。RPKI 提供了一种将互联网编号资源信息(如 IP 地址)连接到信任锚点的方法。通过使用 RPKI,编号资源的合法持有者能够控制互联网路由协议的操作,以防止路由劫持和其他攻击。

从 Junos OS 22.2R1 版开始,您可以使用 TCP 身份验证选项 (TCP-AO) 和密钥链来验证 RPKI 会话。

此示例说明如何使用 TCP-AO 密钥链验证 RPKI 验证会话。我们将在客户端设备 (R1) 和服务器 (R2) 之间建立经过身份验证的 RPKI 会话。

要求

此示例使用以下硬件和软件组件:

  • 2 台 MX 系列路由器
  • Junos OS 22.2R1 或更高版本。

拓扑

图 4:经过身份验证 RPKI 会话 Topology for Authenticated RPKI Session的拓扑

配置

在此示例中,您必须将两台设备上的 TCP-AO 身份验证密钥链 new_auth_key 和身份验证算法 ao 相关联,以便对 RPKI 连接进行身份验证。

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,然后将命令复制并粘贴到 CLI 中。

R1

R 2

逐步过程

  1. 在两台设备上配置基本设置,如接口、环路地址、路由器 ID 和 AS 编号。在 R2 上,我们为服务器配置逻辑系统接口。

    R1

    R 2

  2. 使用备用 TCP 端口号在客户端设备 (R1) 上使用 RPKI 服务器 (R2) 配置 TCP 会话。

    R1

  3. 在服务器 R2 上,配置 RPKI 会话与客户端 R1 进行源验证。

  4. 使用第一个密钥(密钥 0)创建密钥链 new_auth_key

    R1

    R2 (发送 id 和 recv-id 值反转)

  5. 要添加另一个密钥(密钥 1),在创建密钥 0 后:

    R1

    R2 (发送 id 和 recv-id 值反转)

  6. 在 R1 和 R2 上应用配置的密钥链 new_auth_key 和身份验证算法 ao

    R1

    R 2

  7. 在两台设备上从配置模式进入 commit ,以激活更改。

  8. 要验证配置了两个密钥的密钥链 new_auth_key ,请在 show security authentication-key-chains 配置模式下使用命令。

结果

检查 R1 上的密钥链配置结果:

user@R1# show security authentication-key-chains

使用以下命令确认在 R1 上应用的剩余配置:

user@R1# show interfaces

user@R1# show routing-options

验证

目的

验证是否使用两个对等方上配置的 TCP-AO 密钥链和算法建立会话。

行动

使用 show validation session 192.168.12.2 detail 操作模式命令查看经过验证的会话。

意义

输出指示已配置的密钥链 new_auth_key启动会话。

版本历史记录表
释放
描述
22.4R1
从 Junos OS 演化版 22.4R1 开始,您可以配置带 IP 子网的 TCP-AO 或 TCP MD5 身份验证,以将整个地址范围包含在该子网下。
22.4R1
从 Junos OS 演化版 22.4R1 开始,TCP 身份验证是 VRF 感知的。