个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。
此处在于记录一次dot1x认证/EAP认证/RADIUS交互过程。
…
关于EAP协议实现上还存在大量其他相关资料,这里仅提供一点参考资料。
Note:这次仅提供一点关于报文交互的说明。协议的实际实现可能存在差异。
个人能力有限,敬请各位指导。
802.1X认证,又称Dot1x认证(省略802后的“点1x”读法),是一种基于端口的 Port based networkaccess control protocol网络接入控制协议。
通常在局域网接入设备时验证用户身份并控制其访问权限。也即,在认证通过之前,802.1x只允许终端进行EAPOL(Extensible Authentication Protocol Over LAN)数据交互;在认证通过以后,终端才可以正常访问提供的业务。
EAP认证模式
EAP中继认证:
来自终端的EAP报文(反映用户信息)不经修改的被 BAS/NAS/BRAS 直接封装到RADIUS报文中(EAP over RADIUS,简称为EAPoR)。BAS/NAS/BRAS 以类似代理的方式穿越复杂的三层网络与 RADIUS Server 进行认证信息交互。
EAP终结认证:
来自终端的 EAP 报文终结于 BAS/NAS/BRAS 设备上。BAS/NAS/BRAS 重新封装入 RADIUS 报文中后,利用标准RADIUS协议完成认证、授权和计费。
@:BAS/BRAS/NAS 分别指宽带接入服务器/宽带远程接入服务器/网络接入服务器,是一种网络角色。这三种概念在网络模型中往往是重叠的。详细介绍可参考博客-RADIUS协议原理介绍+报文分析+配置指导-RFC2865/RFC2866。
@:Dot1x认证系统使用认证系统使用EAP协议进行信息交互。EAP协议可以运行在各种底层,包括数据链路层和上层协议(如UDP、TCP等),而不需要IP地址。因此使用EAP协议的Dot1x认证具有良好的灵活性。
@:本次交互以EAP中继认证为例进行介绍。
//dot1x authentication-method用来配置802.1X用户的认证方式。
eap通常指EAP中继模式,chap和pap通常指EAP终结模式。区别在于pap方式下 RADIUS Access-Request 报文中包含了 RADIUS AVP2=User-Password,而chap方式下 RADIUS Access-Request 报文中包含了 RADIUS AVP3=CHAP-Password。
此处重点介绍EAP协议的相关信息,关于RADIUS协议的详细介绍可参考博客-RADIUS协议原理介绍+报文分析+配置指导-RFC2865/RFC2866。
EAP协议:自报文数据链路层开始介绍。
1@Ethernet Type:整个 802.1X 认证信息直接位于数据链路层之上,Ethernet Type=0x888e。
[email protected] Version:常用 802.1X Version有 802.1X-2001(Version=0x01)、802.1X-2004(Version=0x02)和 802.1X-2010(Version=0x03)。此处协议使用 802.1X-2001(Version=0x01)。
[email protected] Type:EAP/EAPoL数据帧类型数据帧类型。
0x00=EAP-Packet:表示认证报文数据,用于承载认证信息;
0x01=EAPoL-Start:表示认证开始报文,用于用户主动发起认证过程;
0x02=EAPoL-Logoff:表示EAPoL-Logoff,用于用户主动发起下线请求;
0x03=EAPoL-Key:表示EAPoL-Key,密钥信息报文。
4@EAP Code:标识 EAP 消息类型。目前RFC标准化了6种 EAP Packet Codes。
0x01=Request:表示EAP请求开始。定义于RFC3748。
0x02=Response:表示EAP请求响应。定义于RFC3748。
0x03=Success:表示通知终端获得访问许可。定义于RFC3748。
0x04=Failure:表示通知终端获得访问拒绝。定义于RFC3748。
0x05=Initiate:本交互不涉及。定义于RFC6696。
0x06=Finish:本交互不涉及。定义于RFC6696。
5@EAP ID:用于匹配同一次交互的 Request 和 Response。
6@EAP Method Types:与 EAP Code 相匹配的认证信息。目前约有50种标准定义。
此处仅介绍常用取值,详细字段可参考IANA发布的Extensible Authentication Protocol (EAP) Registry–Method Types。
报文交互总体流程
1@:首先安装了Dot1x客户端的终端发起EAP认证。
2@:终端与接入设备(BAS/NAS/BRAS)交互信息后,接入设备携带用户认证信息与 RADIUS Server 进行交互。
3@:接入设备(BAS/NAS/BRAS)获取到来自 RADIUS Server 的认证结果后,向终端设备发送相应的结果并授权。
1@终端发起EAP报文,提示交互开始:PC—>>NAS
EAP 的 Start 消息仅用于提示接入设备开始EAP交互过程,因此无实际用户信息字段。
2@接入设备发起EAP报文,提示交互开始:PC<<—NAS
Type:Identity,标识要求客户端发送用户输入的用户名信息。
//dot1x retry用来配置向客户端发送认证请求报文的重传次数。//dot1x timer tx-period用来配置周期发送认证请求的时间间隔。
3@终端发起EAP报文,传递认证所需用户信息:PC—>>NAS
客户端将用户输入的认证信息传递给接入设备。
4@接入设备以EAP中继模式与RADIUS Server进行认证交互:NAS—>>RADIUS Server
NAS将客户端发送的EAP信息不经修改的直接封装于 RADIUS 的79号=EAP-Massage 属性中。同时必须包含80号=Message-Authenticator 属性,以用于防止使用 CHAP、ARAP 或 EAP 身份验证方法欺骗 RADIUS Access-request访问请求。这两个属性往往同时存在。
此外,RADIUS Access-request 消息中还包含了其他用于标识终端、用户接入、NAS设备标识、等、的 RADIUS AVP 属性,用于为 RADIUS Server 提供丰富的认证信息。
//dot1x reauthenticate和dot1x timer reauthenticate-period用于开启dot1x重认证功能。此时NAS会将已上线的用户周期发送给RADIUS Server进行认证,可用于实现类似保活的效果。并且如果用户信息改变,则用户将会被下线。
5@RADIUS Server向接入设备回应MD5 Challenge要求进一步提供用户验证信息:NAS<<—RADIUS Server
RADIUS Server回应一个随机MD5 Challenge以及经MD5 Challenge加密用户信息的字符串。该信息封装于 RADIUS Access-challenge 信息中发送给接入设备。
6@接入设备向客户端转发RADIUS需要的进一步验证信息:PC<<—NAS
此处相应的Type字段未在标准定义中。
7@客户端向接入设备/RADIUS回应进一步验证的信息:PC—>>NAS
客户端收到由NAS传来的MD5 Challenge后,用该Challenge对密码部分进行加密处理,生成EAP-Response/MD5 Challenge报文,并发送给NAS。
8@接入设备将认证信息发送给RADIUS Server:NAS—>>RADIUS Server
NAS将此EAP-Response/MD5 Challenge报文封装 RADIUS Access-Request 中发送给 RADIUS Server。
9@RADIUS Server向接入设备回应认证结果:NAS<<—RADIUS Server
RADIUS Server 将收到的已加密的密码信息和本地经过加密运算后的密码信息进行对比,并根据结果回应 RADIUS Success 或 RADIUS Reject。此处认证失败。
10@接入设备向客户端转发相应的结果:PC<<—NAS接入设备向客户端转发相应的结果,并为端口授予相应的权限。
点击此处回到目录