背景 一般情况下,绝大部分数据在局域网链路中都是以明文形式传输的,这样就会存在许多安全隐患,比如:银行帐户的信息被窃取、篡改,遭受恶意网络攻击等。网络中部署MACsec后,可对传输的以太网数据帧进行保护,降低信息泄漏和遭受恶意网络攻击的风险。
MACsec概述 MACsec(Media Access Control Security)是基于802.1AE和802.1X协议的局域网上的安全通信方法。通过身份认证、数据加密、完整性校验、重播保护等功能保证以太网数据帧的安全性,防止设备处理有安全威胁的报文。 MACsec从以下几个方面保障了用户业务数据在局域网中的安全传输:
典型应用场景 在交换机之间部署MACsec保护数据安全,例如在接入交换机与上联的汇聚或核心交换机之间部署。 当交换机之间存在传输设备时可部署MACsec保护数据安全。 点到点传输数据 SwitchA和SwitchB之间传输重要数据,通过部署点到点的MACsec对数据进行安全保护。
间含透传设备的点到点传输数据 SwitchA和SwitchB之间存在透传交换机SwitchC、SwitchD和SwitchE,SwitchA和SwitchB之间部署点到点的MACsec对数据进行安全保护。为保证SwitchA和SwitchB能够进行MACsec会话协商,需要透传交换机支持二层协议透明传输功能。
MACsec工作机制 MACsec安全通道的建立和管理以及MACsec所使用密钥的协商由MKA(MACsec Key Agreement)协议负责。下面介绍MKA协议工作过程中涉及的基本概念:
CA(Secure Connectivity Association)是由密钥协商协议负责建立和维护的安全关联,是局域网上支持MACsec的两个或两个以上使用相同密钥和密钥算法套件的成员的集合。CA成员使用的密钥称为CAK(Secure Connectivity Association Key)。MACsec主要应用在点对点组网的环境中,即从一台设备的接口到另一台设备的接口的组网,所以主要使用成对CAK。两个相连的设备组成一个CA,它们使用相同的CAK。 SA(Secure Association)是保证CA成员之间数据帧安全传输的安全关系。每个SA都有一个或一组加密数据帧的密钥,称为SAK(Secure Association Key)。SAK由算法根据CAK生成,用于数据报文的加密和解密。 运行机制 点到点的MACsec交互过程主要分为三个阶段:会话协商、安全通信和会话保活。
MACsec交互过程示意图 点到点的MACsec交互过程:
两端设备的接口开启MACsec功能后,根据优先级选举出密钥服务器(Key Server)。用户可以配置接口的优先级数值,数值越小优先级越高,优先级高的设备接口将被选举为密钥服务器。当双方优先级相同时,则比较接口的SCI(Secure Channel Identifier)值,SCI由接口MAC地址和接口索引(Interface Index)的最后两个字节组成,SCI值小的接口将被选举为密钥服务器。 两端设备静态配置相同的CAK,密钥服务器根据静态配置的CAK生成用于加密数据报文的SAK,分发给对端设备。 发送方使用SAK加密数据报文,接收方使用SAK解密数据报文。两端设备既可以作为发送方,也可以作为接收方,通信过程都受到MACsec保护。用户还可以配置SAK的超时时间,当SAK的使用时间达到超时时间或SAK加密报文达到一定数量,则更换SAK,确保密钥的安全性。
MKA协议定义了一个MKA会话保活定时器,用来规定MKA会话的超时时间。MKA会话协商成功后,两端设备会通过交互MKA协议报文确认连接的存在。设备收到对端MKA协议报文后,启动定时器。
如果在该超时时间内收到对端的MKA协议报文,则重启定时器。 如果在该超时时间内未收到对端的MKA协议报文,则认为该连接已不安全,删除对端设备,重新进行MKA协商。 ❝ CAK(Secure Connectivity Association Key,安全连接关联密钥)不直接用于数据报文的加密,由它和其他参数派生出数据报文的加密密钥。CAK可以在802.1X认证过程中下发,也可以由用户直接静态配置。 MKA(MACsec Key Agreement protocol)用于MACsec 数据加密密钥的协商协议。 SAK(Secure Association Key,安全关联密钥)由CAK根据算法推导产生,用于加密安全通道间传输的数据。MKA对每一个SAK可加密的报文数目有所限制,当使用某SAK加密的PN耗尽,该SAK会被刷新。例如,在10Gbps 的链路上,SAK最快4.8分钟刷新一次。 Key Server决定加密方案和进行密钥分发的MKA实体。 ” 配置命令介绍 配置静态CKN和CAK system-view
interface interface-type interface-number [ .subinterface-number ]
mka cak-mode static ckn ckn cak { simple cak-simple | cipher cak-cipher }
配置MACsec加密模式 当接口发送的数据报文通过MACsec进行加密时,可选择配置接口的加密模式,
integrity-only:只进行完整性校验不进行数据加密。 system-view
interface interface-type interface-number [ .subinterface-number ]
macsec mode { normal | integrity-only }
配置MACsec加密算法 system-view
interface interface-type interface-number [ .subinterface-number ]
macsec cipher-suite { gcm-aes-128 | gcm-aes-xpn-128 | gcm-aes-256 | gcm-aes-xpn-256 }
查看配置结果 display macsec statistics interface { interface-name | interface-type interface-number}
display mka interface { interface-name | interface-type interface-number }
MACsec配置举例 配置点到点的MACsec 点到点的MACsec配置组网图 ❝ 路由器DeviceA与路由器DeviceB直连,在DeviceA和DeviceB的接口GE1/0/0上对MACsec数据报文进行加解密。
” 配置思路
采用如下思路配置点到点的MACsec:在DeviceA、DeviceB设备GE1/0/0接口上配置相同的静态CKN和CAK;
数据准备
为完成该配置例,需要准备如下数据:
DeviceA接口发送的数据通过gcm-aes-xpn-128进行加密 操作步骤
<DeviceA> system-view [~DeviceA] interface gigabitethernet1/0/0 [~DeviceA-GigabitEthernet1/0/0] mka cak-mode static ckn a1 cak cipher b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1 [*DeviceA-GigabitEthernet1/0/0] commit
接口GE1/0/0配置MACsec的加密模式。(可选配置) <DeviceA> system-view [~DeviceA] interface gigabitethernet1/0/0 [~DeviceA-GigabitEthernet1/0/0] macsec mode integrity-only [*DeviceA-GigabitEthernet1/0/0] commit
接口GE1/0/0配置MACsec的加密算法。(可选配置) <DeviceA> system-view [~DeviceA] interface gigabitethernet1/0/0 [~DeviceA-GigabitEthernet1/0/0] macsec cipher-suite gcm-aes-xpn-128 [*DeviceA-GigabitEthernet1/0/0] commit
❝ DeviceB执行同样的配置
”