一、802.1X认证简介


  1. 随着企业网络的应用和发展,病毒、木马、间谍软件、网络攻击等各种信息安全威胁也在不断增加。在传统的企业网络建设思路中,一般认为企业内网是安全的,安全威胁主要来自外界。但是研究证明,**80%的网络安全漏洞都存在于网络内部**,它们对网络的破坏程度和范围持续扩大,经常引起系统崩溃、网络瘫痪。另外,内部员工在浏览某些网站时,一些间谍软件、木马程序等恶意软件也会不知不觉地被下载到电脑中,并且在企业内网传播,产生严重的安全隐患。<br />因此,随着安全挑战的不断升级,仅通过传统的安全措施已经远远不够,**安全模型需要由被动模式向主动模式转变,从根源(终端)彻底解决网络安全问题,提高整个企业的信息安全水平**<br />网络接入控制安全解决方案从接入网络的终端安全控制入手,将终端安全状况和网络准入控制结合在一起,通过检查、隔离、加固和审计等手段,加强网络用户终端的主动防御能力,保证企业中每个终端的安全性,进而保护企业整网的安全性。802.1x认证即是网络接入控制安全解决方案中非常重要的一种接入控制方式。<br />802.1X协议是一种**基于端口的网络接入控制协议**(Port Based networkaccess control protocol)。“基于端口的网络接入控制”是指在局域网接入设备的端口这一级验证用户身份并控制其访问权限。

802.1X的优点:

  • 802.1X协议为二层协议,不需要达到三层,对接入设备的整体性能要求不高。
  • 认证报文和数据报文通过逻辑接口分离,提高安全性。

802.1X认证系统:

|
- 802.1X系统为典型的Client/Server结构,包括三个实体:客户端、接入设备和认证服务器
802.1X - 图1
- 客户端一般为一个用户终端设备,用户可以通过启动客户端软件发起802.1X认证。客户端必须支持局域网上的可拓展认证协议EAPoL
- 接入设备通常为支持802.1X协议的网络设备,它为客户端提供接入局域网的端口,充当客户端和认证服务器之间的中介,从客户端请求身份信息,并与认证服务器验证该信息。根据客户端的身份验证状态控制其对网络的访问权限。
- 认证服务器用于实现对用户进行认证、授权和计费,通常为RADIUS服务器。
| | —- |

1.1 802.1x认证系统示意图

802.1X - 图2
客户端和设备端之间运行802.1x定义的EAPOL(Extensible Authentication Protocol Over LAN)

  • 当设备端工作于中继方式时,设备端与认证服务器之间也运行EAP协议,EAP帧中封装认证数据,将该协议承载在其它高层次协议中(如RADIUS),以便穿越复杂的网络到达认证服务器
  • 当设备端工作于终结方式时,设备端终结EAPOL消息,并转换为其它认证协议(如RADIUS),传递用户认证信息给认证服务器。 | 设备端每个物理接口都在逻辑上划分为受控端口和非受控端口。非受控端口始终开放,主要用来传递EAPOL协议帧,可随时保证接收客户端发出的EAPOL认证报文,受控端口只有在认证通过的状态下打开,用于传递网络资源和服务。 | | —- |

1.2 认证模式

802.1X不仅支持基于端口的认证模式,还支持基于MAC的认证模式

  • 基于端口模式:当采用基于端口模式时,只要该端口下的第一个用户认证成功后,其它接入用户无需认证就可使用网络资源。但当最后一个用户下线后,其它用户也会被拒绝使用网络
  • 基于MAC模式:当采用基于MAC地址模式时,该端口下的所有接入用户均需要单独认证。

1.3 端口控制方式

802.1X支持以下端口控制方式:

  • 自动识别模式:端口初始状态为非授权状态,仅允许EAPOL报文收发,不允许用户访问网络资源,如果认证流程通过,则端口切换到授权状态,允许用户访问网络资源。
  • 强制授权模式:端口始终处于授权状态,允许用户不经认证授权即可访问网络资源。
  • 强制非授权模式:端口始终处于非授权状态,不允许用户访问网络资源。

二、802.1X认证协议


  1. 802.1X认证系统使用可拓展认证协议EAP来实现客户端、设备端和认证服务器之间的信息交互。EAP协议可以运行在各种底层,包括数据链路层和上层协议(如UDPTCP等),而不需要IP地址。因此使用EAP协议的802.1X认证具有良好的灵活性。

- 在客户端与设备端之间,EAP协议报文使用EAPoL(EAP over LANs)封装格式,直接承载于LAN环境中。
- 在设备端与认证服务器之间,用户可以根据客户端支持情况和网络安全要求来决定采用的认证方式。
- EAP终结方式中,EAP报文在设备端终结并重新封装到RADIUS报文中,采用标准RADIUS协议完成认证、授权和计费。
- EAP中继方式中,EAP报文被直接封装到RADIUS报文中(EAP over RADIUS,简称RAPoR),以便穿越复杂的网络到达认证服务器。

2.1 EAP报文

