802.1x协议是一种基于端口的网络接入控制协议,所以具体的802.1x认证功能必须在设备端口上进行配置,对端口上接入的用户设备通过认证来控制对网络资源的访问。802.1x认证系统采用网络应用系统典型的Client/Server(C/S)结构,包括三个部分:客户端(Client)、设备端(Device)和认证服务器(Server),如图所示。它与图18-1中的NAC模型结构一一对应。
图1-6:802.1x认证系统结构
客户端:局域网用户终端设备,但必须是支持EAPOL(Extensible Authentication Protocol over LAN,局域网可扩展认证协议)的设备(如PC机),可通过启动客户端设备上安装的802.1x客户端软件发起802.1x认证。
设备端:支持802.1x协议的网络设备(如交换机),对所连接的客户端进行认证。它为客户端提供接入局域网的端口,可以是物理端口,也可以是逻辑端口(如Eth-Trunk口)。
认证服务器:为设备端802.1x协议提供认证服务的设备,是真正进行认证的设备,实现对用户进行认证、授权和计费,通常为RADIUS服务器。
类型代码 | 身份验证协议 | 说明 |
4 | MD5 challenge | EAP中类似于CHAP的认证方式 |
6 | GTC | 原本打算与RSA SecurID之类的令牌卡一起使用 |
13 | EAP-TLS | 以数字证书相互认证 |
18 | EAP-SIM | 以移动电话的SIM卡(用户识别模块卡)进行身份验证 |
21 | TTLS | 隧道式TLS;以TLS加密保护较弱的身份验证方式 |
25 | PEAP | 防护型EAP;以TLS加密保护较弱的EAP认证方式 |
29 | MS-CHAP-V2 | 微软的经加密的密码身份验证,与windows域兼容 |
在802.1x认证过程中,设备端与RADIUS服务器之间支持EAP中继和EAP终结两种认证方式
EAP中继认证原理:
在EAP中继认证的过程中,设备端起一个中继代理的角色,用于通过EAPOR封装和解封装的过程转发客户端和认证服务器之间的交互报文。整个认证过程是先进行用户名认证,然后再进行对应的密码认证,具体如下:
1. 当用户访问网络时自动打开802.1x客户端程序,根据提示输入已经在RADIUS服务器中创建的用户名和密码,发起连接请求。因为端口最初的状态是未授权状态,所以此时端口除了IEEE 802.1x协议包外不能接收和发送任何包。此时,客户端程序将向设备端发出认证请求帧(EAPOL-Start),启动认证过程。
2. 设备端在收到客户端的认证请求帧后,将发出一个Identity(标识)类型的EAP请求帧(EAP-Request/Identity),要求用户的客户端程序发送上一步用户所输入的用户名。
3. 客户端程序在收到设备端的Identity请求帧后,将用户名信息通过Identity类型的EAP响应帧(EAP-Response/Identity)发送给设备端,响应设备端发出的请求。
4. 设备端将客户端发送的Identity响应帧中的EAP报文原封不动地使用EAPOR格式封装在RADIUS报文( RADIUS Access-Request)中,发送给认证服务器进行处理。
5. RADIUS服务器收到设备端发来的RADIUS报文后从中提取用户名信息后,将该信息与数据库中的用户名列表中对比,找到该用户名对应的密码信息,并用随机生成的一个MD5 Challenge消息对密码进行加密处理,然后将此MD5 Challenge消息同样通过EAPOR格式封装以RADIUS Access-Challenge报文发送给设备端。
6. 设备端在收到来自RADIUS服务器的EAPOR格式的Access-Challenge报文后,通过解封装,将其中的MD5 Challenge消息转发给客户端。
7. 客户端在收到由设备端传来的MD5 Challenge消息后,用该Challenge消息对密码部分进行加密处理,然后生成EAP-Response/MD5 Challenge报文,并发送给设备端。
8. 设备端又将此EAP-Response/MD5 Challenge报文以EAPOR格式封装在RADIUS报文( RADIUS Access-Request)中发送给RADIUS服务器。
9. RADIUS服务器将收到的已加密的密码信息后,与第(5)步在本地经过加密运算后的密码信息进行对比,如果相同则认为为合法用户,并向设备端发送认证通过报文(RADIUS Access-Accept)。
10. 设备收到RADIUS Access-Accept报文后,经过EAPOR解封装再以EAP-Success报文向客户端发送,并将端口改为授权状态,允许用户通过端口访问网络。
11. 用户在线期间设备端会通过向客户端定期发送握手报文,对用户的在线情况进行监测。
12. 客户端收到握手报文后向设备发送应答报文,表示用户仍然在线。缺省情况下,若设备端发送的两次握手请求报文都未得到客户端应答,设备端就会让用户下线,防止用户因为异常原因下线而设备无法感知。
13. 客户端可以发送EAPOL-Logoff帧给设备端,主动要求下线。
14. 在设备端收到客户端发来的EAPOL-Logoff帧后,把端口状态从授权状态改变成未授权状态,并向客户端发送EAP-Failure报文,确认对应客户端下线。
EAP终结认证原理:
EAP终结方式与EAP中继方式的认证流程相比,主要不同在于步骤4中用来对用户密码信息进行加密处理的MD5 challenge是由设备端生成(而不是由RADIUS服务器生成),之后设备端会把用户名、MD5 challenge和客户端加密后的密码信息一起送给RADIUS服务器,进行相关的认证处理。具体流程如图所示。