网络802.1X协议简介
网络802.1X协议简介
802.1X是一种基于端口的网络接入控制协议。基于802.1X协议的用户认证方式叫做802.1X认证。802.1X认证被广泛应用在信息安全要求严格的网络中。
802.1X协议的背景
早期的IEEE 802 LAN协议中,只要用户可以接入局域网的控制设备(例如接入交换机),就可以访问局域网中的设备或资源,这无疑是存在安全隐患的。为解决无线局域网的安全问题,IEEE 802委员会提出了802.1X协议。802.1X协议可以控制用户的网络访问权限,防止身份不明或未经授权的用户传输和接收数据。由于802.1X协议的普适性,因此后来也广泛应用于有线局域网。
与其他接入控制机制不同,802.1X协议是通过控制接入端口,实现用户级的接入控制。在802.1X协议中,物理接入端口被划分为“受控端口”和“非受控端口”这两个逻辑端口,用于实现业务与认证的分离。非受控端口主要用于传递EAPOL协议帧,始终处于双向连通状态,保证客户端始终能够发出或接收认证报文;而受控端口用于传递业务报文,因此在授权状态下处于双向连通状态,在非授权状态下不从客户端接收任何报文。
换言之,基于802.1X协议的认证,其最终目的就是确定用户的接入端口是否可用。如果认证成功,那么就打开端口,允许客户端的所有报文通过;如果认证不成功,就保持端口的关闭状态,只允许EAPOL协议帧通过。
什么时候需要使用802.1X?
通常在新建网络、用户集中或者信息安全要求严格的场景中使用802.1X认证。802.1X认证具有以下优点:
- 对接入设备的性能要求不高。802.1X协议为二层协议,不需要到达三层,可以有效降低建网成本。
- 在未授权状态下,不允许与客户端交互业务报文,因此保证了业务安全。
以企业网络为例。员工终端一般需要接入办公网络,安全要求较高,此时推荐使用802.1X认证。
但802.1X认证要求客户端必须安装802.1X客户端软件。在机场、商业中心等公共场所,用户流动性大,终端类型复杂,且安全要求不高,可以使用Portal认证。对于打印机、传真机等哑终端,可以使用MAC认证,以应对哑终端不支持安装802.1X客户端软件,或者不支持输入用户名和密码的情况。
802.1X是如何工作的?
如下图所示,802.1X认证系统为典型的Client/Server结构,包括三个组件:客户端、接入设备和认证服务器。
802.1X系统中的组件
802.1X系统中的组件
- 客户端通常是用户终端设备。客户端必须支持局域网上的可扩展认证协议(Extensible Authentication Protocol over LANs,EAPoL),并且安装802.1X客户端软件,从而使用户能够通过启动客户端软件发起802.1X认证。
- 接入设备通常是支持802.1X协议的网络设备,例如交换机。它为客户端提供接入局域网的端口,该端口可以是物理端口,也可以是逻辑端口。
- 认证服务器用于实现对用户进行认证、授权和计费,通常为RADIUS服务器。
在用户终端安装802.1X客户端软件后,用户可向接入设备发起认证申请。接入设备和用户终端交互信息后,把用户信息发送到认证服务器进行认证。若认证成功,则接入设备打开与该用户相连的接口,允许其访问网络;若认证失败,则接入设备将不允许其访问网络。
802.1X认证协议
802.1X认证系统使用可扩展认证协议(Extensible Authentication Protocol,EAP)来实现客户端、设备端和认证服务器之间的信息交互。EAP协议可以运行在各种底层,包括数据链路层和上层协议(如UDP、TCP等),而不需要IP地址。因此使用EAP协议的802.1X认证具有良好的灵活性。
在客户端与接入设备之间,EAP协议报文使用EAPoL(EAP over LANs)封装格式,直接承载于LAN环境中。
802.1X认证方式
在接入设备与认证服务器之间,可以采用EAP终结方式或者EAP中继方式交互认证信息。
- EAP中继方式:接入设备对接收到的EAP报文不作任何处理,直接将EAP报文封装到RADIUS报文中,并将RADIUS报文发送给RADIUS服务器进行认证。EAP中继方式也被称为EAPOR(EAP over Radius)。EAP中继方式的优点是设备端处理更简单,支持更多的认证方法;缺点则是认证服务器必须支持EAP,且处理能力要足够强。
- EAP终结方式:接入设备直接解析EAP报文,把报文中的用户认证信息封装到RADIUS报文中,并将RADIUS报文发送给RADIUS服务器进行认证。EAP终结方式的优点是大多数RADIUS服务器都支持PAP和CHAP认证,无需升级服务器;但对接入设备的要求较高,接入设备要从EAP报文中提取客户端认证信息,通过标准的RADIUS协议对这些信息进行封装,且不能支持大多数EAP认证方法(MD5-Challenge除外)。
认证方式选择
- EAP中继方式的优点是设备端处理更简单,支持更多的认证方法,缺点则是认证服务器必须支持EAP,且处理能力要足够强。对于常用的EAP-TLS、EAP-TTLS、EAP-PEAP三种认证方式,EAP-TLS需要在客户端和服务器上加载证书,安全性最高,EAP-TTLS、EAP-PEAP需要在服务器上加载证书,但不需要在客户端加载证书,部署相对灵活,安全性较EAP-TLS低。
- EAP终结方式的优点是现有的RADIUS服务器基本均支持PAP和CHAP认证,无需升级服务器,但设备端的工作比较繁重,因为在这种认证方式中,设备端不仅要从来自客户端的EAP报文中提取客户端认证信息,还要通过标准的RAIUDS协议对这些信息进行封装,且不能支持除MD5-Challenge之外的其它EAP认证方法。PAP与CHAP的主要区别是CHAP密码通过密文方式传输,而PAP密码通过明文的方式传输。因而PAP方式认证的安全性较低,实际应用通常采用CHAP方式认证。
802.1X认证流程
802.1X认证的触发方式
802.1X认证有以下触发方式:
- 客户端发送EAPoL-Start报文触发认证。
- 客户端发送DHCP/ARP/DHCPv6/ND或任意报文触发认证。
- 设备发送EAP-Request/Identity报文触发认证。
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),并将端口改为授权状态,允许用户通过该端口访问网络。
- 用户在线期间,设备端会通过向客户端定期发送握手报文的方法,对用户的在线情况进行监测。
- 客户端收到握手报文后,向设备发送应答报文,表示用户仍然在线。缺省情况下,若设备端发送的两次握手请求报文都未得到客户端应答,设备端就会让用户下线,防止用户因为异常原因下线而设备无法感知。
- 客户端可以发送EAPoL-Logoff报文给设备端,主动要求下线。
- 设备端把端口状态从授权状态改变成未授权状态,并向客户端发送EAP-Failure报文。
EAP终结认证流程
EAP终结方式与EAP中继方式的认证流程相比,不同之处在于用来对用户密码信息进行加密处理的MD5 Challenge由设备端生成,之后设备端会把用户名、MD5 Challenge和客户端加密后的密码信息一起送给RADIUS服务器,进行相关的认证处理。而在EAP中继方式中,用来对用户密码进行加密处理的挑战字由认证服务器生成,设备端只是负责将EAP报文封装在RADIUS报文中透传认证服务器,整个认证处理都由认证服务器来完成。
更多协议相关的详细细节可见下面的参考链接。