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 基于端口的身份验证,请求者必须首先向身份验证者提供所需的凭据 - 这些凭据将由网络管理员预先指定,并且可能包括用户名/密码或允许的数字证书身份验证器将这些凭据转发给身份验证服务器,以决定是否授予访问权限。如果身份验证服务器确定凭据有效,它会通知身份验证器,从而允许请求者(客户端设备)访问位于网络受保护侧的资源。

典型的身份验证过程包括

图2:802.1X典型认证过程
  1. 初始化  在检测到新的请求者时,交换机(验证器)上的端口被启用并设置为“未授权”状态。在这种状态下,只允许 802.1X 流量;其他流量,例如Internet 协议(以及使用该TCPUDP),将被丢弃。
  2. 启动  为了启动认证,认证器将定期将 EAP-Request Identity 帧发送到本地网段上的特殊第 2 层地址 (01:80:C2:00:00:03)。请求者侦听此地址,并在收到 EAP-Request Identity 帧后,以包含请求者标识符(如用户 ID)的 EAP-Response Identity 帧进行响应。然后,身份验证器将此身份响应封装在 RADIUS 访问请求数据包中,并将其转发到身份验证服务器。请求者也可以通过向认证者发送一个 EAPOL-Start 帧来启动或重新开始认证,然后认证者将回复一个 EAP-Request Identity 帧。
  3. 协商  (技术上是 EAP 协商)身份验证服务器向身份验证者发送回复(封装在 RADIUS 访问挑战数据包中),其中包含指定 EAP 方法的 EAP 请求(它希望请求者执行的基于 EAP 的身份验证类型)。验证者将 EAP 请求封装在 EAPOL 帧中,并将其传输给请求者。此时,请求者可以开始使用请求的 EAP 方法,或者执行 NAK(“否定确认”)并以它愿意执行的 EAP 方法进行响应。
  4. 身份验证  如果身份验证服务器和请求者就 EAP 方法达成一致,则在请求者和身份验证服务器之间发送 EAP 请求和响应(由身份验证者翻译),直到身份验证服务器使用 EAP-Success 消息(封装在 RADIUS 访问-Accept 数据包)或 EAP-Failure 消息(封装在 RADIUS Access-Reject 数据包中)。如果认证成功,认证者将端口设置为“授权”状态并允许正常流量,如果不成功,则端口保持在“未授权”状态。当请求者注销时,它会向认证者发送一条 EAPOL-logoff 消息,然后认证者将端口设置为“未授权”状态,再次阻止所有非 EAP 流量。

EAPOL在数据链路层上运行,在Ethernet II中,EtherType值为0x888E如图3所示,EAPOL 的帧格式如下表所示:

MAC HeaderEthernet TypeVersionPacket TypePacket Body LengthPacket BodyFCS
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 TypeAssignment
0 EAP-Packet
1 EAPOL-Start
2 EAPOL-Logoff
3 EAPOL-Key
4 EAPOL-Encapsulated-ASF-Alert

 图3:EAPOL协议字段