802.1X技术基础
1 前言
802.1X作为一种基于端口的用户访问控制安全机制,因其低成本、良好的业务连续性和扩充性以及较高的安全性和灵活性,自从2001年6月正式成为IEEE 802系列标准以来便迅速受到了设备制造商、各大网络运营商和最终用户的广泛支持和肯定。
那么802.1X从何而来?有什么作用?体系结构是怎么样的?用到什么协议?并且又是如何实现的?这些都将是我们本文讨论的内容。
2 802.1X起源
以太网结构简单的特性使得其在全世界范围内迅速得到广泛部署,成为当前计算机数据通信网络最主要的接入方式之一,但这种简单机制同时又带来安全隐患,任何一台电脑只要接入网络便有访问网络资源的权限。随着网络的逐渐普及,一方面,越来越多的企业、校园、小区、SOHO用户青睐于以太网这种价格低廉、使用方便、带宽高的接入方式;另一方面可运营新业务的开展需要底层以太网提供必要的安全认证机制。如何正确处理用户访问权限的问题成为日益突出的问题,
802.1X就是IEEE为了解决基于端口的接入控制而定义的一个标准。802.1X,全称为Port-Based Networks Access Control,即基于端口的网络访问控制,它起源于无线网络标准802.11协议,802.11协议是标准的无线局域网协议,802.1X协议设计的最初的目的是为了解决无线局域网用户的接入认证问题,但由于其原理对于所有符合IEEE 802标准的局域网具有普适性,因此在有线局域网中也得到了广泛的应用。
现在802.1X协议作为局域网一种普遍的端口接入控制机制在以太网中被广泛应用,主要用以解决以太网内认证和安全方面的问题。
3 体系结构
图1 802.1X协议的体系结构
IEEE 802.1X协议采用典型的客户端/服务器体系结构,包括三个主要的部分:客户端(Supplicant System)、认证系统(Authenticator System)以及认证服务器(Authentication Server System)。图1描述了三者之间的关系以及互相之间的通信。
客户端一般为一个用户终端系统,该终端系统通常需要安装一个客户端软件,用户通过启动这个客户端软件发起802.1X协议的认证过程。为支持基于端口的接入控制,客户端系统必须支持EAPOL(Extensible Authentication Protocol Over LAN,局域网上的可扩展认证协议)。
认证系统也称NAS(Network Access System,即网络接入系统),通常为支持802.1X协议的网络设备。为了便于理解,接下来文中提到的所有"认证系统"均用NAS来进行表述。在启动了802.1X认证的情况下,该设备上用于客户端接入的每个物理端口对应两个逻辑端口:受控端口(Controlled Port)和非受控端口(Uncontrolled Port)。非受控端口始终处于双向连通状态,主要用来传递EAPOL协议帧,保证客户端始终可以发送或接收认证信息。而受控端口只有在认证通过的状态下才打开,用于传递业务信息帧。为适应不同的应用环境,受控端口可配置为单向受控和双向受控两种方式。实行双向受控时,禁止帧的发送和接收;实行单向受控时,禁止从客户端接收帧,但允许向客户端发送帧。目前,H3C公司设备只支持单向受控。如果用户未通过认证,则受控端口处于未认证状态,用户无法访问认证服务器提供的服务。图1中NAS的受控端口处于未认证状态,因此无法访问认证服务器提供的服务。
认证服务器通常为Radius服务器,该服务器可以存储有关用户的认证、计费、业务信息,比如用户所属的VLAN、CAR参数、优先级、用户的访问控制列表等等。这里认证服务器所提供的服务是指通过检验客户端发送来的身份标识,来判断该用户是否有权使用NAS所提供的网络服务。当用户通过认证后,认证服务器会把用户的相关信息传递给NAS,由NAS构建动态的访问控制列表,用户的后续流量就将接受上述参数的监管。本文中提到的认证服务器均以Radius服务器为例进行说明。
以上三个部分,除客户端系统外,NAS和认证服务器之间既可以分布在两个不同的物理实体上,也可以是集中在一个物理实体上,后者指的是由NAS独立完成用户的认证授权,即本地认证。
4 协议实现及报文格式
图2 802.1X协议实现
如图2所示,802.1X协议在实现整个安全认证的过程中,其三个关键部分客户端、认证系统(NAS)、认证服务器之间是通过通信协议进行交互的,因此有必要对其相关的通信协议做个介绍。
4.1 EAPOL协议
EAPOL(EAP over LANs)是802.1X协议定义的一种报文封装格式,主要用于在客户端和NAS之间承载用户信息,也就是说允许EAP协议报文直接承载于LAN环境中。
EAPOL消息封装格式如图3所示:
图3 EAPOL的帧结构
PAE Ethernet Type:2字节,该值表示以太网协议类型,802.1X为其分配的协议类型为0x888E。
Protocol Version:1字节,表示EAPOL帧的发送方所使用的协议版本号。
Packet Type:1字节,表示EAPOL数据帧类型,有如下四种帧类型,如图4所示。
Packet Body Length:2字节,表示数据域的长度,也就是Packet Body字段的长度,单位为字节。当EAPOL数据帧的类型为EAPOL-Start或EAPOL-Logoff时,该字段值为0,表示后面没有Packet Body字段。
Packet Body:表示数据内容,根据不同的Type有不同的格式。
图4 Packet Body类型及说明
4.2 EAP协议
802.1X协议采用EAP(Extensible Authentication Protocol,可扩展认证协议)来实现客户端、NAS和认证服务器之间认证信息的交互。
通过支持EAP协议,NAS只需控制其受控端口的状态,但是并不干涉通过非受控端口在客户端和认证服务器之间传递的认证信息。这样,就实现了认证流和业务流的完全分离。可以使用认证服务器来实现各种认证机制,NAS仅仅需要传送认证信息,并根据认证返回的结果控制受控端口的状态。
当 EAPOL 报文的Packet Type字段值为0000 0000时,表明Packet Body字段封装的是一个EAP 数据包,EAP 协议报文格式在 RFC2284 中有详细描述。下面来看一下EAP报文封装格式,如图5所示。
图5 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域格式如图6所示。
图6 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(消息认证码)。
如图7所示,EAP-Message属性用来封装EAP数据包,类型代码为79,Value域最长253字节,如果EAP数据包长度大于253字节,可以对其进行分片,依次封装在多个EAP-Message属性中。该属性必须配合Message-Authenticator属性使用。
图7 EAP-Message属性-
而上面提到的Message-Authenticator属性,如图8所示,类型代码为80,主要用于在EAP认证过程中验证携带了EAP-Message属性的Radius报文的完整性,避免接入请求包被窜改。在含有EAP-Message属性的数据包中,必须同时也包含Message-Authenticator,否则该数据包会被认为无效而被丢弃。此外,若接收端对接收到的Radius报文计算出的完整性校验值与报文中携带的Message-Authenticator属性的Value值不一致,该数据包也会被认为无效而丢弃。
图8 Message-Authenticator属性
5 认证的基本过程
5.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客户端配合使用。
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基本认证流程,如图9所示。其中EAP-MD5是一种单向认证机制,可以完成网络对用户的认证,但认证过程不支持加密密钥的生成。
图9 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报文。
这里要提出的一个值得注意的地方:在客户端与认证服务器交换口令信息的时候,没有将口令以明文直接送到网络上进行传输,而是对口令信息进行了不可逆的加密算法处理,使在网络上传输的敏感信息有了更高的安全保障,杜绝了由于下级接入设备所具有的广播特性而导致敏感信息泄漏的问题。
5.3.2 EAP终结方式
EAP终结方式将EAP报文在设备端终结并映射到Radius报文中,通过标准的Radius协议完成认证、授权和计费。设备端与Radius服务器之间可以采用PAP(Password Authentication Protocol,密码验证协议)或者CHAP(Challenge Handshake Authentication Protocol,质询握手验证协议)认证方法。二者主要区别是CHAP密码通过密文方式在客户端和NAS之间传输,而PAP密码通过明文的方式传输。以下以CHAP认证方式为例介绍认证流程,如图10所示。
图10 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,主动终止已认证状态,交换机将端口状态从授权状态改变成未授权状态。
5.3.3 两种方式对比
EAP中继方式与EAP终结方式的认证流程十分类似,不同之处主要在于加密字的生成处理及传递方式。在EAP中继方式中,用来对用户口令信息进行加密处理的随机加密字由认证服务器生成,交换机只是负责将EAP报文透传认证服务器,整个认证处理都由认证服务器来完成。而在EAP终结方式中,用来对用户密码信息进行加密处理的随机加密字由NAS生成,NAS会把用户名、随机加密字和客户端加密后的密码信息一起送给认证服务器,进行相关的认证处理;
从上面可以看出,由于认证流程中对于加密字的生成处理及传递方式不同,因此EAP中继与EAP终结两种认证方式其优缺点也很明显:
EAP中继方式优点是NAS设备处理更简单,支持更多的认证方式,缺点则是认证服务器必须支持EAP;而EAP终结方式的优点是认证服务器无需升级,现有的Radius服务器可以继续使用,缺点是NAS设备处理更复杂。
两种方式各有优缺点,企业可根据实际情况自行选择。若为了兼容Radius服务器,节省用户投资,建议NAS选择EAP终结方式。目前H3C公司的交换机产品均支持这两种认证方式,在默认情况下,选择EAP终结方式。
6 H3C公司对802.1X的扩展属性
目前802.1X技术在宽带城域网和园区网中获得了大量的应用。在现在竞争激烈的宽带网络建设中,基于业务类似的情况下,802.1X及其扩展业务特性往往成为关键点。H3C公司的ComWare平台的802.1X业务除兼容标准外,根据需要进行了多项扩展。
目前H3C公司的交换机产品均支持IEEE 802.1X认证技术,并在严格遵守协议标准的同时加入独特的实现方式,提高了灵活性。
6.1 支持基于端口和基于MAC的不同认证方式
IEEE 802.1X的标准是一个基于端口的访问控制协议,其基本功能是对用户接入端口进行控制。基于端口的认证方式下,一旦有一个用户通过认证,端口就处于打开状态,任何其他用户都可以通过该端口访问网络,这对无线接入访问点而言是足够的,因为一个用户占用一个信道。但在电信接入和学校等环境中,以端口为对象的控制粒度难以满足安全要求,基于MAC地址逻辑端口控制势在必行。
H3C公司的802.1X特性不仅提供基于端口(Portbased)的用户访问控制,而且提供基于用户MAC地址(Macbased)的访问控制。
基于MAC的认证方式下,H3C公司的实现是通过在MAC表项中添加/删除用户主机MAC的方式来实现的,通过认证的用户MAC将被添加到MAC表项中,这样用户就具备权限访问网络了。反之,没有通过认证的用户主机MAC是不会出现在MAC表项中的,因此就没有访问网络的权限。
6.2 灵活的用户业务下发
目前H3C公司设备支持的下发业务包括VLAN业务、ACL业务和CAR业务等。
VLAN业务下发是指,在用户认证过程中,通过与Radius服务器配合,支持给用户重新指定VLAN并下发到NAS。在LAN Switch中,VLAN与路由虚接口有映射关系,因此可以根据这一特性来规划某类用户的管理策略。例如,校园网中,给学生群体分配VLAN 10,教师群体分配VLAN 20。通过分别给VLAN 10和20虚接口所在路由段指定不同的访问控制策略可增强可管理性。同时,由于VLAN资源是动态下发的,因此用户可以在园区网中漫游而不影响访问。
而ACL业务下发,为用户访问网络提供了良好的过滤条件设置功能。802.1X认证支持认证服务器授权下发ACL功能,即当用户通过认证后,如果认证服务器上配置了授权ACL,则设备会根据服务器下发的授权ACL对用户所在端口的数据流进行控制。为使下发的授权ACL生效,需要提前在设备上配置相应的ACL规则。在用户访问网络的过程中,可以通过改变服务器的授权ACL设置来改变用户的访问权限。
CAR业务即用户流量控制业务。目的是根据资费情况动态设定用户的上下行流量参数。这一业务除了需要Radius服务器配合外,还需要NAS本身支持流量控制功能。
6.3 定期握手机制取代了重新认证机制
重认证机制是IEEE 802.1X协议中建议的一种及时发现用户意外下线的机制,H3C公司在IEEE 802.1X实现中对这部分机制进行了优化创新,将重认证机制用定期握手机制取代。定期握手机制是指NAS定期发送握手请求报文给在线用户,客户端程序收到后,回复响应报文,NAS以此认为用户在线。若在规定期限内,如3个定期握手计时器超时,没有收到客户端的回应,NAS就认为用户已下线,进而中断连接,完成计费等操作。采用定期握手机制能够更好的发现用户意外下线的情况,杜绝了由于用户的意外下线而导致的计费误差的问题,提高计费信息的可靠性,防止用户"永远在线"。
6.4 独特的代理用户检测
在宽带园区网环境中,特别是校园网中,用户通过Proxy上网来实现"一个账号多人使用"的情况较普遍,引起了运营商的强烈关注。通过Proxy可以隐藏真实身份并能访问网络资源。
交换机的802.1X代理用户检测特性主要检测三类特殊用户:其一检测使用代理服务器登录的用户;其二检测使用IE代理服务器登录的用户;其三则检测用户是否使用多网卡,即用户登录时,其PC上处于激活状态的网卡超过一个。
根据客户端检测的结果,应答的结果有两种:正常上网或者通过Proxy上网。如果检测结果是正常方式上网,则设备继续与客户端握手,并保持客户端在线状态;如果结果为Proxy上网,且NAS检测到上面提到的三类中任意一类特殊用户时,可以采取两种不同措施:一种是只发送下线消息Logoff切断用户连接,拒绝用户上网,不发送Trap报文。另一种则是与之相反,即不切断用户连接,保持用户在线,但会根据设备端的配置给网管报送Trap信息。
该功能的实现需要NAS与H3C公司的802.1X客户端程序iNode配合使用,实现对Proxy的检测,提高网络的可管理性。
7 综述
802.1X认证系统提供了一种用户接入认证的手段,它仅关注受控端口的打开与关闭。合法用户接入时,该端口打开,而非法用户接入或没有用户接入时,则使端口处于关闭状态。认证的结果在于端口状态的改变,而不涉及其它认证技术所考虑的IP地址协商和分配问题,是各种身份认证技术中最为简化的实现方案。
在采用802.1X认证技术时,必须考虑到它的操作颗粒度为端口,合法用户接入端口之后,端口始终处于打开状态,此时其它用户(合法或非法)通过该端口接入时,不需认证即可访问网络资源。对于无线局域网接入而言,认证之后建立起来的信道(端口)被独占,不存在其它用户非法使用的问题。但如果802.lX认证技术应用于宽带IP城域网,就存在端口打开之后,其它用户(合法或非法)可自由接入难以控制的问题。因此,在提出可运营、可管理要求的宽带IP城域网中如何使用该认证技术,还需要谨慎分析所适用的场合,并考虑与其它信息绑定组合认证的可能性。