配置高级 MACsec 功能
媒体访问控制安全 (MACsec) 是一种行业标准安全技术,可为以太网链路上的几乎所有类型的流量提供安全通信。MACsec 在直连节点之间的以太网链路上提供点对点安全性,能够识别和阻止大多数安全威胁,包括拒绝服务、入侵、中间人、伪装、被动窃听和重放攻击。MACsec 在 IEEE 802.1AE 中进行了标准化。
使用 功能浏览器 确认平台和版本对特定功能的支持。
配置加密选项
分配加密算法
您可以使用以下任一 MACsec 加密算法对进入或离开接口的所有流量进行加密:
-
gcm-aes-128—不带扩展数据包编号 (XPN) 模式的 GCM-AES-128 密码套件
-
gcm-aes-256—不带 XPN 的 GCM-AES-256 密码套件
-
gcm-aes-xpn-128—具有 XPN 模式的 GCM-AES-XPN_128 密码套件
-
gcm-aes-xpn-256—具有 XPN 模式的 GCM-AES-XPN_256 密码套件
如果启用了 MACsec 加密且未指定加密算法,则在不使用 XPN 模式的情况下使用默认 (gcm-aes-128) 加密算法。
在 40G 和 100G 链路上使用 MACsec 时,强烈建议使用 XPN。
-
MX 系列 MPC7E-10G 路由器不支持 XPN 模式的加密算法。
-
MIC-3D-20GE-SFP-E 和 MIC-3D-20GE-SFP-EH 仅支持 GCM-AES-128。
[edit security macsec connectivity-association <varname>connectivity-association-name</varname>] user@host# set cipher-suite (gcm-aes-128 | gcm-aes-256 | gcm-aes-xpn-128 | gcm-aes-xpn-256)
例如,如果要在名为 ca1的连接关联中使用 GCM-AES-XPN-128 算法进行加密:
[edit security macsec connectivity-association ca1] user@host# set cipher-suite gcm-aes-xpn-128
禁用加密
MACsec 的默认行为是加密通过链路的流量。如果只想使用 MACsec 对端点进行身份验证并保证链路的完整性,则可以禁用加密。这称为仅完整性模式。如果需要在跨多跃点传输 MACsec 时显示未加密的有效负载,则仅完整性模式非常有用。
禁用加密后,流量将以明文形式通过以太网链路进行转发。在监控链路时,您可以在遍历链路的以太网帧中查看未加密的数据。但是,MACsec 标头仍会应用于帧,并且所有 MACsec 数据完整性检查都在链路的两端运行,以确保链路上发送或接收的流量未被篡改,且不构成安全威胁。
要禁用加密,请使用以下命令:
[edit security macsec connectivity-association connectivity-association-name] user@host# set no-encryption
配置偏移量
偏移提供了完全加密和不加密之间的选项。控制偏移量以公开有效负载的设定字节数,并对其余字节进行加密。这可用于中间负载平衡,或在交换机到主机链路的情况下用于主机上的负载分配。
默认偏移量为 0。启用加密且 offset 未设置时,将对连接关联中的所有流量进行加密。
当偏移量设置为 30 时,IPv4 报头和 TCP/UDP 报头未加密,同时对其余流量进行加密。当偏移量设置为 50 时,IPv6 报头和 TCP/UDP 报头在加密其余流量时未加密。
如果要素需要查看八位位组中的数据才能执行功能,您通常会使用未加密的前 30 或 50 个八位位组转发流量,但除此之外,您更愿意对遍历链路的帧中的剩余数据进行加密。特别是负载平衡功能,通常需要查看前 30 或 50 个八位位组中的 IP 和 TCP/UDP 标头,才能正确对流量进行负载平衡。
要配置偏移量,请使用以下命令:
[edit security macsec connectivity-association connectivity-association-name] user@host# set offset (0 | 30 | 50)
例如,如果要在名为 ca1的连接关联中将偏移量设置为 30:
[edit security macsec connectivity-association ca1] user@host# set offset 30
在失败开放模式下配置 MACsec 密钥协议协议
您可以为 MACsec 配置故障打开模式,以防止在 MKA 会话处于非活动状态时丢弃流量。对于将网络可用性置于信息安全之上的服务提供商,建议这样做。
MACsec 通过将 MACsec 标头追加到 MACsec 安全链路上传输的以太网帧来维护数据完整性。当 MKA 会话处于活动状态时,仅允许带有 MACsec 标头的帧在链路上传输流量。当 MKA 会话处于非活动状态时,帧不会收到 MACsec 标头。所有流量(包括入口和出口)都将被丢弃。唯一的例外是 EAPoL 流量。
您可以使用 should-secure CLI 语句配置失败打开模式。这样,即使 MKA 会话处于非活动状态,也能允许 MACsec 安全链路上的流量。流量以明文形式传输,不带 MACsec 标头。
要在失效开放模式下配置 MKA 协议:
[edit security macsec connectivity-association connectivity-association-name] user@host# set mka should-secure;
配置重放保护
MACsec 会为 MACsec 安全链路上的每个数据包分配一个 ID 号。启用重放保护后,接收接口将检查通过 MACsec 安全链路的所有数据包的 ID 号。如果数据包以错误顺序到达,且数据包编号之间的差异超过重放保护窗口大小,则接收接口将丢弃该数据包。
例如,如果重放保护窗口大小设置为 5,并且分配了 ID 为 1006 的数据包在分配了 ID 1000 的数据包之后立即到达接收链路,则 ID 为 1006 的数据包将被丢弃,因为它不在重放保护窗口之内。
重放保护对于抵御中间人攻击很有用。中间人攻击者在以太网链路上重放的数据包将会乱序到达接收链路,因此重放保护有助于确保重放的数据包被丢弃,而不是通过网络转发。
您可以通过将重播窗口大小设置为 0 来要求所有数据包按顺序到达。如果预计数据包会无序到达,则不应启用重放保护。
要启用重放保护,请使用以下命令:
[edit security macsec connectivity-association connectivity-association-name] user@host# set replay-protect replay-window-size number-of-packets
例如,要在连接关联 ca1上启用窗口大小为 5 的重放保护:
[edit security macsec connectivity-association ca1] user@host# set replay-protect replay-window-size 5
配置有界延迟保护
您可以配置有界延迟保护,以确保媒体访问控制安全 (MACsec) 帧在延迟 2 秒或更长时间后不会传递。这可以确保不会未检测到由中间人攻击导致的 MACsec 帧延迟。
配置有界延迟保护时,还必须配置重放保护。这是允许重复和重放数据包的窗口。有限延迟优先于重放保护。您可以通过为窗口大小配置较低的值来提高有界延迟保护的有效性。
在配置有界延迟保护之前,必须配置重放保护。请参阅 配置重放保护。
要配置有界延迟保护,请使用以下命令:
[edit security macsec connectivity-association connectivity-association-name mka] user@host# set bounded-delay
有限延迟会影响 CPU 使用率,从而降低性能。建议仅在绝对需要的接口上配置有限延迟。
使用回退 PSK 配置 MACsec
使用静态 CAK 安全模式启用 MACsec 时,点对点以太网链路两端的设备之间将交换预共享密钥 (PSK)。PSK 包括连接关联名称 (CKN) 和连接关联密钥 (CAK)。PSK 必须跨设备匹配,才能建立 MACsec 会话。如果存在不匹配,则不会建立会话,并且所有数据包都会被丢弃。
您可以配置回退 PSK,以防止在主 PSK 无法建立连接时丢失流量。当主键与初始 MACsec 协商不匹配时,使用回退 PSK。
如果已建立 MACsec 会话,并且一台设备上的主 PSK 发生了更改,而另一台设备没有更改,则使用较旧的主 PSK 可以解决由此产生的不匹配问题。较旧的主 PSK 是称为前一个 PSK 的临时密钥。
配置回退 PSK 后,可使用以下密钥之一保护 MACsec 会话:
主 PSK(可配置)- 首选密钥。
回退 PSK(可配置)— 在主 PSK 无法建立 MACsec 会话时使用。
之前的 PSK(不可配置)— 配置新的主 PSK 时,旧的主 PSK 将成为之前的 PSK。
每个密钥的 CAK 状态可以是活动、活动或正在进行中。有关每种状态的说明,请参阅 表 1 。
| CAK 状态 | 说明 |
|---|---|
住 |
|
积极 |
|
进行中 |
|
如果在 MACsec 链路的一端配置了新的 PSK,而另一端配置错误或未配置新密钥,则会发生密钥不匹配。回退行为取决于更改了 PSK 的哪些组件(CAK 和/或 CKN)。每种不匹配情况说明如下:
如果 CAK 发生更改,而 CKN 保持不变,则现有 MACsec 会话将断开连接。将使用旧的 CKN 和新的 CAK 值启动一个新会话。
如果 CKN 发生更改,而 CAK 保持不变,则与现有 CAK 配对的旧 CKN 将成为前一个 PSK,并且会话将与之前的 PSK 一起运行。使用新创建的 CKN 和 CAK 启动新会话,该会话将持续进行,直到对等节点也配置了相同的 CKN。
如果 CAK 和 CKN 都已更改,则旧的 CAK+CKN 对将成为之前的 PSK,并且会话将与之前的 PSK 一起运行。使用新的 CAK+CKN 对启动新会话,该会话将持续进行,直到对等节点也配置了相同的 CAK+CKN。
前一个 PSK 优先于回退 PSK,因此如果会话与前一个 PSK 一起活动,则回退 PSK 不会生效。如果希望会话与回退 PSK 一起运行,则必须配置语 disable-preceding-key 句。
预共享钥匙串支持回退 PSK。您可以配置后备 PSK 以及预共享密钥或预共享密钥链。预共享密钥和预共享密钥链是互斥的。
如果仅配置了回退 PSK,且没有主 PSK,则两台设备都会尝试与回退 PSK 建立会话。如果会话启动,则从回退 PSK 派生的 SAK 将用于数据流量加密。如果已建立的会话中断,设备将继续尝试重新建立会话,并且流量将被丢弃,直到会话重新建立。
回退 PSK 配置为连接关联 (CA) 的一部分。CA 可以针对所有接口进行全局配置,也可以基于每个接口进行配置,从而允许为不同的接口使用不同的回退密钥。
要配置回退 PSK,请将 CAK 和 CKN 配置为 CA 的一部分:
[edit security macsec connectivity-association ca-name] user@switch# set fallback-key cak key user@switch# set fallback-key ckn key-name
以下限制适用于回退 PSK 配置:
回退 CAK 和 CKN 不应与预共享密钥 CKN 和 CAK 或同一 CA 下的密钥串中配置的任何密钥匹配。
必须存在安全模式配置才能配置回退密钥。
已配置密码套件的密钥长度限制适用于回退 CAK 和 CKN。
使用 GRE 配置 MACsec
平滑切换 (GRES) 功能使具有冗余路由引擎的交换机或路由器能够继续转发数据包,即使一个路由引擎 (RE) 发生故障。您可以将 MACsec 配置为在 RE 切换期间提供不间断服务。
MACsec 密钥协议 (MKA) 协议在点对点 MACsec 链路上维护两个节点之间的 MACsec 会话。MKA 协议在两个节点之间的控制平面级别工作。一个节点充当密钥服务器,并生成安全关联密钥 (SAK) 来保护链路。
当本地节点启动 RE 切换时,它会向远程对等节点发送请求,以在控制平面上挂起 MACsec 会话。在数据平面上,流量在挂起期间继续遍历点对点链路。在暂停之前编程的 SAK 将一直使用,直到切换完成。切换后,密钥服务器会生成新的 SAK 来保护链路。只要启用了 MACsec,密钥服务器就会继续通过链路定期创建和共享 SAK。
要为 MACsec 启用 GRES,您必须在本地节点上配置 suspend-for 语句,以便在 RE 切换时发送暂停请求。还必须将充当密钥服务器的节点配置为使用语 suspend-on-request 句接受挂起请求。否则,密钥服务器将拒绝任何挂起请求,从而导致 MACsec 会话终止。
配置 suspend-for 和 suspend-on-request 语句时,还必须配置 GRES 和不间断路由。
使用 功能浏览器 确认平台和版本对特定功能的支持。
在 GRES 期间,禁用以下 MACsec 功能:
-
主键、回退键或前键开关。
-
钥匙扣钥匙开关。
-
SAK 重新密钥计时器。
要为 MACsec 启用 GRES,请在本地节点上使用以下配置: