802.1X认证
802.1X简介
IEEE802 LAN/WAN委员会为解决无线局域网网络安全问题,提出了802.1X协议。后来,802.1X协议作为局域网端口的一个普通接入控制机制在以太网中被广泛应用,主要解决以太网内认证和安全方面的问题。
802.1X协议是一种基于端口的网络接入控制协议。“基于端口的网络接入控制”是指,在局域网接入设备的端口这一级,对所接入的用户设备通过认证来控制对网络资源的访问。
如图3-2所示,802.1X系统为典型的Client/Server结构,包括三个实体:客户端(Client)、设备端(Device)和认证服务器(Server)。
- 客户端是位于局域网段一端的一个实体,由该链路另一端的设备端对其进行认证。客户端一般为一个用户终端设备,用户可以通过启动客户端软件发起802.1X认证。客户端必须支持局域网上的可扩展认证协议EAPOL(Extensible Authentication Protocol over LAN)。
- 设备端是位于局域网段一端的另一个实体,对所连接的客户端进行认证。设备端通常为支持802.1X协议的网络设备,它为客户端提供接入局域网的端口,该端口可以是物理端口,也可以是逻辑端口。
- 认证服务器是为设备端提供认证服务的实体。认证服务器用于实现对用户进行认证、授权和计费,通常为RADIUS服务器。
802.1X的基本概念
1、受控/非受控端口
- 非受控端口始终处于双向连通状态,主要用来传递EAPOL协议帧,保证客户端始终能够发出或接收认证报文。
- 受控端口在授权状态下处于双向连通状态,用于传递业务报文;在非授权状态下禁止从客户端接收任何报文。
2、授权/非授权状态
设备端利用认证服务器对需要接入局域网的客户端执行认证,并根据认证结果(Accept或Reject)对受控端口的授权/非授权状态进行相应地控制。
图3-3显示了受控端口上不同的授权状态对通过该端口报文的影响。图中对比了两个802.1X认证系统的端口状态。系统1的受控端口处于非授权状态(相当于端口开关打开),系统2的受控端口处于授权状态(相当于端口开关闭合)。
802.1X的认证触发方式
- 客户端主动触发方式:客户端主动向设备端发送EAPOL-Start报文来触发认证。
- 设备端主动触发方式:设备端触发方式用于支持不能主动发送EAPOL-Start报文的客户端,例如Windows系统自带的802.1X客户端。
802.1X的认证方式
- 在客户端与设备端之间,EAP协议报文使用EAPOL封装格式,并直接承载于LAN环境中。
- 在设备端与RADIUS服务器之间,EAP协议报文可以使用以下两种方式进行交互。
- EAP中继:EAP协议报文由设备端进行中继,设备将EAP报文使用EAPOR(EAP over RADIUS)封装格式承载于RADIUS协议中,发送给RADIUS服务器进行认证。该认证方式的优点是:设备处理简单,可支持多种类型的EAP认证方法,例如MD5-Challenge、EAP-TLS、PEAP等,但要求服务器端支持相应的认证方法。
- EAP终结:EAP协议报文由设备端进行终结,设备将客户端认证信息封装在标准RADIUS报文中,与服务器之间采用密码验证协议PAP(Password Authentication Protocol)或质询握手验证协议CHAP(Challenge Handshake Authentication Protocol)方式进行认证。该认证方式的优点是:现有的RADIUS服务器基本均可支持PAP和CHAP认证,无需升级服务器,但设备处理较为复杂,且不能支持除MD5-Challenge之外的其它EAP认证方法。
设备支持如下EAP协议:EAP-CHAP(EAP-MD5)、EAP-PAP、EAP-TLS、EAP-TTLS和EAP-PEAP。
802.1X系统支持EAP中继方式和EAP终结方式与远端RADIUS服务器交互完成认证。图3-4与图3-5关于两种认证方式的过程描述,都以客户端主动发起认证为例。
1、EAP中继认证
EAP中继认证的过程如下:
当用户需要访问外部网络时打开802.1X客户端程序,输入已经申请、登记过的用户名和密码,发起连接请求。此时,客户端程序将向设备端发出认证请求帧(EAPOL-Start),开始启动一次认证过程。
设备端收到认证请求帧后,将发出一个Identity类型的请求帧(EAP-Request/Identity)要求用户的客户端程序发送输入的用户名。
客户端程序响应设备端发出的请求,将用户名信息通过Identity类型的响应帧(EAP-Response/Identity)发送给设备端。
设备端将客户端发送的响应帧中的EAP报文封装在RADIUS报文(RADIUS Access-Request)中发送给认证服务器进行处理。
RADIUS服务器收到设备端转发的用户名信息后,将该信息与数据库中的用户名列表中对比,找到该用户名对应的密码信息,用随机生成的一个MD5 Challenge对密码进行加密处理,同时将此MD5 Challenge通过RADIUS Access-Challenge报文发送给设备端。
设备端将RADIUS服务器发送的MD5 Challenge转发给客户端。
客户端收到由设备端传来的MD5 Challenge后,用该Challenge对密码部分进行加密处理,生成EAP-Response/MD5 Challenge报文,并发送给设备端。
- 设备端将此EAP-Response/MD5 Challenge报文封装在RADIUS报文(RADIUS Access-Request)中发送给RADIUS服务器。
- RADIUS服务器将收到的已加密的密码信息和本地经过加密运算后的密码信息进行对比,如果相同,则认为该用户为合法用户,并向设备端发送认证通过报文(RADIUS Access-Accept)。
- 设备收到认证通过报文后向客户端发送认证成功帧(EAP-Success),并将端口改为授权状态,允许用户通过端口访问网络。
- 用户在线期间,设备端会通过向客户端定期发送握手报文的方法,对用户的在线情况进行监测。具体实现参见dot1x timer arp-detect命令。
- 客户端收到握手报文后,向设备发送应答报文,表示用户仍然在线。缺省情况下,若设备端发送的两次握手请求报文都未得到客户端应答,设备端就会让用户下线,防止用户因为异常原因下线而设备无法感知。具体实现参见dot1x timer arp-detect命令。
- 客户端可以发送EAPOL-Logoff帧给设备端,主动要求下线。
- 设备端把端口状态从授权状态改变成未授权状态,并向客户端发送EAP-Failure报文。
2、EAP终结认证
EAP终结方式与EAP中继方式的认证流程相比,不同之处在于步骤(4)中用来对用户密码信息进行加密处理的MD5 challenge由设备端生成,之后设备端会把用户名、MD5 challenge和客户端加密后的密码信息一起送给RADIUS服务器,进行相关的认证处理。
MAC旁路认证
MAC旁路认证可使802.1X认证系统中无法安装和使用802.1X客户端软件的终端,例如打印机等,以自身MAC地址作为用户名和密码进行认证。
802.1X认证过程中,设备端会首先触发用户采用802.1X认证方式,但若用户长时间内没有进行802.1X认证,则以用户的MAC地址为认证信息,把MAC地址作为用户名和密码上送认证服务器进行认证。
如图3-6所示,当设备端发出多次认证请求而终端没有响应后,将采用MAC旁路认证。
802.1X认证支持动态VLAN授权功能
1、Guest VLAN
Guest VLAN功能开启后,当用户不响应802.1X认证请求时,譬如未安装客户端软件,设备端会将用户所在端口加入到Guest VLAN中,这样用户就可以访问Guest VLAN中的资源,从而满足了未认证的用户获取客户端软件,升级客户端或执行其他一些用户升级程序等操作。
2、Restrict VLAN
Restrict VLAN功能开启后,当用户认证失败时,譬如输入了错误的用户名和密码,设备端会将用户所在端口加入到Restrict VLAN中。Restrict VLAN和Guest VLAN的功能相似,都是满足用户在通过认证前可以访问有限的网络资源。通常在Restrict VLAN中部署的网络资源比Guest VLAN中更少,从而更严格的限制未通过认证的用户对网络资源的访问。
3、Critical VLAN
Critical VLAN功能开启后,当认证服务器无响应时,譬如设备端与认证服务器之间的网络断开或者认证服务器出现故障,设备端会将用户所在端口加入到Critical VLAN中进而能够访问Critical VLAN中的资源。
802.1X快速部署
NAC作为网络端到端接入控制方案,提升了网络的整体防御能力,但是在实际的应用过程中802.1X客户端的部署工作量很大,为网络建设带来不便。802.1X认证快速部署功能就可以解决以上问题,引导用户自助下载安装客户端,实现客户端的快速部署。802.1X认证快速部署功能通过以下两个功能实现:
用户受限访问
802.1X认证成功之前,通过ACL限制终端用户只能访问一个特定的IP地址段或是特定服务器,在特定服务器上提供客户端的下载升级或者动态地址分配等服务。
用户HTTP访问URL重定向功能
终端用户在未进行802.1X认证前或者认证失败后,使用IE访问网络,设备将用户访问的URL重定向到配置好的URL(客户端下载界面)。
用户组授权功能
设备支持根据用户组对用户进行授权控制,即用户认证成功后,认证服务器下发用户组,将用户进行分类。每个用户组可以关联不同的ACL规则,通过用户组和ACL规则的关联,实现对每类用户进行ACL授权信息控制,即同类用户采用同样的授权信息。