前言

802.1X协议的背景

早期的IEEE 802 LAN协议中,只要用户可以接入局域网的控制设备(例如接入交换机),就可以访问局域网中的设备或资源,这无疑是存在安全隐患的。为解决无线局域网的安全问题,IEEE 802委员会提出了802.1X协议。802.1X协议可以控制用户的网络访问权限,防止身份不明或未经授权的用户传输和接收数据。由于802.1X协议的普适性,因此后来也广泛应用于有线局域网。

与其他接入控制机制不同,802.1X协议是通过控制接入端口,实现用户级的接入控制。在802.1X协议中,物理接入端口被划分为“受控端口”和“非受控端口”这两个逻辑端口,用于实现业务与认证的分离。非受控端口主要用于传递EAPOL协议帧,始终处于双向连通状态,保证客户端始终能够发出或接收认证报文;而受控端口用于传递业务报文,因此在授权状态下处于双向连通状态,在非授权状态下不从客户端接收任何报文。

换言之,基于802.1X协议的认证,其最终目的就是确定用户的接入端口是否可用。如果认证成功,那么就打开端口,允许客户端的所有报文通过;如果认证不成功,就保持端口的关闭状态,只允许EAPOL协议帧通过。

什么时候需要使用802.1X?

通常在新建网络、用户集中或者信息安全要求严格的场景中使用802.1X认证。802.1X认证具有以下优点:

  • 对接入设备的性能要求不高。802.1X协议为二层协议,不需要到达三层,可以有效降低建网成本。

  • 在未授权状态下,不允许与客户端交互业务报文,因此保证了业务安全。

以企业网络为例。员工终端一般需要接入办公网络,安全要求较高,此时推荐使用802.1X认证。

但802.1X认证要求客户端必须安装802.1X客户端软件。在机场、商业中心等公共场所,用户流动性大,终端类型复杂,且安全要求不高,可以使用Portal认证。对于打印机、传真机等哑终端,可以使用MAC认证,以应对哑终端不支持安装802.1X客户端软件,或者不支持输入用户名和密码的情况。

802.1X是如何工作的?

如下图所示,802.1X认证系统为典型的Client/Server结构,包括三个组件:客户端、接入设备和认证服务器。

802.1X系统中的组件802.1X系统中的组件

  • 客户端通常是用户终端设备。客户端必须支持局域网上的可扩展认证协议(Extensible Authentication Protocol over LANs,EAPoL),并且安装802.1X客户端软件,从而使用户能够通过启动客户端软件发起802.1X认证。

  • 接入设备通常是支持802.1X协议的网络设备,例如交换机。它为客户端提供接入局域网的端口,该端口可以是物理端口,也可以是逻辑端口。

  • 认证服务器用于实现对用户进行认证、授权和计费,通常为RADIUS服务器。

在用户终端安装802.1X客户端软件后,用户可向接入设备发起认证申请。接入设备和用户终端交互信息后,把用户信息发送到认证服务器进行认证。若认证成功,则接入设备打开与该用户相连的接口,允许其访问网络;若认证失败,则接入设备将不允许其访问网络。

802.1X认证系统使用可扩展认证协议(Extensible Authentication Protocol,EAP)来实现客户端、设备端和认证服务器之间的信息交互。EAP协议可以运行在各种底层,包括数据链路层和上层协议(如UDP、TCP等),而不需要IP地址。因此使用EAP协议的802.1X认证具有良好的灵活性。

  • 在客户端与接入设备之间,EAP协议报文使用EAPoL(EAP over LANs)封装格式,直接承载于LAN环境中。

  • 在接入设备与认证服务器之间,可以采用EAP终结方式或者EAP中继方式交互认证信息。

    • EAP终结方式:接入设备直接解析EAP报文,把报文中的用户认证信息封装到RADIUS报文中,并将RADIUS报文发送给RADIUS服务器进行认证。EAP终结方式的优点是大多数RADIUS服务器都支持PAP和CHAP认证,无需升级服务器;但对接入设备的要求较高,接入设备要从EAP报文中提取客户端认证信息,通过标准的RADIUS协议对这些信息进行封装,且不能支持大多数EAP认证方法(MD5-Challenge除外)。

    • EAP中继方式:接入设备对接收到的EAP报文不作任何处理,直接将EAP报文封装到RADIUS报文中,并将RADIUS报文发送给RADIUS服务器进行认证。EAP中继方式也被称为EAPOR(EAP over Radius)。EAP中继方式的优点是设备端处理更简单,支持更多的认证方法;缺点则是认证服务器必须支持EAP,且处理能力要足够强。

以客户端发送EAPoL-Start报文触发认证为例,EAP中继方式的802.1X认证流程如下图所示。

