IEEE 802.1X
IEEE 802.1X是一项IEEE(Institute of Electrical and Electronics Engineers)基于端口的网络访问控制标准。制订802.1x协议的初衷是为了解决无线局域网用户的接入认证问题。它是IEEE 802.1网络协议组的一部分。IEEE802 LAN协议定义的局域网并不提供接入认证,只要用户能接入局域网控制设备 (如LAN Switch) ,就可以访问局域网中的设备或资源。早期企业网有线LAN应用环境下并不存在明显的安全隐患。但是随着移动办公及驻地网运营等应用的大规模发展,服务提供者需要对用户的接入进行控制和配置它为连接到LAN(Local Area Network)或WLAN(Wireless Local Area Network)的设备提供了一种身份验证机制。尤其是WLAN的应用和LAN接入在电信网上大规模开展,有必要对端口加以控制以实现用户级的接入控制,802.lx就是IEEE为了解决基于端口的接入控制 (Port-Based Network Access Contro1) 而定义的一个标准。 IEEE 802.1X定义了基于IEEE 802.11的可扩展身份验证协议(Extensible Authentication Protocol,EAP)的封装,称为“EAP over LAN”或 EAPOL。EAPOL适应其他IEEE 802 LAN 技术,例如802.1 中的IEEE 802.11无线和光纤分布式数据接口(ANSI X3T9.5/X3T12 和 ISO 9314) X-2004。EAPOL 也被修改为与802.1X-2010 中的IEEE 802.1AE(“MACsec”)和IEEE 802.1AR(安全设备身份,DevID)一起使用支持内部 LAN 段上的服务识别和可选的点对点加密。
802.1X认证过程涉及三方:请求者、认证者和认证服务器。请求者是希望连接到LAN/WLAN的客户端设备(如笔记本电脑),也指在客户端上运行的向身份验证者提供凭据的软件。身份验证器是一种网络设备,它在客户端和网络之前提供数据链路,并且可以允许或阻止两者之间的网络流量,例如以太网交换机或无线接入点。认证服务器通常是一个受信任的服务器,可以接收和响应网络访问请求,并且可以告诉身份验证器是否允许连接,以及应该应用于该客户端的连接或设置。身份验证服务器通常运行支持(远程身份验证拨入用户服务,Remote Authentication Dial-In User Service)RADIUS和(可扩展身份验证协议)EAP协议的软件。在某些情况下,认证服务器软件可能在认证器硬件上运行。
图1:802.1X认证过程示意图
如图1所示,对于 802.1X 基于端口的身份验证,请求者必须首先向身份验证者提供所需的凭据 - 这些凭据将由网络管理员预先指定,并且可能包括用户名/密码或允许的数字证书. 身份验证器将这些凭据转发给身份验证服务器,以决定是否授予访问权限。如果身份验证服务器确定凭据有效,它会通知身份验证器,从而允许请求者(客户端设备)访问位于网络受保护侧的资源。
典型的身份验证过程包括:

- 初始化 在检测到新的请求者时,交换机(验证器)上的端口被启用并设置为“未授权”状态。在这种状态下,只允许 802.1X 流量;其他流量,例如Internet 协议(以及使用该TCP和UDP),将被丢弃。
- 启动 为了启动认证,认证器将定期将 EAP-Request Identity 帧发送到本地网段上的特殊第 2 层地址 (01:80:C2:00:00:03)。请求者侦听此地址,并在收到 EAP-Request Identity 帧后,以包含请求者标识符(如用户 ID)的 EAP-Response Identity 帧进行响应。然后,身份验证器将此身份响应封装在 RADIUS 访问请求数据包中,并将其转发到身份验证服务器。请求者也可以通过向认证者发送一个 EAPOL-Start 帧来启动或重新开始认证,然后认证者将回复一个 EAP-Request Identity 帧。
- 协商 (技术上是 EAP 协商)身份验证服务器向身份验证者发送回复(封装在 RADIUS 访问挑战数据包中),其中包含指定 EAP 方法的 EAP 请求(它希望请求者执行的基于 EAP 的身份验证类型)。验证者将 EAP 请求封装在 EAPOL 帧中,并将其传输给请求者。此时,请求者可以开始使用请求的 EAP 方法,或者执行 NAK(“否定确认”)并以它愿意执行的 EAP 方法进行响应。
- 身份验证 如果身份验证服务器和请求者就 EAP 方法达成一致,则在请求者和身份验证服务器之间发送 EAP 请求和响应(由身份验证者翻译),直到身份验证服务器使用 EAP-Success 消息(封装在 RADIUS 访问-Accept 数据包)或 EAP-Failure 消息(封装在 RADIUS Access-Reject 数据包中)。如果认证成功,认证者将端口设置为“授权”状态并允许正常流量,如果不成功,则端口保持在“未授权”状态。当请求者注销时,它会向认证者发送一条 EAPOL-logoff 消息,然后认证者将端口设置为“未授权”状态,再次阻止所有非 EAP 流量。
EAPOL在数据链路层上运行,在Ethernet II中,EtherType值为0x888E如图3所示,EAPOL 的帧格式如下表所示:
MAC Header | Ethernet Type | Version | Packet Type | Packet Body Length | Packet Body | FCS |
---|---|---|---|---|---|---|
12 bytes | 2 bytes | 1 byte | 1 byte | 2 bytes | variable length | 4 bytes |
- MAC Header 表示 MAC 地址,前 6 个字节是目标地址,后 6 个字节是源地址。
- Ethernet Type 表示类型代码,分配给 EAPoL 的是 0x888e。
- Version 表示 802.1X 版本。
- Packet Type 表示帧的类型,分配如下表所示:
Packet Type | Assignment |
---|---|
0 | EAP-Packet |
1 | EAPOL-Start |
2 | EAPOL-Logoff |
3 | EAPOL-Key |
4 | EAPOL-Encapsulated-ASF-Alert |
图3:EAPOL协议字段