Dot1X认证理论部分

一、802.1X协议
802.1x协议是基于Client/Server的访问控制和认证协议。它可以限制未经授权的用户/设备通过接入端口(access port)访问LAN/WLAN。在获得交换机或者LAN提供的各种业务之前,802.1x对连接到交换机端口上的用户/设备进行认证。在认证通过之前,802.1x只允许EAPoL(基于局域网的扩展认证协议)数据通过设备连接的交换机端口;认证通过以后,正常的数据可以顺利地通过以太网端口。网络访问技术的核心部分是EAP(端口访问实体)。访问控制流程中,端口访问实体包含3部分:认证者–对接入的用户/设备进行认证的端口;请求者–被认证的用户/设备;认证服务器–根据认证者的信息,对请求访问网络资源的用户/设备进行实际认证功能的设备。以太网的每个物理端口被分为受控和不受控的两个逻辑端口。
1.1 802.1X 认证的特点
基于以太网端口认证的802.1x协议有如下特点:IEEE802.1x协议为二层协议,不需要到达三层,对设备的整体性能要求不高,可以有效降低建网成本;借用了在RAS系统中常用的EAP(扩展认证协议),可以提供良好的扩展性和适应性,实现对传统PPP认证架构的兼容;802.1x的认证体系结构中采用了"可控端口"和"不可控端口"的逻辑功能,从而可以实现业务与认证的分离,由RADIUS和交换机利用不可控的逻辑端口共同完成对用户的认证与控制,业务报文直接承载在正常的二层报文上通过可控端口进行交换,通过认证之后的数据包是无需封装的纯数据包;可以使用现有的后台认证系统降低部署的成本,并有丰富的业务支持;可以映射不同的用户认证等级到不同的VLAN;可以使交换端口和无线LAN具有安全的认证接入功能。
二、 协议实现及报文格式
Dot1X认证理论部分_第1张图片
图1 802.1X协议实现

