本文档描述了设置和使用 802.1X:基于端口的网络访问控制 的软件和程序,使用 Xsupplicant,采用 PEAP (PEAP/MS-CHAPv2) 作为身份验证方法,并使用 FreeRADIUS 作为后端身份验证服务器。
如果首选 PEAP 以外的其他身份验证机制,例如 EAP-TLS 或 EAP-TTLS,则只需要更改少量的配置选项。Windows XP SP1/Windows 2000 SP3 也支持 PEAP/MS-CHAPv2。
802.1X-2001 标准规定:
“基于端口的网络访问控制利用 IEEE 802 LAN 基础设施的物理访问特性,以便为连接到具有点对点连接特性的 LAN 端口的设备提供身份验证和授权手段,并在身份验证和授权失败的情况下阻止访问该端口。在这种情况下,端口是连接到 LAN 基础设施的单个连接点。” --- 802.1X-2001,第 1 页。
图 802.1X:无线节点必须先经过身份验证才能访问其他 LAN 资源。
当新的无线节点 (WN) 请求访问 LAN 资源时,接入点 (AP) 会询问 WN 的身份。在 WN 通过身份验证之前,不允许除 EAP 之外的任何其他流量(“端口”已关闭)。
请求身份验证的无线节点通常被称为Supplicant(请求方),尽管更准确的说法是无线节点包含一个 Supplicant。Supplicant 负责响应 Authenticator(身份验证器)数据,这些数据将建立其凭据。接入点的情况也是如此;Authenticator 不是接入点。相反,接入点包含一个 Authenticator。Authenticator 甚至不需要在接入点中;它可以是一个外部组件。
EAP 是用于身份验证的协议,最初用于拨号 PPP。身份是用户名,并使用 PAP 或 CHAP 身份验证 [RFC1994] 来检查用户的密码。由于身份以明文形式发送(未加密),恶意嗅探器可能会了解用户的身份。因此使用“身份隐藏”;在加密的 TLS 隧道建立之前,不会发送真实身份。
发送身份后,身份验证过程开始。Supplicant 和 Authenticator 之间使用的协议是 EAP,或者更准确地说,是基于 LAN 的 EAP 封装 (EAPOL)。Authenticator 将 EAP 消息重新封装为 RADIUS 格式,并将它们传递给身份验证服务器。
在身份验证期间,Authenticator 仅在 Supplicant 和身份验证服务器之间中继数据包。当身份验证过程完成时,身份验证服务器会发送成功消息(如果身份验证失败,则发送失败消息)。然后,Authenticator 为 Supplicant 打开“端口”。
成功通过身份验证后,Supplicant 将被授予访问其他 LAN 资源/互联网的权限。
有关说明,请参见图 802.1X。
为什么称为“基于端口”的身份验证?Authenticator 处理受控端口和非受控端口。受控端口和非受控端口都是逻辑实体(虚拟端口),但使用相同的物理连接连接到 LAN(相同的连接点)。
图 port:受控端口的授权状态。
在身份验证之前,只有非受控端口是“打开”的。唯一允许的流量是 EAPOL;请参见图 port 上的身份验证器系统 1。在 Supplicant 通过身份验证后,受控端口将打开,并授予访问其他 LAN 资源的权限;请参见图 port 上的身份验证器系统 2。
802.1X 在新的 IEEE 无线标准 802.11i 中发挥着重要作用。
有线等效保密 (WEP) 是原始 802.11 标准的一部分,应提供机密性。不幸的是,WEP 设计不佳且容易被破解。没有身份验证机制,只有弱形式的访问控制(必须拥有共享密钥才能通信)。请点击此处阅读更多内容。
为了应对 WEP 安全性被破解的问题,IEEE 提出了一个新的无线安全标准,名为 802.11i。802.1X 在这个新标准中发挥着重要作用。
新的安全标准 802.11i 于 2004 年 6 月获得批准,它修复了 WEP 的所有弱点。它分为三个主要类别:
临时密钥完整性协议 (TKIP) 是一种短期解决方案,可修复 WEP 的所有弱点。TKIP 可以与旧的 802.11 设备一起使用(在驱动程序/固件升级后),并提供完整性和机密性。
带 CBC-MAC 协议的计数器模式 (CCMP) [RFC2610] 是一种从头开始设计的新协议。它使用 AES [FIPS 197] 作为其加密算法,并且由于这比 RC4(在 WEP 和 TKIP 中使用)更占用 CPU 资源,因此可能需要新的 802.11 硬件。某些驱动程序可以在软件中实现 CCMP。CCMP 提供完整性和机密性。
802.1X 基于端口的网络访问控制: 无论使用 TKIP 还是 CCMP,802.1X 都用于身份验证。
此外,可以使用一种称为“无线鲁棒身份验证协议” (WRAP) 的可选加密方法来代替 CCMP。WRAP 是最初基于 AES 的 802.11i 提案,但由于受到产权负担的困扰,因此被 CCMP 取代。WRAP 支持是可选的,但 CCMP 支持在 802.11i 中是强制性的。
802.11i 还具有扩展的密钥派生/管理,接下来将进行描述。
为了使用加密和完整性算法来实施安全策略,必须获得密钥。幸运的是,802.11i 实现了密钥派生/管理方案。请参见图 KM。
图 KM:802.11i 中的密钥管理和分发。
当 Supplicant (WN) 和身份验证服务器 (AS) 进行身份验证时,AS 发送的最后一个消息之一(假设身份验证成功)是主密钥 (MK)。发送后,MK 仅为 WN 和 AS 所知。MK 绑定到 WN 和 AS 之间的此会话。
WN 和 AS 都从主密钥派生出一个新密钥,称为成对主密钥 (PMK)。
然后将 PMK 从 AS 移动到 Authenticator (AP)。只有 WN 和 AS 可以派生 PMK,否则 AP 可以代替 AS 做出访问控制决策。PMK 是绑定到 WN 和 AP 之间此会话的新鲜对称密钥。
PMK 和 4 次握手用于在 WN 和 AP 之间派生、绑定和验证成对瞬时密钥 (PTK)。PTK 是操作密钥的集合:
密钥确认密钥 (KCK),顾名思义,用于证明拥有 PMK 并将 PMK 绑定到 AP。
密钥加密密钥 (KEK) 用于分发组瞬时密钥 (GTK)。如下所述。
临时密钥 1 和 2 (TK1/TK2) 用于加密。TK1 和 TK2 的使用是密码套件特定的。
有关成对密钥层次结构的概述,请参见图 PKH。
然后,KEK 和 4 次组握手用于将组瞬时密钥 (GTK) 从 AP 发送到 WN。GTK 是连接到同一 Authenticator 的所有 Supplicant 之间的共享密钥,用于保护多播/广播流量。
图 PKH:成对密钥层次结构
对于小型办公室/家庭办公室 (SOHO)、Ad-hoc 网络或家庭使用,可以使用预共享密钥 (PSK)。使用 PSK 时,将省略整个 802.1X 身份验证过程。这也称为“WPA 个人版” (WPA-PSK),而使用 EAP(和 RADIUS)的 WPA 称为“WPA 企业版”或仅称为“WPA”。
256 位 PSK 是使用 [RFC2898] 中的 PBKDFv2 从给定的密码生成的,并用作上述密钥管理方案中描述的主密钥 (MK)。它可以是整个网络的单个 PSK(不安全),也可以是每个 Supplicant 一个 PSK(更安全)。
行业没有时间等到 802.11i 标准完成。他们希望现在就解决 WEP 问题!Wi-Fi 联盟感受到了压力,对标准进行了“快照”(基于草案 3),并将其称为Wi-Fi 保护访问 (WPA)。一个要求是现有 802.11 设备可以与 WPA 一起使用,因此 WPA 基本上是 TKIP + 802.1X。
WPA 不是长期解决方案。要获得鲁棒安全网络 (RSN),硬件必须支持并使用 CCMP。RSN 基本上是 CCMP + 802.1X。
使用 TKIP 而不是 CCMP 的 RSN 也称为过渡安全网络 (TSN)。RSN 也可能被称为 WPA2,这样市场就不会感到困惑。
困惑吗?
基本上:
TSN = TKIP + 802.1X = WPA(1)
RSN = CCMP + 802.1X = WPA2
可扩展身份验证协议 (EAP) [RFC 3748] 只是为身份验证优化的传输协议,而不是身份验证方法本身:
“[EAP 是] 一个身份验证框架,它支持多种身份验证方法。EAP 通常直接在数据链路层(如点对点协议 (PPP) 或 IEEE 802)上运行,而无需 IP。EAP 提供其自身的重复消除和重传支持,但依赖于较低层排序保证。EAP 本身不支持分片;但是,各个 EAP 方法可以支持此功能。” --- RFC 3748,第 3 页
由于 802.1X 使用 EAP,因此可以添加多种不同的身份验证方案,包括智能卡、Kerberos、公钥、一次性密码等。
下面列出了一些最常用的 EAP 身份验证机制。IANA 提供了已注册 EAP 身份验证类型的完整列表:http://www.iana.org/assignments/eap-numbers。
![]() | 并非所有身份验证机制都被认为是安全的! |
EAP-MD5: MD5-Challenge 需要用户名/密码,并且等效于 PPP CHAP 协议 [RFC1994]。此方法不提供字典攻击抵抗、相互身份验证或密钥派生,因此在无线身份验证环境中几乎没有用处。
轻量级 EAP (LEAP): 用户名/密码组合被发送到身份验证服务器 (RADIUS) 进行身份验证。Leap 是 Cisco 开发的专有协议,被认为不安全。Cisco 正在逐步淘汰 LEAP,转而支持 PEAP。可以在此处找到最接近已发布标准的内容。
EAP-TLS: 在 Supplicant 和身份验证服务器之间在 EAP 内创建 TLS 会话。服务器和客户端都需要有效的 (x509) 证书,因此需要 PKI。此方法提供双向身份验证。EAP-TLS 在 [RFC2716] 中进行了描述。
EAP-TTLS: 设置加密的 TLS 隧道,用于安全传输身份验证数据。在 TLS 隧道内,可以使用(任何)其他身份验证方法。由 Funk Software 和 Meetinghouse 开发,目前是 IETF 草案。
受保护的 EAP (PEAP): 与 EAP-TTLS 一样,使用加密的 TLS 隧道。EAP-TTLS 和 EAP-PEAP 的 Supplicant 证书是可选的,但服务器 (AS) 证书是必需的。由 Microsoft、Cisco 和 RSA Security 开发,目前是 IETF 草案。
EAP-MSCHAPv2: 需要用户名/密码,并且基本上是 MS-CHAP-v2 的 EAP 封装 [RFC2759]。通常在 PEAP 加密隧道内部使用。由 Microsoft 开发,目前是 IETF 草案。
远程身份验证拨入用户服务 (RADIUS) 在 [RFC2865](及其相关文档)中定义,主要由 ISP 使用,ISP 在用户获得授权使用 ISP 网络之前对其用户名和密码进行身份验证。
802.1X 没有指定必须存在哪种类型的后端身份验证服务器,但 RADIUS 是 802.1X 中使用的“事实上的”后端身份验证服务器。
可用的 AAA 协议不多,但 RADIUS 和 DIAMETER [RFC3588](包括其扩展)都符合完整的 AAA 支持。AAA 代表身份验证、授权和计费(IETF 的 AAA 工作组)。