「NAC」- IEEE 802.1X(dot1x)

802.1X 是 IEEE 制定的关于用户接入网络的认证标准,主要解决以太网内认证和安全方面的问题;

原理简述

802.1X 认证是一种基于端口的网络接入控制协议,即在 接入设备的端口 这一级验证用户身份并控制其访问权限;

特性特征

WIP

应用场景

适用于对安全要求较高的办公用户认证场景;
对于大中型企业的员工,推荐使用 802.1X 认证;

组网方式(网络结构)

802.1X 认证系统为典型的 Client/Server 结构,包括 3 个实体:
1)请求方(客户端):802.1X 客户端一般为用户终端设备,用户可以通过启动客户端软件发起 802.1X 认证;
2)认证方(接入设备):网络接入设备通常为支持 802.1X 认证的网络设备,它为客户端提供接入局域网的端口,该端口可以是物理端口,也可以是逻辑端口;
3)认证服务器:通常是 RADIUS 服务器,用于对申请者进行认证、授权和计费;

在客户端与设备端间

802.1X 认证使用 EAPoL(Extensible Authentication Protocol over LAN,局域网可扩展认证协议),实现客户端与设备端间认证信息的交换。EAPoL 定义了在 IEEE 802(例如 802.3 和 802.11 等)网络上的 EAP 封装,EAPoL 只负责在 802.1X 客户端和接入设备之间传送 EAP 报文,不负责实现具体的认证功能;

EAP 报文使用 EAPoL 封装格式,直接承载于 LAN 环境中。802.1X 认证系统使用 EAP(可扩展认证协议,Extensible Authentication Protocol)来实现申请者、认证方、认证服务器之间的信息交互;

常见的 EAP 认证协议有 EAP-TLS (Transport Layer Security,传输层安全性协议)、EAP-TTLS (Tunneled Transport Layer Security,隧道传输层安全)、EAP-PEAP (Protected Extensible Authentication Protocol,防护扩展验证协议)、EAP-MD5 (Message Digest Algorithm 5,消息摘要算法第五版)等;

常用的 802.1X 认证协议其区别如下:
1)PEAP:管理员给用户分配用户名、密码,而用户在接入时输入用户名、密码进行认证;
2)TLS:用户使用证书进行认证,此认证方式一般结合企业 App 使用,如 Huawei EasyAccess 等;

在网络接入设备与认证服务器间

用户可以根据客户端支持情况和网络安全要求来决定采用的认证方式:
1)在 EAP 终结方式中,EAP 报文在设备端终结并重新封装到 RADIUS 报文中,利用标准 RADIUS 协议完成认证、授权和计费;
2)在 EAP 中继方式中,EAP 报文被直接封装到 RADIUS 报文中(EAP over RADIUS,简称为 EAPoR),以便穿越复杂的网络到达认证服务器;

认证协议的传递方式

根据接入设备对 802.1X 客户端发送的 EAPoL 报文处理机制的不同,可将认证方式分为 EAP 中继方式和 EAP 终结方式;

EAP 中继方式(透传)

接入设备将 802.1X Client 发来的 EAPoL 报文直接封装到 RADIUS 报文中,无需对 EAP 内的数据进行处理;

对于常用的 EAP-TLS、EAP-TTLS、EAP-PEAP 三种认证方式:EAP-TLS 需要在客户端和服务器上加载证书,安全性最高;EAP-TTLS、EAP-PEAP 需要在服务器上加载证书,但不需要在客户端加载证书,部署相对灵活,安全性较 EAP-TLS 低;

优点:设备端处理更简单;支持更多的认证方法;
缺点:对认证服务器的要求较高,认证服务器必须支持 EAP,且处理能力要足够强;

EAP 终结方式(代理)

接入设备需要“提取” EAPoL 报文中的信息,并封装到 RADIUS 报文中发送给认证服务器;

PAP 与 CHAP 的主要区别是 CHAP 密码通过密文方式传输,而 PAP 密码通过明文的方式传输。因而 PAP 方式认证的安全性较低,实际应用通常采用 CHAP 方式认证;

优点:现有的 RADIUS Server 基本均支持 PAP 和 CHAP 认证,无需升级服务器;
缺点:设备端的工作比较繁重,对接入设备的要求较高,因为在这种认证方式中,设备端不仅要从来自客户端的 EAP 报文中提取客户端认证信息,还要通过标准的 RADIUS 协议对这些信息进行封装,且不能支持除 MD5-Challenge 之外的其它 EAP 认证方法;

认证协议的交互流程

认证触发方式:
1)客户端主动触发方式:用户主动开启客户端输入用户名和密码向接入设备发送 EAP 报文来触发认证;
2)接入设备主动触发方式:接入设备在接收到用户终端发送的 DHCP/ARP 报文后,主动触发用户终端自动弹出客户端界面,用户输入用户名和密码即可启动认证;

接入控制方式:
1)基于 Port 模式:当采用基于端口方式时,只要该端口下的第一个用户认证成功后,其他接入用户无须认证就可使用网络资源。但是当第一个用户下线后,其他用户也会被拒绝使用网络;
2)基于 MAC 模式:当采用基于 MAC 地址方式时,该端口下的所有接入用户均需要单独认证。当某一用户下线时,不影响其他用户接入网络;