如图1所示,802.1X协议在实现整个安全认证的过程中,其三个关键部分客户端、认证系统(NAS)、认证服务器之间是通过通信协议进行交互的,因此有必要对其相关的通信协议做个介绍。
2.1 EAPOL协议
EAPOL(EAP over LANs)是802.1X协议定义的一种报文封装格式,主要用于在客户端和NAS之间承载用户信息,也就是说允许EAP协议报文直接承载于LAN环境中。EAPOL消息封装格式如图2所示:
Dot1X认证理论部分_第2张图片
图2 EAPOL的帧结构
PAE Ethernet Type:2字节,该值表示以太网协议类型,802.1X为其分配的协议类型为0x888E。
Protocol Version:1字节,表示EAPOL帧的发送方所使用的协议版本号。
Packet Type:1字节,表示EAPOL数据帧类型,有如下四种帧类型,如图3所示。
Packet Body Length:2字节,表示数据域的长度,也就是Packet Body字段的长度,单位为字节。当EAPOL数据帧的类型为EAPOL-Start或EAPOL-Logoff时,该字段值为0,表示后面没有Packet Body字段。
Packet Body:表示数据内容,根据不同的Type有不同的格式。
Dot1X认证理论部分_第3张图片
图3 Packet Body类型及说明
2.2 EAP协议
802.1X协议采用EAP(Extensible Authentication Protocol,可扩展认证协议)来实现客户端、NAS和认证服务器之间认证信息的交互。通过支持EAP协议,NAS只需控制其受控端口的状态,但是并不干涉通过非受控端口在客户端和认证服务器之间传递的认证信息。这样,就实现了认证流和业务流的完全分离。可以使用认证服务器来实现各种认证机制,NAS仅仅需要传送认证信息,并根据认证返回的结果控制受控端口的状态。当 EAPOL 报文的Packet Type字段值为0000 0000时,表明Packet Body字段封装的是一个EAP 数据包,EAP 协议报文格式在 RFC2284 中有详细描述。下面来看一下EAP报文封装格式,如图4所示。
Dot1X认证理论部分_第4张图片
图4 EAP的帧结构
Code:1字节,该值表示EAP帧类型,共有4种:Request、Response、Success、Failure。
Identifier:1字节,该值用于匹配Request消息和Response消息。Identifier字段和系统端口一起唯一标识一个认证过程。
Length:2字节,该值表示EAP帧的总长度,包含Code、Identifier、Length和Data域,单位为字节。
Data:0或更多字节,表示EAP包的内容,由Code字段决定。
对于Code字段所携带的不同EAP帧类型,其对应Data域的格式也略有不同,这里可分为两类:
一类是指,若Code字段的EAP帧类型为Request或Response的数据包的Data域格式如图5所示。
在这里插入图片描述
图5 Type报文类型
此时,Type报文类型包括以下常见几种:
Type=1 -Identifier(要求客户端程序发送用户输入的用户名信息)
Type=2 -Notification(非必须的一个消息,传送一些警告消息)
Type=3 -Response Only(Request报文中的认证类型不可接受时回应该类型的报文)Type=4 -MD5-Challenge(类似于CHAP中的MD5-Challenge)
Type=5 -One-Time Password (OTP)(一种密码交互的方式)
Type=6 -Generic Token Card(支持Challenge和Response时使用令牌)
Type=254 -Expanded Types(支持厂商自己扩展的类型)
Type=255 -Experimental use(实验新的类型时做测试用的类型)
另外一类,若Code类型为标准的Success或Failure的数据包,则没有Data域,相应的Length域的值为4。在H3C公司的实现中,在Length域后面增加了字段用于说明下线的原因,故Length域的值可能为其他值。
此外,Radius为支持EAP认证增加了两个属性:EAP-Message(EAP消息)和Message-Authenticator(消息认证码)。
如图6所示,EAP-Message属性用来封装EAP数据包,类型代码为79,Value域最长253字节,如果EAP数据包长度大于253字节,可以对其进行分片,依次封装在多个EAP-Message属性中。该属性必须配合Message-Authenticator属性使用。
Dot1X认证理论部分_第5张图片
图6 EAP-Message属性
而上面提到的Message-Authenticator属性,如图7所示,类型代码为80,主要用于在EAP认证过程中验证携带了EAP-Message属性的Radius报文的完整性,避免接入请求包被窜改。在含有EAP-Message属性的数据包中,必须同时也包含Message-Authenticator,否则该数据包会被认为无效而被丢弃。此外,若接收端对接收到的Radius报文计算出的完整性校验值与报文中携带的Message-Authenticator属性的Value值不一致,该数据包也会被认为无效而丢弃。
在这里插入图片描述
图7 Message-Authenticator属性

三、认证的基本过程
3.1 认证发起
802.1X的认证发起可以由NAS发起,也可以由客户端主动发起。当NAS探测到未经过认证的用户使用网络时,就会主动发起认证;客户端则可以通过客户端软件主动向NAS发送EAPOL-Start报文发起认证。
• NAS主动触发认证方式
当NAS检测到有未经认证的用户使用网络时,会每隔N秒(系统默认30秒)主动向客户端以组播报文来触发认证。在认证开始之前,端口的状态被强制为未认证状态。如果客户端的身份标识不可知,则NAS会发送EAP-Request/Identity报文,请求客户端发送身份标识。这样,就开始了典型的认证过程。客户端在收到来自NAS的EAP-Request报文后,将发送EAP-Response报文响应NAS的请求。这种触发方式用于支持不能主动发送EAPOL-Start报文的客户端,例如Windows XP自带的802.1X客户端。
• 客户端主动触发认证方式
如果用户要上网,则可以通过客户端软件主动发起认证。客户端软件会向NAS发送EAPOL-Start报文主动发起认证。该报文目的地址为IEEE 802.1X协议分配的一个组播MAC地址:01-80-C2-00-00-03。NAS在收到客户端发送的EAPOL-Start报文后,会发送EAP-Request/Identity报文响应用户请求,要求用户发送身份标识,这样就启动了一个认证过程。此外,由于网络中有些设备不支持上述的组播报文,使得NAS无法收到客户端的认证请求,因此NAS还支持广播触发方式,即可以接收客户端发送的目的地址为广播MAC地址的EAPOL-Start报文。这种触发方式需要与H3C公司的iNode客户端配合使用。

