【转】浅谈802.1X认证
转自:https://blog.csdn.net/u013181216/article/details/51490044
一、起源
802.1x协议起源于802.11协议,后者是标准的无线局域网协议。802.1x协议的主要目的是为了解决局域网用户的接入认证问题,现在已经开始被应用于一般的有线LAN的接入。在802.1x出现之前,企业网有线LAN应用都没有直接控制到端口的方法,也不需要控制到端口。但是随着无线LAN的应用以及LAN接入到电信网上大规模开展,有必要对端口加以控制,以实现用户级的接入控制。802.1x就是IEEE为了解决基于端口的接入控制而定义的一个标准。
二、作用
1.802.1x是一个认证协议,是一种对用户进行认证的方法和策略。
2.802.1x是基于端口的认证策略(可以是物理端口也可以是VLAN一样的逻辑端口,相对于无线局域网“端口”就是一条信道)
3.802.1x的认证的最终目的就是确定一个端口是否可用。对于一个端口,如果认证成功就“打开”这个端口,允许所有报文通过;如果认证不成功就使这个端口保持“关闭”,此时只允许802.1x的认证报文EAPOL(Extensible Authentiaction Protocol over LAN)通过。
三、体系
802.1x的认证系统分为三部分结构:
Suppliant System 客户端(PC / 网络设备):
客户端是一个需要接入LAN,及享受Switch提供服务的设备,客户端需要支持EAPOL协议,客户端必须运行802.1x客户端软件。
Authentiactor System 认证系统:
switch(边缘交换机或无线接入设备)是根据客户的认证状态控制物理接入的设备,switch在客户和认证服务器之间充当代理角色(proxy)。switch与client间通过EAPOL协议进行通讯,swith与认证服务器间通过EAPOR(EAP over Radius)s或EAP承载在其他高层协议上,以便穿越复杂的网络到达认证服务器;switch要求客户端提供identity,接收到后将EAP报文承载在Radius格式的报文中,再发送到认证服务器,返回等同;switch根据认证结果控制端口是否可用。(802.1x协议在设备内终结并转换成标准的RADIUS协议报文,加密算法采用PPP和CHAP认证算法,所有支持PPP CHAP认证算法的认证计费服务器都可以与我们对接成功)
Authentiaction Server System 认证服务器:
认证服务器对客户进行实际认证,认证服务器核实客户的identity,通知switch是否允许客户端访问LAN和交换机提供的服务。认证服务器接受客户端传递过来的认证需求,认证完成后将认证结果下发给客户端,完成对端口的管理。由于EAP协议较为灵活,除了IEEE802.1x定义的端口状态外,认证服务器实际上也可以用于认证和下发更多用户相关的信息,如VLAN、QOS、加密认证密钥、DHCP响应等。
四、认证端口
非受控端口:可以看成EAP端口,不进行认证控制,始终处于双向连接状态,主要用于传递在通过认证前必须的EAPOL协议帧,保证客户端始终能够发出或者接收认证报文。
受控端口:在通过认证之前,只允许认证报文EAPOL报文和广播报文(DHCP、ARP)通过端口,不允许任何其他业务数据流通过。认证通过后处于双向连通状态,可进行正常的业务报文传递。
逻辑受控端口:多个客户端公用一个物理端口,当某个客户端没有通过认证之前,只允许认证报文通过该物理端口,不允许业务数据,但其他已通过认证的客户端业务不受影响。
现在在使用中有下面三种情况:
1.仅对同一个物理端口的任何一个用户进行认证(仅对一个用户进行认证,认证过程中忽略其他用户的认证请求),认证通过后其他用户也可利用该端口访问网络服务。
2.对同一个物理端口的多个用户分别进行认证控制,限制同时使用同一物理端口的用户数目(限制MAC地址数量),但不指定MAC地址,让系统根据先到先得原则进行MAC地址学习,系统将拒绝超过限制数目的请求,若有用户退出,则可以覆盖已退出的MAC地址。
3.对利用不同物理端口的用户进行VLAN认证控制,即只允许访问指定VLAN,限制用户访问非授权VLAN;用户可以利用受控端口,访问指定VLAN,同一用户可以在不同的端口访问相同的VLAN。
五、触发方式和认证方式
802.1x的认证过程可以有客户端主动发起,也可以有设备端主动发起。在“客户端主动发起”中,由客户端主动向设备端发送EAPOL-Start报文触发认证。而“设备端主动发起”中用于支持不能主动发送EAPOL-Start报文的客户端。在“设备主动触发方式”分为两种具体触发方式:
1.DHCP报文触发:设备在收到用户的DHCP请求报文后主动触发对用户的802.1x认证,仅适用于客户端采用DHCP方式自动分配IP的情形。
2.源MAC未知报文触发:当设备收到源MAC地址未知的报文时主动触发对用户的802.1x认证。若设备在设置好的时长内没有收到客户端的响应,则重新发该报文。
无论哪种触发方式,802.1x认证系统都是使用EAP协议来实现客户端、设备端和认证服务器之间的认证信息交换。在客户端和设备端之间使用的是基于以太局域网的EAPOL格式封装EAP报文,然后承载于以太网数据帧中进行交互,而设备端与RADIUS服务器之间的EAP报文可以使用以下两种方式进行交互:
1.EAP中继:来自客户端的EAP报文到达设备端后,直接使用EAPOR格式封装在RADIUS报文中,再发送给RADIUS服务器,则RADIUS服务器来从封装的EAP报文中获取客户端认证信息,然后再对客户端进行认证。这种认证方式的优点是设备端的工作很简单,不需要对来自客户端的EAP报文进行任何处理,只需要用EAPOR对EAP报文进行封装即可,根本不管客户端的认证信息。同时在这种认证方式中,设备端与RADIUS服务器之间支持多种EAP认证方法,但要求服务器端也支持相应的认证方法。
2.EAP终结:来自客户端的EAP的报文在设备端进行终结,然后由设备端将从EAP报文中提取的客户端认证信息封装在标准的RADIUS(不再是EAPOR格式)中,与RAIDUS服务器之间采用PAP或CHAP方式对客户端进行认证(当然在RADIUS服务器端必须配置合法用户的用户名和密码信息)。这种认证方式的优点是现在的RADIUS服务器基本均可支持PAP和CHAP认证,无需升级服务器,但设备端的工作比较繁重,因为在这种认证方式,设备端不仅要从来自客户端的EAP报文中提取客户端认证信息,还要通过标准的RADIUS协议来对这些信息进行封装,且不能支持除MD5-Challenge之外的EAP认证方式。
六、认证过程
EAP中继认证原理
在EAP中继认证的过程中,设备端起一个中继代理的角色,用于通过EAPOR封装和解封装的过程转发客户端和认证服务器之间的交互报文。整个认证过程是先进行用户名认证,再进行对应的密码认证。如图所示:
1.当用户访问网络时自动打开802.1x客户端程序,提示用户输入已经在RADIUS服务器中创建的用户名和密码,发送连接请求。因为端口最初的状态是未授权状态,所以此时端口除了IEEE 802.1x协议包外不能接收和发送任何包。此时,客户端程序向设备端发出认证请求帧(EAPOR-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服务器,进行认证处理,具体流程如下。
MAC旁路认证
在802.1x认证过程中,设备端会首先触发用户采用802.1x认证方式,但若用户长时间内没有进行802.1x认证,则以的MAC地址作为用户名和密码上送给认证服务器进行认证。MAC旁路认证可使802.1x认证系统中无法安装和使用802.1x客户端软件的终端,例如打印机等,以自身MAC地址作为用户名和密码进行认证。