EAP中继认证流程EAP中继认证流程

  1. 客户端发送EAPoL-Start报文触发802.1X认证。

  2. 接入设备发送EAP请求报文,请求客户端的身份信息。

  3. 客户端程序响应接入设备发出的请求,将身份信息通过EAP响应报文发送给接入设备。

  4. 接入设备将EAP报文封装在RADIUS报文中,发送给认证服务器进行处理。

  5. RADIUS服务器收到接入设备转发的身份信息后,启动和客户端EAP认证方法的协商。RADIUS服务器选择一个EAP认证方法,将认证方法封装在RADIUS报文中,发送给接入设备。

  6. 接入设备收到RADIUS报文,将其中的EAP信息转发给客户端。

  7. 客户端收到EAP信息,解析其中的EAP认证方法。如果支持该认证方法,客户端发送EAP响应报文给接入设备;否则,客户端在EAP响应报文中封装一个支持的EAP认证方法,并发送给接入设备。

  8. 接入设备将报文中的EAP信息封装到RADIUS报文中,并发送RADIUS报文到RADIUS服务器。

  9. RADIUS服务器收到后,如果客户端与服务器选择的认证方法一致,EAP认证方法协商成功,开始认证。以EAP-PEAP认证方法为例,服务器将自己的证书封装到RADIUS报文中,通过接入设备发送给客户端。客户端与RADIUS服务器协商TLS参数,建立TLS隧道。TLS隧道建立完成后,用户信息将通过TLS加密在客户端、接入设备和RADIUS服务器之间传输。

  10. RADIUS服务器完成对客户端身份验证之后,通知接入设备认证成功。

  11. 接入设备向客户端发送认证成功报文,并将端口改为授权状态,允许用户通过该端口访问网络。

以客户端发送EAPoL-Start报文触发认证为例,EAP终结方式的802.1X认证流程如下图所示。

EAP终结认证流程EAP终结认证流程

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

简介

1. 802.1X认证简介

  • 定义:基于端口的网络接入控制协议(Port-Based NAC)。

  • 优势:工作在二层,不依赖三层IP地址,降低网络建设成本;认证报文与数据报文分离,提高安全性。

2. 系统架构

  • 三大组成部分:

    • 客户端(Supplicant):用户终端设备,运行802.1X客户端软件。

    • 接入设备(Authenticator):如交换机、无线接入点,负责转发认证信息。

    • 认证服务器(Authentication Server):通常为RADIUS服务器,执行认证、授权和计费。

3. 协议与报文

  • EAP协议:可扩展认证协议,支持多种认证方式(EAP-TLS、EAP-TTLS、PEAP等)。

  • EAPoL:在LAN环境中传输EAP报文的封装格式。

  • EAPoR:通过RADIUS传输EAP报文的方式。

4. 认证流程

  • 触发方式:客户端发送EAPoL-Start,或设备主动发起EAP-Request/Identity。

  • 交互过程:客户端与接入设备交换身份信息,接入设备与RADIUS服务器完成认证。

  • 结果:认证成功则端口进入授权状态,失败则拒绝访问。

5. 授权机制

  • 常见授权参数:

    • VLAN:动态分配用户所属VLAN。

    • ACL:基于访问控制列表限制用户流量。

    • UCL组:按用户组策略进行统一管理。

  • Free-rule:在认证前允许用户访问特定资源(如注册页面)。

6. 高级功能

  • 重认证:周期性或手动触发,确保用户权限实时更新。

  • 下线检测:通过握手报文、ARP探测或RADIUS控制,及时感知用户下线。

  • 定时器控制:包括认证请求超时、MD5挑战超时、静默定时器等,用于优化认证过程。

交换机802.1X配置

Radius环境

  • 将客户机系统+网卡驱动和接入交换机系统更新到最新稳定版本。

  • Radius服务器使用Windows Server 的NPS角色

  • 使用Radius服务器根据用户组/计算机组动态下发VLAN到交换机

AD+Radius服务器搭建:https://songxwn.com/categories/AD/

华为交换机配置802.1X认证

命令配置示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

###阶段1### RADIUS服务器配置

radius-server template NPS-server
# 创建一个名为 NPS-server 的 RADIUS 服务器模板


radius-server shared-key cipher Songxwm.com
# 设置 RADIUS 服务器的共享密钥(加密形式),需与 NPS 服务器配置一致


radius-server authentication 192.168.99.200 1812
# 指定 RADIUS 服务器的 IP 地址和认证端口(默认 1812)



###阶段2### AAA与域配置

aaa
# 进入 AAA 配置模式


authentication-scheme radius
# 创建一个名为 radius 的认证方案


authentication-mode radius
# 设置认证模式为 RADIUS


domain songxwn.local
# 创建一个名为 songxwn.local 的认证域


authentication-scheme radius
# 将该认证域绑定到 radius 认证方案


accounting-scheme default
# 使用默认的计费方案


radius-server NPS-server
# 将该认证域绑定到 NPS-server RADIUS 模板



