「NAC」- IEEE 802.1X(dot1x)

  CREATED BY JENKINSBOT

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客户端发来的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)基于端口模式:当采用基于端口方式时,只要该端口下的第一个用户认证成功后,其他接入用户无须认证就可使用网络资源。但是当第一个用户下线后,其他用户也会被拒绝使用网络。
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命令用来使能接口的二层协议透明传输功能。