配置高级 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 加密且未指定加密算法,则将使用默认 (gcm-aes-128) 加密算法,而不使用 XPN 模式。
在 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 流量。
您可以使用 CLI 语句配置 should-secure
失效开放模式。这允许 MACsec 安全链路上的流量,即使 MKA 会话处于非活动状态也是如此。流量以明文形式传输,不带 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) 帧不会在延迟两秒或更长时间后传递。这可确保中间人攻击导致的 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 或基于每个接口配置 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。
使用 GRES 配置 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 会话终止。
配置 and suspend-for
suspend-on-request
语句时,还必须配置 GRES 和不间断路由。
在 GRES 期间,将禁用以下 MACsec 功能:
-
主键开关、回退键开关或前面的键开关。
-
钥匙串钥匙开关。
-
SAK 重新密钥计时器。
要为 MACsec 启用 GRES,请在本地节点上使用以下配置: