全面解析802.1x认证原理

简介:

以下内容摘自正在当当网、京东网、卓越网、互动出版网等各书店火热销售《华为交换机学习指南一书(全书930多页)。本书是由华为官方直接授权,国内第一本,也是唯一一本华为交换机权威学习指南,是华为ICT认证培训指定教材

当当网链接:http://product.dangdang.com/23372225.html
京东网链接:http://item.jd.com/11355972.html

卓越网上的链接:http://www.amazon.cn/dp/B00GT743ME/ref=sr_1_1

互动出版网上的链接:http://product.china-pub.com/3768908#ml全国最低价,7.5折

18.1.1  802.1x认证系统基础

   IEEE 802.1X是由IEEE制定的关于用户接入网络的认证标准,全称是“基于端口的网络接入控制”。它于2001年正式颁布,最初是为有线网络设计,之后为了配合无线网络的接入进行修订改版,并于2004年完成。

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

l  客户端:局域网用户终端设备,但必须是支持EAPOLExtensible Authentication Protocol over LAN,局域网可扩展认证协议)的设备(如PC机),可通过启动客户端设备上安装的802.1x客户端软件发起802.1x认证。

10659021_1387846198hlH5.jpg

图18-2 802.1x认证系统结构

l  设备端:支持802.1x协议的网络设备(如交换机),对所连接的客户端进行认证。它为客户端提供接入局域网的端口,可以是物理端口,也可以是逻辑端口(如Eth-Trunk口)。

l  认证服务器:为设备端802.1x协议提供认证服务的设备,是真正进行认证的设备,实现对用户进行认证、授权和计费,通常为RADIUS服务器。

1. 802.1x认证受控/非受控端口

  在设备端为客户端提供的接入端口被划分为两个逻辑端口:受控端口和非受控端口。“非受控端口”可看成为EAP(可扩展认证协议)端口,不进行认证控制,始终处于双向连通状态,主要用来传递在通过认证前必需的EAPOL协议帧,保证客户端始终能够发出或接收认证报文。

  “受控端口”可以看作为普通业务端口,是需要进行认证控制的。它有“授权”和“非授权”两种状态(相当于在该端口上有一个控制开关):在授权状态下处于双向连通状态(控制开关闭合),可进行正常的业务报文传递;在非授权状态下处于打开状态(控制开关打开),禁止任何业务报文的传递。设备端利用认证服务器对客户端进行认证的结果(AcceptReject)来实现对受控端口的授权/非授权状态进行控制。

2. 802.1x认证的触发方式

   在华为S系列交换机中,802.1x的认证过程可以由客户端主动发起,也可以由设备端主动发起。在“客户端主动触发方式”中,由客户端主动向设备端发送EAPOL-Start(EAPOL开始)报文来触发认证;而“设备端主动触发方式”中用于支持不能主动发送EAPOL-Start报文的客户端,例如Windows XP自带的802.1x客户端。

  在设备端主动触发方式中又有两种以下具体的触发方式:

l  DHCP报文触发:设备在收到用户的DHCP请求报文后主动触发对用户的802.1x认证,仅适用于客户端采用DHCP方式自动分配IP地址的情形因为DHCP请求报文是以广播方式发送的,所以在同一网段中的设备都可以收到,故设备端不一定就是担当DHCP服务器的设备

l  源MAC地址未知报文触发:当设备收到源MAC地址未知的报文时主动触发对用户的802.1x认证。若设备端在设置的时长内没有收到客户端的响应,则重发该报文。

 3. 802.1x的认证方式

  无论是哪种触发方式,802.1x认证系统都是使用EAP协议来实现客户端、设备端和认证服务器之间认证信息的交换。在客户端与设备端之间使用的是基于以太局域网的EAPOL格式封装EAP报文,然后承载于以太网数据帧中进行交互;而设备端与RADIUS服务器之间的EAP报文可以使用以下两种方式进行交互:

l  EAP中继:来自客户端的EAP报文到达设备端后,直接使用EAPOR(EAP over RADIUS)格式封装在RADIUS报文中,再发送给RADIUS服务器,则RADIUS服务器来从封装的EAP报文中获取客户端认证信息,然后再对客户端进行认证。

  这种认证方式的优点是设备端的工作很简单,不需要对来自客户端的EAP报文进行任何处理,只需要用EAPOR对EAP报文进行封装即可,根本不管客户端的认证信息。同时在这种认证方式中,设备端与RADIUS服务器之间可支持多种EAP认证方法,例如MD5-Challenge、EAP-TLS、PEAP等,但要求服务器端也支持相应的认证方法。

l  EAP终结:来自客户端的EAP报文在设备端进行终结,然后由设备端将从EAP报文中提取的客户端认证信息封装在标准的RADIUS报文(不再是EAPOR格式)中,与RADIUS服务器之间采用PAP(Password Authentication Protocol,密码验证协议)或CHAP(Challenge Handshake Authentication Protocal,质询握手验证协议)方式对客户端进行认证(当然在RAIUDS服务器端必须配置合法用户的用户名和密码信息)。

  这种认证方式的优点是现有的RADIUS服务器基本均可支持PAP和CHAP认证,无需升级服务器,但设备端的工作比较繁重,因为在这种认证方式中,设备端不仅要从来自客户端的EAP报文中提取客户端认证信息,还要通过标准的RAIUDS协议对这些信息进行封装,且不能支持除MD5-Challenge之外的其它EAP认证方法。

4. 802.1x认证支持的Guest VLANRestrict VLANCritical VLAN

   为了使那些不支持802.1x的客户端通过安装或者升级802.1x客户端软件来支持802.1x认证,也为那些在认证过程中认证失败,或认证服务器无响应时提供一些基本的访问资源,华为S系列交换机的802.1x认证功能提供了以下三种不同的特殊VLAN功能(当然,这些都是可选配置的)。

l  Guest VLAN

  Guest VLAN(来宾VLAN)功能开启后,当用户不响应802.1x认证请求时(如未安装客户端软件),设备端会将用户所在端口加入到Guest VLAN中,以便这些用户可以访问Guest VLAN,获取客户端软件,升级客户端或执行其他一些用户升级程序等操作。

l  Restrict VLAN

  Restrict VLAN(限制VLAN)功能开启后,当用户认证失败时(如输入了错误的用户名和密码),设备端会将用户所在端口加入到Restrict VLAN中。Restrict VLAN和Guest VLAN的功能相似,都是满足用户在通过认证前可以访问有限的网络资源。但通常在Restrict VLAN中部署的网络资源比Guest VLAN中更少,从而更严格的限制未通过认证的用户对网络资源的访问。

l  Critical VLAN

  Critical VLAN(严格VLAN)功能开启后,当认证服务器无响应时(如设备端与认证服务器之间的网络断开或者认证服务器出现故障),设备端会将用户所在端口加入到Critical VLAN中进而能够访问Critical VLAN中的资源。

5. 802.1x快速部署

  在实际的应用中,如果网络规模比较大,且有大量不能很好支持802.1x功能的客户端,这时客户端的部署工作量可能很大。为此华为S系列交换机提供了802.1x认证快速部署功能。它可引导这些用户自助下载安装客户端,实现客户端的快速部署。

802.1x认证快速部署功能通过以下两个功能实现:

l  用户受限访问

  802.1x认证成功之前,通过ACL限制终端用户只能访问一个特定的IP地址段(免认证IP网段),或是特定服务器,在特定服务器上提供客户端的下载升级或者动态地址分配等服务。

l  用户HTTP访问URL重定向功能

  用户在未进行802.1x认证前或者认证失败后,使用浏览器访问网络时,设备会将用户访问的URL重定向到配置好的URL,供这些用户从这个网页中下载客户端软件。

6. 用户组授权功能

  设备支持根据用户组对用户进行授权控制(就相当于Windows系统中的用户组一样)。在用户认证成功后,认证服务器为该用户下发到对应的用户组,使该用户具备该用户组中的访问权限。每个用户组可以关联不同的ACL规则,通过用户组和ACL规则的关联,实现对每类用户进行ACL授权信息控制,即同类用户采用同样的授权信息。

18.1.2 802.1x认证原理

  前面说了,在802.1x认证过程中,设备端与RADIUS服务器之间支持EAP中继和EAP终结两种认证方式。下面均以客户端主动发起认证为例进行介绍这两种认证方式的工作原理。

1. EAP中继认证原理

  在EAP中继认证的过程中,设备端起一个中继代理的角色,用于通过EAPOR封装和解封装的过程转发客户端和认证服务器之间的交互报文。整个认证过程是先进行用户名认证,然后再进行对应的密码认证,具体如下(对应图18-3中的序号):

10659021_1387846216GK8S.jpg

图18-3 EAP中继认证流程

  (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)中,发送给认证服务器进行处理。

   (5RADIUS服务器收到设备端发来的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服务器。

   (9RADIUS服务器将收到的已加密的密码信息后,与第(5)步在本地经过加密运算后的密码信息进行对比,如果相同则认为为合法用户,并向设备端发送认证通过报文(RADIUS Access-Accept)。

   (10)设备收到RADIUS Access-Accept报文后,经过EAPOR解封装再以EAP-Success报文向客户端发送,并将端口改为授权状态,允许用户通过端口访问网络。

   (11)用户在线期间设备端会通过向客户端定期发送握手报文,对用户的在线情况进行监测。

   (12)客户端收到握手报文后向设备发送应答报文,表示用户仍然在线。缺省情况下,若设备端发送的两次握手请求报文都未得到客户端应答,设备端就会让用户下线,防止用户因为异常原因下线而设备无法感知。

   (13)客户端可以发送EAPOL-Logoff帧给设备端,主动要求下线。

   (14)在设备端收到客户端发来的EAPOL-Logoff帧后,把端口状态从授权状态改变成未授权状态,并向客户端发送EAP-Failure报文,确认对应客户端下线。

2. EAP终结认证原理

  EAP终结方式与EAP中继方式的认证流程相比,主要不同在于步骤(4)中用来对用户密码信息进行加密处理的MD5 challenge是由设备端生成(而不是由RADIUS服务器生成),之后设备端会把用户名、MD5 challenge和客户端加密后的密码信息一起送给RADIUS服务器,进行相关的认证处理。具体流程如图18-4所示。

10659021_1387846232K4y2.jpg

图18-4 EAP终结认证流程

3. MAC旁路认证

  在802.1x认证过程中,设备端会首先触发用户采用802.1x认证方式,但若用户长时间内没有进行802.1x认证(如图18-5所示),则以用户的MAC地址作为用户名和密码上送认证服务器进行认证。MAC旁路认证可使802.1x认证系统中无法安装和使用802.1x客户端软件的终端,例如打印机等,以自身MAC地址作为用户名和密码进行认证。

10659021_1387846252IlzL.jpg

图18-5  MAC旁路认证流程

本文转自王达博客51CTO博客,原文链接http://blog.51cto.com/winda/1345517如需转载请自行联系原作者

茶乡浪子
相关文章
|
1月前
|
关系型数据库 MySQL Shell
CMake构建Makefile深度解析:从底层原理到复杂项目(三)
CMake构建Makefile深度解析:从底层原理到复杂项目
32 0
|
1月前
|
编译器 vr&ar C++
CMake构建Makefile深度解析:从底层原理到复杂项目(二)
CMake构建Makefile深度解析:从底层原理到复杂项目
35 0
|
30天前
|
存储 安全 编译器
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
70 0
|
26天前
|
安全 Java 数据安全/隐私保护
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
57 1
|
1天前
|
缓存 JavaScript 前端开发
|
2天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
|
2天前
|
Java
并发编程之线程池的底层原理的详细解析
并发编程之线程池的底层原理的详细解析
11 0
|
2天前
|
JSON Java Maven
Javaweb之SpringBootWeb案例之 SpringBoot原理的详细解析
Javaweb之SpringBootWeb案例之 SpringBoot原理的详细解析
7 0
Javaweb之SpringBootWeb案例之 SpringBoot原理的详细解析
|
2天前
|
前端开发 JavaScript 编译器
深入解析JavaScript中的异步编程:Promises与async/await的使用与原理
【4月更文挑战第22天】本文深入解析JavaScript异步编程,重点讨论Promises和async/await。Promises用于管理异步操作,有pending、fulfilled和rejected三种状态。通过.then()和.catch()处理结果,但可能导致回调地狱。async/await是ES2017的语法糖,使异步编程更直观,类似同步代码,通过事件循环和微任务队列实现。两者各有优势,适用于不同场景,能有效提升代码可读性和维护性。
|
12天前
|
机器学习/深度学习 分布式计算 BI
Flink实时流处理框架原理与应用:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Flink实时流处理框架的原理,包括运行时架构、数据流模型、状态管理和容错机制、资源调度与优化以及与外部系统的集成。此外,还介绍了Flink在实时数据管道、分析、数仓与BI、机器学习等领域的应用实践。同时,文章提供了面试经验与常见问题解析,如Flink与其他系统的对比、实际项目挑战及解决方案,并展望了Flink的未来发展趋势。附带Java DataStream API代码样例,为学习和面试准备提供了实用素材。
34 0

推荐镜像

更多