3.2 退出认证
通过以下几种方式NAS设备可以将端口状态从已认证状态改变成未认证状态:Ø 与端口对应的MAC地址出现故障(管理性禁止或硬件故障);Ø 客户端与NAS之间的连接失败,造成认证超时;Ø 客户端未响应NAS发起的认证请求;Ø 客户端发送EAPOL-Logoff报文,主动下线。退出已认证状态的直接结果就是导致用户下线,如果用户要继续上网则需要再发起一个认证过程。为什么要专门提供一个EAPOL-Logoff机制,主要是出于如下安全的考虑:当一个用户从一台终端登录后,很可能其他用户不通过发起一个新的认证请求,就可以利用该设备访问网络。因此提供专门的退出机制,以确保用户与NAS专有的会话进程被中止,可以防止用户的访问权限被他人盗用。通过发送EAPOL-Logoff报文,可以使NAS将对应的端口状态改变为未认证状态。
3.3 认证过程
当用户通过认证后,认证服务器会把用户的相关信息传递给NAS,而NAS会根据认证服务器的指示,如Accept或Reject,来决定受控端口的授权/非授权状态。当前802.1X系统支持两种方式与远端认证服务器交互完成认证,即EAP中继方式和EAP终结方式。
3.3.1 EAP中继方式
EAP中继方式是IEEE 802.1X标准规定的,其将EAP承载在其它高层协议中,如EAPOR(EAP over Radius),以便EAP报文穿越复杂的网络到达认证服务器。一般来说,EAP中继方式需要Radius服务器支持EAP属性:EAP-Message(值为79)和Message-Authenticator(值为80),以上两个属性分别用来封装EAP报文及对携带EAP-Message的Radius报文进行保护。
在具有802.1X认证功能的以太网络系统中,当一个用户需要对网络资源进行访问之前必须先要完成以下的认证过程。下面就以EAP-MD5方式为例,介绍802.1X基本认证流程,如图8所示。其中EAP-MD5是一种单向认证机制,可以完成网络对用户的认证,但认证过程不支持加密密钥的生成。
Dot1X认证理论部分_第6张图片
图8 IEEE 802.1X认证系统的EAP中继方式交互流程
1. 当用户有网络连接需求时打开802.1X客户端程序,输入已经申请、登记过的用户名和密码,发起连接请求(EAPOL-Start报文)。此时,客户端程序将发出请求认证的报文给NAS,开始启动一次认证过程。
2. NAS收到请求认证的数据帧后,将发出一个请求帧(EAP-Request/Identity报文)要求用户的客户端程序发送输入的用户名。
3. 客户端程序响应NAS发出的请求,将用户名信息通过数据帧(EAP-Response/Identity报文)发送给NAS。
4. 而后,NAS则将客户端送上来的数据帧经过封包处理后(RADIUS Access-Request报文)送给认证服务器进行处理。
5. 认证服务器收到NAS转发上来的用户名信息后,将该信息与数据库中的用户名表相比对,找到该用户名对应的密码信息,用随机生成的一个加密字对它进行加密处理,同时也将此加密字通过RADIUS Access-Challenge报文传送给NAS,由NAS传给客户端程序。
6. 客户端程序收到由NAS传来的加密字(EAP-Request/MD5 Challenge报文)后,用该加密字对口令部分进行加密处理(此种加密算法通常是不可逆的),生成EAP-Response/MD5 Challenge报文,并通过NAS封装为RADIUS Access-Request报文传给认证服务器。
7. 认证服务器将收到的已加密的密码信息(RADIUS Access-Request报文)和本地经过加密运算后的密码信息进行对比,如果相同,则认为该用户为合法用户,反馈认证通过的消息(RADIUS Access-Accept报文和EAP-Success报文),并向NAS发出打开端口的指令,允许用户的业务流通过端口访问网络。否则,反馈认证失败的消息(EAP-Failure报文),并保持NAS端口的关闭状态,只允许认证信息数据通过而不允许业务数据通过。
8. 客户端也可以发送EAPOL-Logoff报文给NAS,主动要求下线。设备端把端口状态从授权状态改变成未授权状态,并向客户端发送EAP-Failure报文。这里要提出的一个值得注意的地方:在客户端与认证服务器交换口令信息的时候,没有将口令以明文直接送到网络上进行传输,而是对口令信息进行了不可逆的加密算法处理,使在网络上传输的敏感信息有了更高的安全保障,杜绝了由于下级接入设备所具有的广播特性而导致敏感信息泄漏的问题。
3.3.2 EAP终结方式
EAP终结方式将EAP报文在设备端终结并映射到Radius报文中,通过标准的Radius协议完成认证、授权和计费。设备端与Radius服务器之间可以采用PAP(Password Authentication Protocol,密码验证协议)或者CHAP(Challenge Handshake Authentication Protocol,质询握手验证协议)认证方法。二者主要区别是CHAP密码通过密文方式在客户端和NAS之间传输,而PAP密码通过明文的方式传输。以下以CHAP认证方式为例介绍认证流程,如图9所示。
Dot1X认证理论部分_第7张图片
图9 IEEE 802.1X认证系统的EAP终结方式交互流程
1. 用户有上网需求时打开802.1x客户端,输入已经登记过的用户名和密码,发起连接请求(EAPOL-Start报文)。此时,客户端程序将发出请求认证的报文给NAS,开始启动一次认证过程。
2. NAS收到请求认证的数据帧(EAPOL-Start)后,将发出一个请求帧(EAP-Request/Identity报文)要求用户的客户端程序发送输入的用户名。
3. 客户端程序将用户名信息通过数据帧(EAP-Response/Identity报文)送给NAS。直到这里,认证过程中的前三步和EVP中继方式完全相同。
4. 接下来, NAS收到客户端送上来的数据帧(EAP-Response/Identity报文)后,没有上传至认证服务器,而是本地随机生成一个加密字,并将将此加密字的通过数据帧(EAP-Request/MD5 Challenge报文)交给客户端程序。
5. 客户端程序收到加密字(EAP-Request/MD5 Challenge报文)后,用该加密字对密码部分进行加密处理,生成EAP-Response/MD5 Challenge报文发送给NAS。
6. NAS收到加密密码(EAP-Response/MD5 Challenge)后,用CHAP协议对用户名、加密密码、加密字等认证信息重新封装成标准的Radius报文(RADIUS Access-Requeset报文) ,送给认证服务器进行处理。
7. 认证服务器收到的认证信息(RADIUS Access-Requeset报文)后,根据收到的用户名信息在数据库中查找对应的密码信息,用收到的加密字对密码信息进行加密处理得到自己的加密密码。然后和收到的加密密码信息进行对比,如果相同,则认为该用户为合法用户,反馈认证通过的消息(RADIUS Access-Accept报文)给NAS。
8. NAS向客户端程序反馈认证通过消息( EAP-Success报文),将端口状态改为授权状态,允许用户通过该端口访问网络。
9. 客户端可以发送EAPOL-Logoff报文给NAS,主动终止已认证状态,交换机将端口状态从授权状态改变成未授权状态。
3.3.3 两种方式对比
EAP中继方式与EAP终结方式的认证流程十分类似,不同之处主要在于加密字的生成处理及传递方式。在EAP中继方式中,用来对用户口令信息进行加密处理的随机加密字由认证服务器生成,交换机只是负责将EAP报文透传认证服务器,整个认证处理都由认证服务器来完成。而在EAP终结方式中,用来对用户密码信息进行加密处理的随机加密字由NAS生成,NAS会把用户名、随机加密字和客户端加密后的密码信息一起送给认证服务器,进行相关的认证处理;
从上面可以看出,由于认证流程中对于加密字的生成处理及传递方式不同,因此EAP中继与EAP终结两种认证方式其优缺点也很明显:
EAP中继方式优点是NAS设备处理更简单,支持更多的认证方式,缺点则是认证服务器必须支持EAP;而EAP终结方式的优点是认证服务器无需升级,现有的Radius服务器可以继续使用,缺点是NAS设备处理更复杂。

你可能感兴趣的:(Dot1X认证理论部分)