###阶段3### 802.1X接入配置文件

dot1x-access-profile name dot1x_access_profile
# 创建一个名为 dot1x_access_profile 的 802.1X 接入配置文件



###阶段4### 认证配置文件

authentication-profile name NPS
# 创建一个名为 NPS 的认证配置文件


dot1x-access-profile dot1x_access_profile
# 将 dot1x_access_profile 绑定到 NPS 认证配置文件


access-domain songxwn.local force
# 强制使用 songxwn.local 域进行认证



###阶段5### 接口绑定配置

interface GE2/0/12
# 进入接口 GE2/0/12 的配置模式


port link-type hybrid
# 设置该端口为 hybrid 类型(既可承载接入 VLAN,又可承载业务 VLAN)


authentication-profile NPS
# 在该端口应用 NPS 认证配置文件,实现基于 RADIUS 的 802.1X 认证


来宾VLAN

当用户接入端口但未通过 802.1X 认证时,交换机会自动将其放入一个指定的 VLAN(通常是隔离的网络,只能有限资源,如AD),避免完全断网可认证逃生。

1
2
3
4
5
6
7
8
9
10
11
dot1x guest-vlan 20
# 配置来宾 VLAN,编号为 20(可根据实际情况修改)
# 未通过 802.1X 认证的用户将被分配到 VLAN 20

interface GE2/0/12
port link-type hybrid
authentication-profile NPS
dot1x guest-vlan 20
# 在接口 GE2/0/12 上启用来宾 VLAN,当认证失败或超时,用户进入 VLAN 20


锐捷交换机配置802.1X认证

命令示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70


## ###阶段1### AAA与RADIUS基础配置

aaa new-model
# 启用 AAA 新模型

aaa accounting update periodic 15
# 设置计费更新周期为 15 分钟

aaa accounting update
# 启用计费更新功能

aaa accounting network account-method start-stop group radius
# 配置网络计费方法,使用 RADIUS,启停方式为 start-stop

aaa accounting network ruijie start-stop group radius
# 创建名为 ruijie 的网络计费方案,使用 RADIUS

aaa authentication dot1x ruijie group radius
# 配置 802.1X 认证方案 ruijie,使用 RADIUS



## ###阶段2### RADIUS服务器组配置


aaa group server radius ruijie
server 192.168.1.6
# 创建名为 ruijie 的 RADIUS 服务器组,并指定服务器 IP 地址


## ###阶段3### RADIUS服务器参数配置


radius-server host 192.168.1.6 test username test key 0 password
# 配置 RADIUS 服务器主机,测试用户名为 test,密钥为 password

radius-server key 0 password
# 设置 RADIUS 服务器共享密钥(需与服务器端一致)




## ###阶段4### 802.1X认证与计费配置


dot1x accounting ruijie
# 启用 dot1x 计费,使用 ruijie 方案

dot1x authentication ruijie
# 启用 dot1x 认证,使用 ruijie 方案



## ###阶段5### 接口绑定配置

interface GigabitEthernet 2/0/7
description songxwn.com
# 进入接口 GigabitEthernet 2/0/7,并添加描述

switchport mode trunk
# 设置端口为 trunk 模式(承载多个 VLAN)

dot1x port-control auto
# 启用 802.1X 自动端口控制模式

dot1x dynamic-vlan enable
# 启用动态 VLAN 功能,根据认证结果分配 VLAN

来宾VLAN

当用户接入端口但未通过 802.1X 认证时,交换机会自动将其放入一个指定的 VLAN(通常是隔离的网络,只能有限资源,如AD),避免完全断网可认证逃生。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15


dot1x guest-vlan 20
# 配置来宾 VLAN,编号为 20(可根据实际情况修改)
# 未通过 802.1X 认证的用户将被分配到 VLAN 20

interface GigabitEthernet 2/0/7
description songxwn.com
switchport mode trunk
dot1x port-control auto
dot1x dynamic-vlan enable
dot1x guest-vlan 20
# 在接口上启用来宾 VLAN,当认证失败或超时,用户进入 VLAN 20


报文交互示例下载链接

https://gitlab.com/wireshark/wireshark/-/wikis/uploads/__moin_import__/attachments/SampleCaptures/eapol-mka.pcap

Wiresharek最新版下载:https://mirrors.tuna.tsinghua.edu.cn/wireshark/win64/Wireshark-latest-x64.exe

参考文档

https://support.huawei.com/enterprise/zh/doc/EDOC1100086515/d81b8af6

https://info.support.huawei.com/info-finder/encyclopedia/zh/RADIUS.html

https://info.support.huawei.com/info-finder/encyclopedia/zh/802.1X.html

运维技术交流群

发送邮件到 ➡️ [email protected]

或者关注WX公众号:网工格物

微信扫码

博客(最先更新)

https://songxwn.com/