背景
一般情况下,绝大部分数据在局域网链路中都是以明文形式传输的,这样就会存在许多安全隐患,比如:银行帐户的信息被窃取、篡改,遭受恶意网络攻击等。网络中部署MACsec后,可对传输的以太网数据帧进行保护,降低信息泄漏和遭受恶意网络攻击的风险。
MACsec概述
MACsec(Media Access Control Security)是基于802.1AE和802.1X协议的局域网上的安全通信方法。通过身份认证、数据加密、完整性校验、重播保护等功能保证以太网数据帧的安全性,防止设备处理有安全威胁的报文。MACsec从以下几个方面保障了用户业务数据在局域网中的安全传输:
- 数据帧完整性检查
- 用户数据加密
- 数据源真实性校验
- 重放保护
典型应用场景
- 在交换机之间部署MACsec保护数据安全,例如在接入交换机与上联的汇聚或核心交换机之间部署。
- 当交换机之间存在传输设备时可部署MACsec保护数据安全。
1.点到点传输数据
SwitchA和SwitchB之间传输重要数据,通过部署点到点的MACsec对数据进行安全保护。
2.间含透传设备的点到点传输数据
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生成,用于数据报文的加密和解密。
1.运行机制
点到点的MACsec交互过程主要分为三个阶段:会话协商、安全通信和会话保活。
MACsec交互过程示意图
点到点的MACsec交互过程:
(1) 会话协商
- 两端设备的接口开启MACsec功能后,根据优先级选举出密钥服务器(Key Server)。用户可以配置接口的优先级数值,数值越小优先级越高,优先级高的设备接口将被选举为密钥服务器。当双方优先级相同时,则比较接口的SCI(Secure Channel Identifier)值,SCI由接口MAC地址和接口索引(Interface Index)的最后两个字节组成,SCI值小的接口将被选举为密钥服务器。
- 两端设备静态配置相同的CAK,密钥服务器根据静态配置的CAK生成用于加密数据报文的SAK,分发给对端设备。
(2) 安全通信
发送方使用SAK加密数据报文,接收方使用SAK解密数据报文。两端设备既可以作为发送方,也可以作为接收方,通信过程都受到MACsec保护。用户还可以配置SAK的超时时间,当SAK的使用时间达到超时时间或SAK加密报文达到一定数量,则更换SAK,确保密钥的安全性。
(3) 会话保活
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实体。
配置命令介绍
1.配置静态CKN和CAK
进入系统视图:
system-view
进入接口视图:
interface interface-type interface-number [ .subinterface-number ]
配置静态CKN和CAK:
mka cak-mode static ckn ckn cak { simple cak-simple | cipher cak-cipher }
2.配置MACsec加密模式
当接口发送的数据报文通过MACsec进行加密时,可选择配置接口的加密模式,
- normal:既进行完整性校验又进行数据加密。
- integrity-only:只进行完整性校验不进行数据加密。
进入系统视图1:
system-view
进入接口视图:
interface interface-type interface-number [ .subinterface-number ]
配置MACsec的加密模式:
macsec mode { normal | integrity-only }
3.配置MACsec加密算法
进入系统视图:
system-view
进入接口视图:
interface interface-type interface-number [ .subinterface-number ]
配置MACsec的加密算法:
macsec cipher-suite { gcm-aes-128 | gcm-aes-xpn-128 | gcm-aes-256 | gcm-aes-xpn-256 }
4.查看配置结果
查看经过MACsec保护的数据报文的统计信息。
display macsec statistics interface { interface-name | interface-type interface-number}
查看MKA会话信息:
display mka interface { interface-name | interface-type interface-number }
MACsec配置举例
1.配置点到点的MACsec
点到点的MACsec配置组网图
路由器DeviceA与路由器DeviceB直连,在DeviceA和DeviceB的接口GE1/0/0上对MACsec数据报文进行加解密。
2.配置思路
采用如下思路配置点到点的MACsec:在DeviceA、DeviceB设备GE1/0/0接口上配置相同的静态CKN和CAK;
3.数据准备
为完成该配置例,需要准备如下数据:
- 接口的CKN和CAK值
- DeviceA接口发送的数据通过gcm-aes-xpn-128进行加密
4.操作步骤
接口GE1/0/0配置密文CKN、CAK。
<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执行同样的配置。