EAP 中继方式(EAP-MD5 认证为例)

EAP 中继方式的认证流程:
1)当用户需要访问外部网络时打开 802.1X 客户端程序,输入已经申请、登记过的用户名和密码,发起连接请求。此时,客户端程序将向设备端发出认证请求报文(EAPoL-Start),开始启动一次认证过程;
2)设备端收到认证请求报文后,将发出一个 Identity 类型的请求报文(EAP-Request/Identity)要求用户的客户端程序发送输入的用户名;
3)客户端程序响应设备端发出的请求,将用户名信息通过 Identity 类型的响应报文(EAP-Response/Identity)发送给设备端;
4)设备端将客户端发送的响应报文中的 EAP 报文封装在 RADIUS 报文(RADIUS Access-Request)中发送给认证服务器进行处理;
5)RADIUS 服务器收到设备端转发的用户名信息后,将该信息与数据库中的用户名列表对比,找到该用户名对应的密码信息,用随机生成的一个 MD5 Challenge 对密码进行加密处理,同时将此 MD5 Challenge 通过 RADIUS Access-Challenge 报文发送给设备端;
6)设备端将 RADIUS 服务器发送的 MD5 Challenge 转发给客户端;
7)客户端收到由设备端传来的 MD5 Challenge 后,用该 Challenge 对密码部分进行加密处理,生成 EAP-Response/MD5 Challenge 报文,并发送给设备端;
8)设备端将此 EAP-Response/MD5 Challenge 报文封装在 RADIUS 报文(RADIUS Access-Request)中发送给 RADIUS 服务器;
9)RADIUS 服务器将收到的已加密的密码信息和本地经过加密运算后的密码信息进行对比,如果相同,则认为该用户为合法用户,并向设备端发送认证通过报文(RADIUS Access-Accept);
10)设备收到认证通过报文后向客户端发送认证成功报文(EAP-Success),并将端口改为授权状态,允许用户通过该端口访问网络;

EAP 终结方式

EAP 终结方式与 EAP 中继方式的认证流程相比,不同之处在于:用来对用户密码信息进行加密处理的 MD5 Challenge 由设备端生成,之后设备端会把用户名、MD5 Challenge 和客户端加密后的密码信息一起送给 RADIUS 服务器,进行相关的认证处理。而在 EAP 中继方式中,用来对用户密码进行加密处理的 MD5 Challenge 由认证服务器生成,设备端只是负责将 EAP 报文封装在 RADIUS 报文中透传认证服务器,整个认证处理都由认证服务器来完成;

配置案例

创建 / 进入 802.1X 接入模板视图
[Huawei] dot1x-access-profile name access-profile-name
设备通过 802.1X 接入模板统一管理 802.1X 接入相关的所有配置。缺省情况下,设备自带 1 个名称为 dot1x_access_profile 的 802.1X 接入模板;

配置 802.1X 用户的认证方式
[Huawei-dot1x-access-profile-ProfileName] dot1x authentication-method { chap | pap | eap }
在 802.1X 认证中,设备支持 EAP 终结和 EAP 中继两种认证方式;
EAP 终结方式:设备直接解析 EAP 报文,把报文中的用户认证信息封装到 RADIUS 报文中发送给 RADIUS 服务器进行认证。通过配置 CHAP 或 PAP 参数,指定设备与 RADIUS 服务器之间的认证方式;
EAP 中继方式:设备不对接收到的包含用户认证信息的 EAP 报文作任何处理,直接封装到 RADIUS 报文中发送给 RADIUS 服务器完成认证,这个技术也称为 EAPoR;

配置能够触发 802.1X 认证的报文类型
[Huawei-dot1x-access-profile-ProfileName] authentication trigger-condition { dhcp | arp | dhcpv6 | nd | any-l2-packet }
使能 802.1X 认证功能后,缺省情况下,DHCP 、DHCPv6 、ND 或 ARP 报文均能触发设备对用户进行 802.1X 认证;

配置 802.1X 认证报文二层透明传输功能
[Huawei] l2protocol-tunnel user-defined-protocol protocol-name protocol-mac protocol-mac group-mac group-mac
[Huawei-GigabitEthernet0/0/1] l2protocol-tunnel user-defined-protocol protocol-name enable
802.1X 认证场景中,如果使能 802.1X 认证的接入设备和用户之间存在二层交换机,则需要在二层交换机上配置 802.1X 认证报文二层透明传输功能,否则用户无法认证成功;
l2protocol-tunnel user-defined-protocol 命令用来自定义二层协议报文,包括协议的名称、报文组播目的 MAC 地址(protocol-mac)、报文被替换后的组播 MAC 地址(group-mac)。对于 802.1X 而言, protocol-mac 和 group-mac 分别为 0180-c200-0003 和 0100-0000-0002;
l2protocol-tunnel enable 命令用来使能接口的二层协议透明传输功能;