802.1x认证原理

1、认证系统结构

802.1x协议是一种基于端口的网络接入控制协议,所以具体的802.1x认证功能必须在设备端口上进行配置,对端口上接入的用户设备通过认证来控制对网络资源的访问。802.1x认证系统采用网络应用系统典型的Client/Server(C/S)结构,包括三个部分:客户端(Client)、设备端(Device)和认证服务器(Server),如图所示。它与图18-1中的NAC模型结构一一对应。

image.png

图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封装和解封装的过程转发客户端和认证服务器之间的交互报文。整个认证过程是先进行用户名认证,然后再进行对应的密码认证,具体如下

image.png

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服务器,进行相关的认证处理。具体流程如图所示。

image.png