802.1X - 图3
EAP报文字段解释:

字段 字节数 含义
Code 1 表示EAP数据包的类型,共有以下几种
- 1(Request):请求。
- 2(Response):响应。
- 3(Success):成功。
- 4(Failure):失败。
ID 1 用于匹配Request和Response。
Length 2 表示EAP数据包的长度,包括Code、ID、Length以及Data各字段。超出Length域范围的字节应该视为数据链路层填充,在接收时应该被忽略掉。
Data 0或多个字节 Data字段的格式由Code的值来决定。
- 当Code取值为1或者2时,EAP为Request和Response报文,Data包含Type、Type Data两个字段,如上图所示。其中,Type为一个字节,表示Request或Response的类型。Type Data为多个字节,内容由Type字段的值决定。
- 当Code取值为3或者4时,EAP为Success和Failure报文,没有Data字段。

Type常用取值:

Type字段值 类型 含义
1 Identity 要求客户端发送用户输入的用户名信息。
2 Notification 非必须的通知消息,传送一些警告消息,例如密码已过期、账号被锁等。
3 NAK 仅用于Response帧,表示否定确认。例如设备用了客户端不支持的认证方法发起请求,客户端可利用Response/NAK消息以告知设备其支持的认证方法。
4 MD5-Challenge 认证方法为MD5质询法。
5 OTP(One-Time Password) 认证方法为一次性密码,例如网银付费时系统会通过短信发送一个一次性密码。
6 GTC(Generic Token Card) 认证方法为通用令牌卡。跟OTP类似,只不过GTC往往对应一个实际的设备,例如许多国内银行都会给申请网银的用户一个动态口令牌,这个令牌就是GTC。
13 EAP-TLS 认证方法为EAP-TLS。
21 EAP-TTLS 认证方法为EAP-TTLS。
25 EAP-PEAP 认证方法为EAP-PEAP。
254 Expanded Types 扩展类型,支持厂商自定义的类型。
255 Experimental use 实验新的类型时做测试用的类型。

2.2 EAPoL

EAPoL是802.1X协议定义的一种报文封装格式,主要用户在客户端和设备之间传送EAP协议报文,以允许EAP协议报文在LAN上传送,其报文结构如下:
802.1X - 图4

EAPoL报文字段解释

字段 字节数 含义
PAE Ethernet Type 2 表示协议类型,值为0x888E。
Protocol Version 1 表示EAPoL帧的发送方所支持的协议版本号。
- 0x01:802.1X-2001。
- 0x02:802.1X-2004。
- 0x03:802.1X-2010。
Type 1 表示EAPoL数据帧类型,有四种取值:
- 00:EAP-Packet,认证报文数据,用于承载认证信息。
- 01:EAPoL-Start,认证开始报文,用于用户主动发起认证过程。
- 02:EAPoL-Logoff,下线请求报文,用于用户主动发起下线请求。
- 03:EAPoL-Key,密钥信息报文。

EAPoL-Start,EAPoL-Logoff和EAPoL-Key仅在客户端和设备端之间存在。 | | Length | 2 | 表示数据长度,也就是Packet Body字段的长度,单位为字节。如果为0,则表示没有后面的Packet Body字段。EAPoL-Start和EAPoL-Logoff报文的Length值都为0。 | | Packet Body | 2 | 表示数据内容。 |


2.3 EAPoR

为支持EAP中继方式,RADIUS协议增加了两个属性:EAP-Message(EAP消息)和Message-Authenticator(消息认证码)。其中,EAP-Message属性用来封装EAP报文,Message-Authenticator属性用于对认证报文进行认证和校验,防止非法报文欺骗。其报文结构如下:
802.1X - 图5
EAPoR报文字段解释

字段 字节数 含义
Code 1 表示RADIUS报文的类型。
Identifier 1 用来匹配请求报文和响应报文,以及检测在一段时间内重发的请求报文。客户端发送请求报文后,服务器返回的响应报文中的Identifier值应与请求报文中的Identifier值相同。
Length 2 指定RADIUS报文的长度。超过Length取值的字节将作为填充字符而忽略。如果接收到的报文的实际长度小于Length的取值,则该报文会被丢弃。
Response Authenticator 16 验证RADIUS服务器的响应报文,同时还用于用户密码的加密。
Attributes 长度不确定 Attribute为报文的内容主体,用来携带专门的认证、授权和计费信息,提供请求和响应报文的配置细节。Attribute可以包括多个属性,每一个属性都采用(Type、Length、Value)三元组的结构来表示。
- 类型(Type),1个字节,取值为1~255,用于表示属性的类型。
- 长度(Length),表示该属性(包括类型、长度和属性值)的长度,单位为字节。
- 属性值(Value),表示该属性的信息,其格式和内容由类型和长度决定,最大长度为253字节。

