802.1X认证
1、定义
802.1X协议是一种基于端口的网络接入控制协议(Port based network access control protocol)。“基于端口的网络接入控制”是指在局域网接入设备的端口级别验证用户身份并控制其访问权限。
2、起源
一方面以太网的广泛应用部署,如企业、校园、小区、SOHO用户青睐于以太网这种价格低廉、使用方便、带宽高的接入方式;另一方面底层以太网安全认证机制的后缺失是802.1x的产生前景。
802.1X就是IEEE为了解决基于端口的接入控制而定义的一个标准。它起源于无线网络标准802.11协议,802.11协议是标准的无线局域网协议,802.1X协议设计的最初的目的是为了解决无线局域网用户的接入认证问题,但由于其原理对于所有符合IEEE 802标准的局域网具有普适性,因此在有线局域网中也得到了广泛的应用。
现在802.1X协议作为局域网一种普遍的端口接入控制机制在以太网中被广泛应用,主要用以解决以太网内认证和安全方面的问题。
3、体系结构
802.1X系统为典型的Client/Server结构,包括三个实体:客户端、接入设备(认证系统)和认证服务器。
- 客户端一般为一个用户终端设备,用户可以通过启动客户端软件发起802.1X认证。客户端必须支持局域网上的可扩展认证协议EAPoL(Extensible Authentication Protocol over LANs)。
- 接入设备通常为支持802.1X协议的网络设备,它为客户端提供接入局域网的端口,充当客户端和认证服务器之间的中介,从客户端请求身份信息,并与认证服务器验证该信息。根据客户端的身份验证状态控制其对网络的访问权限。
- 认证服务器用于实现对用户进行认证、授权和计费,通常为RADIUS服务器。
4、协议实现
802.1X认证系统使用可扩展认证协议EAP(Extensible Authentication Protocol)来实现客户端、设备端和认证服务器之间的信息交互。EAP协议可以运行在各种底层,包括数据链路层和上层协议(如UDP、TCP等),而不需要IP地址。因此使用EAP协议的802.1X认证具有良好的灵活性。
- 在客户端与设备端之间,EAP协议报文使用EAPoL(EAP over LANs)封装格式,直接承载于LAN环境中。
- 在设备端与认证服务器之间,用户可以根据客户端支持情况和网络安全要求来决定采用的认证方式。
- EAP终结方式中,EAP报文在设备端终结并重新封装到RADIUS报文中,利用标准RADIUS协议完成认证、授权和计费。
- EAP中继方式中,EAP报文被直接封装到RADIUS报文中(EAP over RADIUS,简称为EAPoR),以便穿越复杂的网络到达认证服务器。
802.1x 协议实现
4.1 可扩展认证协议EAP
802.1X协议采用EAP(Extensible Authentication Protocol,可扩展认证协议)来实现客户端、NAS和认证服务器之间认证信息的交互。
通过支持EAP协议,认证系统(接入设备)控制其受控端口的状态,但是并不干涉通过非受控端口在客户端和认证服务器之间传递的认证信息。这样,就实现了认证流和业务流的完全分离。可以使用认证服务器来实现各种认证机制,NAS仅仅需要传送认证信息,并根据认证返回的结果控制受控端口的状态。
4.2 基于局域网的可扩展认证协议EAPoL
EAPOL(EAP over LANs)是802.1X协议定义的一种报文封装格式,主要用于在客户端和(接入设备)认证系统之间承载用户信息,也就是说允许EAP协议报文直接承载于LAN环境中。
5、认证过程
5.1 认证发起
802.1X的认证发起可以由接入设备(认证系统)发起,也可以由客户端主动发起。当接入设备(认证系统)探测到未经过认证的用户使用网络时,就会主动发起认证;客户端则可以通过客户端软件主动向接入设备(认证系统)发送EAPOL-Start报文发起认证。
1、接入设备(认证系统)主动触发认证方式
当接入设备(认证系统)检测到有未经认证的用户使用网络时,会每隔N秒(系统默认30秒)主动向客户端以组播报文来触发认证。在认证开始之前,端口的状态被强制为未认证状态。
如果客户端的身份标识不可知,则NAS会发送EAP-Request/Identity报文,请求客户端发送身份标识。这样,就开始了典型的认证过程。客户端在收到来自NAS的EAP-Request报文后,将发送EAP-Response报文响应接入设备(认证系统)的请求。
这种触发方式用于支持不能主动发送EAPOL-Start报文的客户端,例如Windows XP自带的802.1X客户端。
2 、客户端主动触发认证方式
如果用户要上网,则可以通过客户端软件主动发起认证。客户端软件会向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客户端配合使用。
5.2 退出认证
通过以下几种方式NAS设备可以将端口状态从已认证状态改变成未认证状态:
Ø 与端口对应的MAC地址出现故障(管理性禁止或硬件故障);
Ø 客户端与NAS之间的连接失败,造成认证超时;
Ø 客户端未响应NAS发起的认证请求;
Ø 客户端发送EAPOL-Logoff报文,主动下线。
退出已认证状态的直接结果就是导致用户下线,如果用户要继续上网则需要再发起一个认证过程。
为什么要专门提供一个EAPOL-Logoff机制,主要是出于如下安全的考虑:
当一个用户从一台终端登录后,很可能其他用户不通过发起一个新的认证请求,就可以利用该设备访问网络。因此提供专门的退出机制,以确保用户与NAS专有的会话进程被中止,可以防止用户的访问权限被他人盗用。通过发送EAPOL-Logoff报文,可以使NAS将对应的端口状态改变为未认证状态。
5.3 认证过程
当用户通过认证后,认证服务器会把用户的相关信息传递给NAS,而NAS会根据认证服务器的指示,如Accept或Reject,来决定受控端口的授权/非授权状态。
当前802.1X系统支持两种方式与远端认证服务器交互完成认证,即EAP中继方式和EAP终结方式。
5.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基本认证流程,如图1所示。其中EAP-MD5是一种单向认证机制,可以完成网络对用户的认证,但认证过程不支持加***的生成。
图1 IEEE 802.1X认证系统的EAP中继方式交互流程
-
当用户有网络连接需求时打开802.1X客户端程序,输入已经申请、登记过的用户名和密码,发起连接请求(EAPOL-Start报文)。此时,客户端程序将发出请求认证的报文给接入设备(认证系统),开始启动一次认证过程。
-
接入设备(认证系统)收到请求认证的数据帧后,将发出一个请求帧(EAP-Request/Identity报文)要求用户的客户端程序发送输入的用户名。
-
客户端程序响应接入设备(认证系统)发出的请求,将用户名信息通过数据帧(EAP-Response/Identity报文)发送给接入设备(认证系统)。
-
而后,接入设备(认证系统)则将客户端送上来的数据帧经过封包处理后(RADIUS Access-Request报文)送给认证服务器进行处理。
-
认证服务器收到接入设备(认证系统)转发上来的用户名信息后,将该信息与数据库中的用户名表相比对,找到该用户名对应的密码信息,用随机生成的一个加密字对它进行加密处理,同时也将此加密字通过RADIUS Access-Challenge报文传送给接入设备(认证系统),由接入设备(认证系统)传给客户端程序。
-
客户端程序收到由接入设备(认证系统)传来的加密字(EAP-Request/MD5 Challenge报文)后,用该加密字对口令部分进行加密处理(此种加密算法通常是不可逆的),生成EAP-Response/MD5 Challenge报文,并通过接入设备(认证系统)封装为RADIUS Access-Request报文传给认证服务器。
-
认证服务器将收到的已加密的密码信息(RADIUS Access-Request报文)和本地经过加密运算后的密码信息进行对比,如果相同,则认为该用户为合法用户,反馈认证通过的消息(RADIUS Access-Accept报文和EAP-Success报文),并向接入设备(认证系统)发出打开端口的指令,允许用户的业务流通过端口访问网络。否则,反馈认证失败的消息(EAP-Failure报文),并保持接入设备(认证系统)端口的关闭状态,只允许认证信息数据通过而不允许业务数据通过。
-
客户端也可以发送EAPOL-Logoff报文给接入设备(认证系统),主动要求下线。设备端把端口状态从授权状态改变成未授权状态,并向客户端发送EAP-Failure报文。
这里要提出的一个值得注意的地方:在客户端与认证服务器交换口令信息的时候,没有将口令以明文直接送到网络上进行传输,而是对口令信息进行了不可逆的加密算法处理,使在网络上传输的敏感信息有了更高的安全保障,杜绝了由于下级接入设备所具有的广播特性而导致敏感信息泄漏的问题。
5.3.2 EAP终结方式
EAP终结方式将EAP报文在设备端终结并映射到Radius报文中,通过标准的Radius协议完成认证、授权和计费。设备端与Radius服务器之间可以采用PAP(Password Authentication Protocol,密码验证协议)或者CHAP(Challenge Handshake Authentication Protocol,质询握手验证协议)认证方法。二者主要区别是CHAP密码通过密文方式在客户端和NAS之间传输,而PAP密码通过明文的方式传输。以下以CHAP认证方式为例介绍认证流程,如图2所示。
图2 IEEE 802.1X认证系统的EAP终结方式交互流程
-
用户有上网需求时打开802.1x客户端,输入已经登记过的用户名和密码,发起连接请求(EAPOL-Start报文)。此时,客户端程序将发出请求认证的报文给接入设备(认证系统),开始启动一次认证过程。
-
接入设备(认证系统)收到请求认证的数据帧(EAPOL-Start)后,将发出一个请求帧(EAP-Request/Identity报文)要求用户的客户端程序发送输入的用户名。
-
客户端程序将用户名信息通过数据帧(EAP-Response/Identity报文)送给接入设备(认证系统)。直到这里,认证过程中的前三步和EAP中继方式完全相同。
-
接下来,接入设备(认证系统)收到客户端送上来的数据帧(EAP-Response/Identity报文)后,没有上传至认证服务器,而是本地随机生成一个加密字,并将将此加密字的通过数据帧(EAP-Request/MD5 Challenge报文)交给客户端程序。
-
客户端程序收到加密字(EAP-Request/MD5 Challenge报文)后,用该加密字对密码部分进行加密处理,生成EAP-Response/MD5 Challenge报文发送给接入设备(认证系统)。
-
接入设备(认证系统)收到加密密码(EAP-Response/MD5 Challenge)后,用CHAP协议对用户名、加密密码、加密字等认证信息重新封装成标准的Radius报文(RADIUS Access-Requeset报文) ,送给认证服务器进行处理。
-
认证服务器收到的认证信息(RADIUS Access-Requeset报文)后,根据收到的用户名信息在数据库中查找对应的密码信息,用收到的加密字对密码信息进行加密处理得到自己的加密密码。然后和收到的加密密码信息进行对比,如果相同,则认为该用户为合法用户,反馈认证通过的消息(RADIUS Access-Accept报文)给接入设备(认证系统)。
-
接入设备(认证系统)向客户端程序反馈认证通过消息( EAP-Success报文),将端口状态改为授权状态,允许用户通过该端口访问网络。
-
客户端可以发送EAPOL-Logoff报文给接入设备(认证系统),主动终止已认证状态,交换机将端口状态从授权状态改变成未授权状态。
5.3.3 两种方式对比
EAP中继方式与EAP终结方式的认证流程十分类似,不同之处主要在于加密字的生成处理及传递方式。在EAP中继方式中,用来对用户口令信息进行加密处理的随机加密字由认证服务器生成,交换机只是负责将EAP报文透传认证服务器,整个认证处理都由认证服务器来完成。而在EAP终结方式中,用来对用户密码信息进行加密处理的随机加密字由NAS生成,NAS会把用户名、随机加密字和客户端加密后的密码信息一起送给认证服务器,进行相关的认证处理;
从上面可以看出,由于认证流程中对于加密字的生成处理及传递方式不同,因此EAP中继与EAP终结两种认证方式其优缺点也很明显:
EAP中继方式优点是接入设备(认证系统)处理更简单,支持更多的认证方式,缺点则是认证服务器必须支持EAP;而EAP终结方式的优点是认证服务器无需升级,现有的Radius服务器可以继续使用,缺点是接入设备(认证系统)处理更复杂。
两种方式各有优缺点,企业可根据实际情况自行选择。若为了兼容Radius服务器,节省用户投资,建议接入设备(认证系统)选择EAP终结方式。目前大部分的交换机产品均支持这两种认证方式,在默认情况下,选择EAP终结方式。
6、认证模式
- 1 端口认证模式
该模式下只要连接到端口的某个设备通过认证,其他设备则不需要认证,就可以访问网络资源。
- 2 MAC认证模式
该模式下连接到同一端口的每个设备都需要单独进行认证。
7、配置实现
以思科交换机为例配置接入设备(认证系统):
(config)#aaa new-model '启动AAA。
(config)#radius-server host 192.168.1.100 key netdigedu '配置RADIUS服务器地址及**。
(config)#aaa authentication dot1x default group radius '配置802.1x默认认证方法为RADIUS。
(config)#dot1x system-auth-control '在交换机上全局启用802.1x认证。
(config)#int fa0/24
(config-if)#switchport mode access
(config-if)#dot1x port-control auto '设置接口的802.1x状态。
这个命令一定要注意;
状态有三种:
force-authorized:端口始终处于认证状态并转发流量,这个是默认状态。
force-unauthorized:端口始终处于未认证状态并不能转发流量。
auto:端口通过使用802.1x与客户端交换消息在认证和未认证状态间切换。这个是我们需要的,所以dot1x port-control 命令后一定要用auto。
(config-if)#dot1x host-mode multi-host '交换机端口下连接多台PC时(通过Hub或交换机)需要配置这个命令,默认只支持对一台PC认证。
处于未认证状态并不能转发流量。
auto:端口通过使用802.1x与客户端交换消息在认证和未认证状态间切换。这个是我们需要的,所以dot1x port-control 命令后一定要用auto。
(config-if)#dot1x host-mode multi-host '交换机端口下连接多台PC时(通过Hub或交换机)需要配置这个命令,默认只支持对一台PC认证。
#show dot1x all '查看802.1x配置。