第一章802.1X简介 (2)
概述: (2)
体系结构 (3)
端口PAE (3)
受控端口 (3)
受控方向 (4)
工作机制 (4)
第二章802.1X中的EAPOL封装 (5)
EAPOL帧格式 (5)
各字段的含义 (5)
第三章802.1X的认证过程 (6)
认证过程 (6)
第四章802.1X中的主要状态机 (8)
设备端PAE状态机: (8)
后台认证状态机: (11)
客户端PAE状态机: (13)
摘要:
802.1x协议起源于802.11协议,后者是标准的无线局域网协议,802.1x协议的主要目的是为了解决无线局域网用户的接入认证问题。现在已经开始被应用于一般的有线LAN的接入(微软的Windows XP,以及cisco,锐捷网络,北电等厂商的设备已经开始支持802.1X协议)。
IEEE 802 LAN 中,用户只要能接到网络设备上,不需要经过认证和授权即可直接使用。这样,一个未经授权的用户,他可以没有任何阻碍地通过连接到局域网的设备进入网络。随着局域网技术的广泛应用,特别是在运营网络的出现,对网络的安全认证的需求已经提到了议事日程上。如何在以太网技术简单、廉价的组网特点的基础上,提供用户对网络或设备访问合法性认证的手段,已经成为业界关注的焦点。IEEE 802.1x 协议正是在这样的背景下提出的。
关键词:
authenticator
authentication server:
network access port:
port access entity (PAE):
supplicant:
system
EAPOL
第一章802.1X简介
概述:
IEEE802.1x(Port-Based Network Access Control)是一个基于端口的网络存取控制标准,为LAN接入提供点对点式的安全接入。这是IEEE标准委员会针对以太网的安全缺陷而专门制定的标准,能够在利用IEEE 802 LAN的优势基础上,提供一种对连接到局域网设备或用户进行认证的手段。
IEEE 802.1x 标准定义了一种基于“客户端——服务器”(Client-Server)模式实现了限制未认证用户对网络的访问。客户端要访问网络必须先通过认证服务器的认证。
在客户端通过认证之前,只有EAPOL报文(Extensible Authentication Protocol over LAN)可以在网络上通行。在认证成功之后,正常的数据流便可在网络上通行。
802.1X首先是一个认证协议,是一种对用户进行认证的方法和策略。
802.1X的认证的最终目的就是确定一个端口是否可用。对于一个端口,如果认证成功那么就“打开”这个端口,允许文所有的报文通过;如果认证不成功就使这个端口保持“关闭”,此时只允许802.1X的认证报文EAPOL(Extensible Authentication Protocol over LAN)通过。
体系结构
802.1X系统中共有三个实体:Supplication(客户端),Authenticator System(设备端),Authentication Server System(认证服务器)
客户端是位于点对点局域网段一端的一个实体,由连接到该链接另一端的设备端对其进行认证。客户端一般为一个用户终端设备,用户启动客户端软件发起802.1X认证。
设备端是位于点对点局域网段一端的一个实体,便于对连接到该链接另一端的实体进行认证,设备端一般是支持802.1X协议的网络设备,它为客户端提供接入局域网的端口,该端口可以是物理端口(如以太网交换机的一个以太口或AP的接入信道),也可以是逻辑口(如用户的Mac地址、VlanID等)。
认证服务器是为设备端提供认证服务的实体。认证服务器用于实现用户的认证、授权、计费。
端口PAE
端口PAE为802.1X系统中一个给定的设备端口执行算法和协议的实体对象。
设备端口PAE利用认证服务器对需要接入局域网的客户端执行认证,并根据认证结果相应的控制受控端口的授权/非授权状态。
客户端PAE负责响应设备端口的认证请求,向设备端提供用户的认证信息。客户端PAE也可以主动向设备端发送认证请求和下线请求。
受控端口
设备端为客户端提供接入局域网的端口,这个端口被划分为两个虚拟端口:受控端口和非受控端口。非受控端口始终处于双向连通状态,用于传递EAP认证报文。受控端口在授权状态下处于连通状态,用于传递业务报文。受控端口在非授权状态下处于断开状态,禁止传递任何报文。受控端口和非受控端口是同一端口的两个部分;任何到达该端口的帧,在受控端口和非受控端口都是可见的,如图所示:
受控方向
受控端口在非授权状态下,可以被设置成单向受控和双向受控。实行双向受控时,禁止帧的发送和接收;实行单向受控时,禁止从客户端接收帧,但允许向客户端发送帧。
默认情况下,受控端口实行双向受控。
工作机制
IEEE802.1X认证系统中利用EAP协议,作为客户端和认证服务器之间交互认证信息的手段。在客户端PAE和设备端PAE之间,EAP协议报文使用EAPOL封装格式,直接承载在LAN 环境中。
在设备端PAE和认证服务器之间,EAP协议报文承载在高层协议上,如radius协议(以后用radius协议表示)。
设备端PAE和认证功能是分离的,认证服务器可以采用多种不同的认证机制对客户端PAE 进行认证,如MD5-challenge等。设备端PAE根据认证服务器的指示(accept或reject)来决定受控端口的授权/非授权状态,如图所示:
第二章802.1X中的EAPOL封装EAPOL帧格式
802.3/以太网中EAPOL帧格式
各字段的含义
PAE Ethernet Type:
该域表示使用协议类型,当其值为0x888e的时候表示使用EAPOL协议。Protocol Version:
协议的版本号,如0x01
Packet Type:
报文类型,0x00 表示是EAP包
0x01 表示是EAP- START报文
0x02 表示是EAP-LOGOFF报文
0x03 表示EAPOL-Key.报文
0x04 表示EAPOL-Encapsulated-ASF-Alert报文
Packet Body Length:
Packet Body的长度,2个字节
Packet Body:
该部分内容由Packet Type决定,长度有Packet Body Length决定。
EAP包的Packet Body格式,如图所示:
Code字段:
此字段表示EAP报文的具体类型
0x01 Request
0x02 Response
0x03 Success
0x04 Failure
Identifer字段:
它是用来匹配请求和应答报文用的,只有当请求的报文的标示符和应答的报文的标示符相同时,他们才表示是对应的关系
Length字段:
长度域表示了报文包括了code identifier length data这几个域的长度。
Data字段:
表示报文的所包含的数据信息。
第三章802.1X的认证过程
认证过程
用户认证过程,如图所示:
1. 当用户有上网需求时,打开IEEE 80
2.1x客户端程序,输入已经申请、登记过的用户名和口令,发起连接请求。此时,客户端程序将发出请求认证的报文给交换机,开始启动一次认证过程。
2. 交换机收到请求认证的数据帧后,将发出一个请求帧,要求用户的客户端程序将输入的用户名送上来。
3. 客户端程序响应交换机发出的请求,将用户名信息通过数据帧送给交换机。
4. 交换机将客户端送上来的数据帧经过封包处理后送给认证服务器进行处理。
5. 认证服务器收到交换机转发上来的用户名信息后,将该信息与数据库中的用户名相比对,找到改用户名对应的口令信息,用随机生成的一个加密字对他进行加密处理,同时也将该加密字传送改交换机,
6 . 加密字由交换机传给客户端程序。
7.用户PC收到后,根据用户名、密码以及收到的随机数进行MD5算法获得摘要,然后把该摘要发送给交换机
8 . 认证服务器收到后,根据数据库中的用户名、密码、随机数算出MD5摘要,与收到的摘要做比较,如果相等,则认为该用户为合法用户,反馈认证通过的消息,并向交换机发出打开端口的指令,允许用户的业务流通过端口访问网络;否则,反馈认证失败的消息,并保持交换机端口关闭的状态,只允许认证信息流通过而不允许业务数据通过。
9. 交换机向客户发出失败或成功的消息
10.客户端PAE发送Eapol-logoff通知设备端PAE下线
第四章802.1X中的主要状态机设备端PAE状态机:
设备端PAE状态机包括以下几个状态:
a) INITIALIZE
b) DISCONNECTED
c) CONNECTING
d) AUTHENTICATING
e) AUTHENTICATED
f) ABORTING
g) HELD
h) FORCE_AUTH
i) FORCE_UNAUTH
各个状态间的转化,如下图所示:
整个过程:
首先受控端口需要初始化后进入disconnect状态。由disconnect状态进入connecting状态后将等待respid报文的到来,在txwhen时间内若还未收到respid 报文,将再次进入connecting状态,直到超过reauthmax次数后进入dissconnect状态,并发送一fail报文。当收到respond报文后,交换机进入authenticating状态,此时authstar为真,后台状态机启动,当认证成功则进入authenticated状态,否则进入held状态,被中断则进入
aborting状态。当进入held状态后,在quietperiod时间内交换机对eapol报文一概不处理,当quietperiod后直接进入connecting状态。
Disconnect状态:
该状态可来自于3个状态:Connecting、Authenticated、Aborting。当收到从客户端PAE 发过来的eapol-logoff报文时,从这3个状态转换到Disconnect;当在Connecting状态时,重认证次数(reAuthCount) 大于最大重认证次数(reAuthMax),则转换到Disconnect;转换到Disconnect状态后,设置该受控端口的端口状态(portStatus)为非授权状态(Unauthorized),发送EAP Failure报文(由设备端PAE构造)给客户端PAE。
Connecting状态:
该状态下,设备端PAE发送EAP-Request/Identity报文给客户端PAE,当txWhen超时,或收到EAPOL-Start报文,或要求重认证reAuthenticate,则重新返回到Connecting状态。该状态可由Disconnect、Authenticated、HELD、CONNECTING、ABORTING状态转换而来。当收到EAP-Response/Identity报文时,转换为AUTHENTICATING状态。
AUTHENTICATING状态:
该状态下,给Backend Authentication状态机信号以告知开始认证过程,当收到Reject 报文时,转换到Held状态;当收到Accept报文时,转换到Authenticated状态;当超时、收到 reauthentication 请求报文,或 EAPOL-Start报文,或 EAPOL-Logoff 报文,则转换到Aborting状态。
AUTHENTICATED状态:
如果收到reauthentication请求或EAPOL-Start报文,则转换到Connecting状态;如果收到EAPOL-Logoff 报文,则转换到Disconnect状态。
ABORTING状态:
一旦认证中断,则转换到Connecting状态;如果收到EAPOL-Logoff 报文,则转换到Disconnect状态。
HELD状态:
该状态丢弃所有EAPOL报文,该状态由Authencating状态转换而来,当quietWhile超时时,转换到CONNECTING状态。
FORCE_AUTH状态:
只要满足下面4个条件,则该状态可由其它任何状态转换而来:
a)portControl被设置为ForceAuthorized.
b)portMode被设置为非ForceAuthorized.(只要不是ForceAuthorized即可)
c)Mac实体可用
d)状态机未初始化
此时端口状态为授权状态(Authorized),且EAP Success报文发送给客户端PAE,如果收到EAP-Start报文,则重新进入FORCE_AUTH状态,并发送EAP Success报文给客户端PAE。
FORCE_UNAUTH状态:
只要满足下面4个条件,则该状态可由其它任何状态转换而来:
a)portControl被设置为ForceUnauthorized.
b)portMode被设置为非ForceUnauthorized..(只要不是ForceUnauthorized即可)
c)Mac实体可用
d)状态机未初始化
此时端口状态为非授权状态(Unauthorized),且EAP Failure报文发送给客户端PAE,如果收到EAP-Start报文,则重新进入FORCE_AUTH状态,并发送EAP Failure报文给客户端PAE。
后台认证状态机:
该状态机包括以下几个状态:
a) REQUEST
b) RESPONSE
c) SUCCESS
d) FAIL
e) TIMEOUT
f) IDLE
g) INITIALIZE
各个状态间的转换,如图所示:
整个过程:
当交换机的状态机进入authenticting状态时后台状态机进入response状态,并将response报文发往认证服务器,如在servertimeout的时间内收到server req报文则进入request状态,进入request状态后如在收到rxResp则进入respond状态,否则超过一定次数后进入timeout状态。在进入respond状态后将对用户名和口令进行验证,成功则进入success状态,失败则进入fail状态,超过等待时间则进入timeout状态。Fail,success,timeout以及initialize状态最终都将进入IDLE状态,并等待着下一次认证的开始。
REQUEST状态:
如果重认证次数大于最大重认证次数后,则转换到TIMEOUT状态;如果收到来自客户端PAE 的EAP response报文,则转换到RESPONSE状态。
RESPONSE状态:
如果超时,则转换到到TIMEOUT状态;如果收到来自认证服务器的EAP Success 或EAP Failure报文,则相应地转换到SUCCESS或FAIL状态;如果再收到来自认证服务器的EAP Request报文,则再转换到REQUEST状态以中继requset报文给客户端PAE。
SUCCESS状态:
发信号(authSuccess)给设备端PAE状态机以表示认证以认证成功结束,并发送EAP Success 给客户端PAE,然后转换为IDLE状态。
FAIL状态:
发信号(authFail)给设备端PAE状态机以表示认证以认证失败结束,并发送EAP Failure 给客户端PAE,然后转换为IDLE状态
TIMEOUT状态:
发信号(authTimeout)给设备端PAE状态机以表示由于超时而认证取消,如果端口为非认证状态,则发送EAP Failure报文给客户端PAE,然后转换为IDLE状态
IDLE状态:
此状态下,状态机正等待设备端PAE状态机新认证的信号。当authStart为TRUE,则表示来自客户端的EAP Response/Identity收到,则转换为RESPONSE状态以中继EAP packet 报文给认证服务器
INITIALIZE状态:
如果系统初始化,或设备端PAE状态机设置authAbort为True,发出了当前认证session 终止,则该状态可由任何其他状态转换而来。一旦initialize和authAbort都为False,则转换为IDLE状态;
客户端PAE状态机:
客户端PAE状态机包括以下几个状态:
a) LOGOFF
b) DISCONNECTED
c) CONNECTING
d) ACQUIRED
e) AUTHENTICATING
f) HELD
g) AUTHENTICATED
各个状态间的转换如图所示:
整体过程:
用户初始化进入dissconnect状态,而后进入connecting状态,当supplicant发出start 报文后,将开始等待交换机的request报文。当时间超过starttimeout,supplicant将尝试重发start报文startcount次,如果startcount后,交换机还未发出request报文,supplicant将认为自己已通过认证。假如在startcount内supplicant收到交换机发过来的request报文,则supplicant进入ACQUIRED状态。此时supplicant将上传自己的用户名,并等待交换机的挑战报文,如果在authentication时间内还未收到挑战报文,则supplicant将进入connecting状态,即等待交换机的request报文。若supplicant收到交换机的挑战报文,则进入下一状态认证服务器和交换机的返回结果。当交换机返回结果为fail时,即supplicant收到了fail报文,则supplicant进入held状态。当heldwhile 为0时,supplicant将重发start报文,而如果在heldwhile大于等于0时收到了交换机发来的request报文则直接进入ACQUIRED状态,重复上述过程。
LOGOFF状态:
当要求logoff时进入该状态。发送EAPOL-Logoff报文给设备端PAE,并进入dissconnec
状态。
DISCONNECTED状态:
当Mac实体不可用、系统初始化或重新初始化时,该状态可由任何状态转换而来,也可以当要求logoff时由LogOff转换而来。当初始化完毕并且Mac实体可用,则转换到CONNECTING 状态。
CONNECTING状态:
发送EAPOL-Start给设备端PAE,且startwhen开始计时,如果startWhen超时,则重传EAPOL-Start报文直到达到maxStart最大重传次数。如果在重传了maxStart最大次数后,没有收到响应,则客户端PAE认为系统不支持认证功能,直接进入AUTHENTICATED状态;如果收到EAP-Request/Identity报文,则进入ACQUIRED状态
ACQUIRED状态:
发送EAP-Response/Identity报文给设备端PAE,且authWhile计时开始,如果authWhile 超时,则进入CONNECTING状态;如果在authWhile未超时前,收到EAP-Request报文(而不是Request/Identity
报文),则进入AUTHENTICATING状态;如果收到EAP-Request/Identity报文,则authWhile 重新计时,等待EAP-Request的到来。
AUTHENTICATING状态:
发送EAP-Response给设备端PAE,且authWhile开始计时,等待EAP-Request, EAP-Success, 或
EAP-Failure报文的到来。一旦收到EAP-Request(非Request/Identity)报文,状态机重复这个过程:发送EAP-Response给设备端PAE,且authWhile开始计时,等待EAP-Request, EAP-Success, 或
EAP-Failure报文的到来。当authWhile超时,则进入CONNECTING状态;在authWhile未超时,收到EAP-Failure报文,则进入HELD状态;若收到EAP-Success报文,则进入AUTHENTICATED状态;当收到EAPRequest/Identity报文,则进入ACQUIRED状态。
HELD状态:
当收到来自设备端PAE的EAP-Failure报文时,该状态可由其他任何状态转换而来。要等待一段时间后,客户端PAE才试图再获取认证。heldWhile开始计时,当heldWhile超时,则进入CONNECTING状态;如果收到来自设备端PAE的Request/Identity报文,则进入ACQUIRED 状态。
AUTHENTICATED状态:
该状态下,客户端已经认证成功或认为设备端PAE不支持认证功能。当收到EAP-Success 报文,该状态可由任何其他状态而来,或CONNECTING状态下,重传EAPOL-Start次数超过最大重传次数maxStart。当收到EAP-Request/Identity报文时,则进入ACQUIRED状态。