2.4 认证方式选择

  • EAP中继方式的优点是设备端处理更简单,支持更多的认证方法,缺点则是认证服务器必须支持EAP,且处理能力要足够强。对于常用的EAP-TLS、EAP-TTLS、EAP-PEAP三种认证方式,EAP-TLS需要在客户端和服务器上加载证书,安全性最高,EAP-TTLS、EAP-PEAP需要在服务器上加载证书,但不需要在客户端加载证书,部署相对灵活,安全性较EAP-TLS低。
  • EAP终结方式的优点是现有的RADIUS服务器基本均支持PAP和CHAP认证,无需升级服务器,但设备端的工作比较繁重,因为在这种认证方式中,设备端不仅要从来自客户端的EAP报文中提取客户端认证信息,还要通过标准的RADIUS协议对这些信息进行封装,且不能支持除MD5-Challenge之外的其它EAP认证方式。PAP与CHAP的主要区别是CHAP密码通过密文方式传输,而PAP密码通过明文的方式传输。因而PAP方式认证的安全性较低,实际应用通常采用CHAP方式认证。

三、802.1X认证流程


3.1 认证触发方式

802.1X认证的触发方式

  • 客户端发送EAPoL-Start报文触发认证
  • 客户端发送DHCP/ARP/DHCPv6/ND或任意报文触发认证
  • 设备发送EAP-Request/Identity报文触发认证

802.1X的认证过程可以由客户端主动发起,也可以由设备端发起。设备支持的认证触发方式包括如下两种:

  • 客户端主动触发方式:客户端主动向设备端发送EAPOL-Start报文来触发认证。
  • 设备端主动触发方式:设备端触发方式用于支持不能主动发送EAPOL-Start报文的客户端。
    • 组播触发方式:不支持主动发送EAPOL-Start报文的客户端如Windows XP SP2,在休眠重启时需要依赖设备端主动向客户端发送组播报文触发用户认证。
    • 单播触发方式:接入设备的客户端不能快速安装特定的客户端软件时,通过单播触发功能可以让设备向客户端发送单播报文触发用户认证。

3.2 EAP中继和EAP终结的认证流程

  • 802.1X系统支持EAP中继方式和EAP终结方式与远端RADIUS服务器交互完成认证。以客户端发送EAPoL-Start报文触发认证为例,EAP中继方式和EAP终结方式的802.1X认证流程如下所示:

EAP中继认证方式


1. 当用户需要访问外部网络时打开802.1X客户端程序,输入已经申请、登记过的用户名和密码,发起连接请求。此时,客户端程序将向设备端发出认证请求报文(EAPoL-Start),开始启动一次认证过程。
1. 设备端收到认证请求报文后,将发出一个Identity类型的请求报文(EAP-Request/Identity)要求用户的客户端程序发送输入的用户名。
1. 客户端程序响应设备端发出的请求,将用户名信息通过Identity类型的响应报文(EAP-Response/Identity)发送给客户端。
1. 设备端将客户端发送的响应报文中的EAP报文封装在RADIUS报文(RADIUS Access-Request)中发送给认证服务器进行处理。
1. RADIUS服务器收到设备端转发的用户名信息后,将该信息与数据库中的用户名列表中对比,找到该用户名对应的密码信息,将随机生成的一个MD5 Challenge对密码进行加密处理,同时将此MD5 Challage通过RADIUS Access-Challenge报文发送给客户端。
1. 设备端将RADIUS服务器发送的MD5 Challenge转发给客户端。
1. 客户端收到由设备端传来的MD5 Challenge后,用该Challenge对密码部分进行加密处理,生成EAP-Response/MD5 Challenge报文,并发送给客户端。
1. 设备端将此EAP-Response/MD5 Challenge报文封装在RADIUS报文(RADIUS Access-Request)中发送给RADIUS服务器。
1. RADIUS服务器将收到的已加密的密码信息和本地经过加密运算后的密码信息进行对比,如果相同,则认为该用户为合法用户,并向设备端发送认证通过报文(RADIUS Access-Accept)。
1. 设备收到认证通过报文后向客户端发送认证成功报文(EAP-Success),并将端口改为授权状态,允许用户通过该端口访问网络。
1. 用户在线期间,设备端会通过向客户端定期发送握手报文的方法,对用户的在线情况进行监测。
1. 客户端收到握手报文后,向设备发送应答报文,表示用户仍然在线。缺省情况下,若设备端发送的两次握手请求报文都未得到客户端应答,设备端就会让用户下线,防止用户因为异常原因下线而设备无法感知。
1. 客户端可以发送EAPoL-Logoff报文给设备端,主动要求下线。
1. 设备端把端口状态从授权状态改变成未授权状态,并向客户端发送EAP-Failure报文。

EAP终结认证流程
EAP终结方式与EAP中继方式的认证流程相比,不同之处在于用来对用户密码信息进行加密处理的MD5 Challenge由设备端生成,之后设备端会把用户名、MD5 Challenge和客户端加密后的密码信息一起送给RADIUS服务器,进行相关的认证处理。而在EAP中继方式中,用来对用户密码进行加密处理的挑战字由认证服务器生成,设备端只是负责将EAP报文封装在RADIUS报文中透传认证服务器,整个认证处理都由认证服务器来完成。