偏执企鹅 - 使用WPA和FreeRADIUS保护WLAN安全,第一部分
您是否因为正在使用老旧的有线等效保密 (WEP) 而担心您的 802.11b 无线局域网 (WLAN) 的安全性?如果您仍然仅依赖 WEP,那么您应该感到紧张:WEP 中古老且众所周知的漏洞使得窃听者能够通过简单地捕获几个小时的 WLAN 数据包并暴力破解 WEP 使用的有缺陷的加密来破解您的 WEP 密钥。
但是还有希望!Wi-Fi 保护访问 (WPA) 为 802.11b 添加了新的身份验证机制和改进的加密密钥生成,并且支持 WPA 的 WLAN 产品已经变得随处可见。更棒的是,Linux 工具可用于 WPA 请求者(客户端系统)、验证器(接入点)和服务器(RADIUS 身份验证服务器)。
在接下来的几篇文章中,我将介绍 WPA 及其组件协议、它们如何互操作以及如何使用 FreeRADIUS 服务器软件包构建基于 Linux 的 WLAN 身份验证服务器。
那么,802.11b 的安全性到底有什么问题呢?简而言之,802.11b 的 WEP 协议有两个致命缺陷。首先,密码学实现缺陷使得即使您的设备支持更高的密钥长度,也无法有效实现高于 40 位的加密密钥强度。其次,WEP 的加密密钥派生实现中的一个弱点使得攻击者有可能在捕获足够数量的数据包后,派生出受 WEP 保护的网络的 WEP 密钥——整个 WLAN 上所有客户端使用的加密密钥。
正在制定的 802.11i 协议将为 WLAN 提供完整、强大的安全框架。然而,即使在最终确定之后,该协议也需要一段时间才能在商业产品或免费软件包中广泛可用。
WPA 出现了。WPA 将 802.11i 的两个关键组件添加到 802.11b。首先,它添加了 802.1x 身份验证协议,该协议提供了灵活而强大的身份验证功能。其次,它添加了 TKIP 协议,该协议提供了为每个 WLAN 客户端分配唯一的 WEP 密钥,然后动态重新协商这些密钥的机制,从而有效地缓解了 WEP 的密钥派生漏洞。

图 1. WPA 拓扑
图 1 显示了 WPA 系统的各个部分如何交互。首先,我们有一个启用 WLAN 的客户端系统,其 WPA 客户端软件称为请求者。客户端/请求者连接到无线接入点 (AP),该接入点充当验证器,有效地代理请求者和后端身份验证服务器之间的身份验证。在图 1 中,此后端服务器被描绘为 RADIUS 服务器,但也可以使用 TACACS。
除了代理请求者和服务器之间的身份验证之外,AP/验证器还通过临时密钥完整性协议 (TKIP) 从身份验证服务器馈送数据以获取 WEP 会话密钥。然后,它将密钥推送回请求者。定期提示请求者重新验证自身,此时其 WEP 密钥将被新密钥替换。
身份验证 (RADIUS) 服务器是可选的。另一种选择是使用预共享密钥 (PSK) 模式,其中手动将每个 WPA 请求者系统唯一的共享密钥输入到 AP 中,并用于代替 RADIUS 进行身份验证。这比单独使用 WEP 要好,因为此共享密钥本身不用作加密密钥。相反,它用于播种 TKIP 事务,而 TKIP 事务又提供动态 WEP 密钥。
WPA 已经得到各种新的商业 WLAN 适配器和接入点的广泛支持。由于固件升级,它甚至被反向移植到一些较旧的 802.11b 产品。在 Linux 世界中,客户端侧由 wpa_supplicant (hostap.epitest.fi/wpa_supplicant) 支持,Linux 接入点由 hostapd (hostap.epitest.fi/hostapd) 支持,身份验证服务器侧由 FreeRADIUS (www.freeradius.org) 支持。
在我们缩小关注范围到构建支持 WPA 的 FreeRADIUS 服务器之前(这将在我的下一篇文章中主要介绍),让我们更仔细地看看 WPA 的身份验证和加密部分。
您跟上我的思路了吗?因为 WPA 实际上比图 1 所示的要复杂一些。回顾一下:在 WPA 中,您的客户端系统(请求者)必须先向网络验证自身身份,然后才能连接,此时它会获得定期更改的会话加密密钥。
之所以变得复杂,是因为用于 WPA 身份验证的 802.1x 协议允许使用多种方法来验证请求者身份,这是一件好事。通过使用模块化、可扩展的身份验证机制,可以降低 WPA——或 802.1x 或 802.11i——随着特定身份验证协议的兴衰而被淘汰的可能性。802.1x 的模块化和可扩展性由可扩展身份验证协议 (EAP) 提供,这非常恰当,EAP 存在许多变体。让我们讨论其中一些最流行的变体。
协议太多了!
我专门用一整篇文章来描述 WPA 的工作原理,而不是简单地深入研究如何为 WPA 配置 FreeRADIUS,原因之一是构成 WPA 的众多协议和子协议可能会令人困惑。如果您难以理清所有这些,也许图 2 可以提供帮助;它以分层形式显示了 WPA 的协议。

图 2. WPA 协议
EAP-MD5 使用基于简单 MD5 哈希的凭据交换。请求者向服务器提供用户名和 MD5 哈希密码,服务器将这些与自己的数据库进行比较。不幸的是,窃听者可以捕获 WPA 请求者传输的哈希,并对哈希运行离线字典攻击,以推断出用于创建哈希的密码。此外,虽然 EAP-MD5 将请求者验证到服务器,但它没有做任何事情来验证服务器到用户,例如,使用服务器证书,类似于 SSL。因此,EAP-MD5 是 WPA 环境中 802.1x 身份验证的糟糕选择。
EAP-TLS 使用 TLS 加密协议(SSL 的后代)作为身份验证的基础。一方面,这是一种强大的身份验证方法:它要求身份验证服务器及其用户都拥有数字证书,这是身份验证交易的基础。然而,向大量用户颁发数字证书和管理这些证书可能很复杂且耗时。例如,考虑撤销离开您组织的人员的证书所需的时间。此外,EAP-TLS 通常需要完整的公钥基础设施 (PKI) 环境,而很少有中小组织能够轻松支持。此外,当启动身份验证时,用户名以明文传输,这是一个小但值得注意的暴露。
PEAP(受保护的 EAP)主要由 Microsoft 开发,作为使用 TLS 加密来保护较弱但更简单的身份验证方法(例如 MD5 和 MS-CHAP)的一种手段。使用 PEAP,在交换任何凭据之前,在请求者和服务器之间建立加密通道。这与大多数 Web 应用程序使用 TLS 的方式一致。也就是说,它们使用 TLS 建立加密隧道,通过该隧道可以安全地执行简单的用户名-密码身份验证,而无需进一步使用 TLS 更安全但更复杂的客户端证书身份验证机制。PEAP 的主要缺点是其以 Microsoft 为中心。虽然一些免费软件工具确实支持 PEAP,但许多人认为 Microsoft 没有动力确保与其他供应商的 WPA 产品或平台的互操作性。
EAP-TTLS 本质上是 PEAP 的非 Microsoft 驱动的替代方案。它涉及建立加密的 TLS 隧道,通过该隧道进行基于 TLS 或其他(较弱)形式的身份验证。它相对于 PEAP 的主要优势是不太受一家大型公司的突发奇想的影响。它目前还支持稍微更广泛的身份验证方法,尽管 PEAP 旨在支持比迄今为止已实现的更多方法。由于缺乏 Microsoft 的实力,一些人认为 EAP-TTLS 没有 PEAP 那么大的势头。
其他 EAP 变体包括 EAP-SIM、Microsoft 的 EAP-MSCHAPv2 和 Cisco 的轻量级 EAP (LEAP)。
此时,您可能会想,“嘿,RADIUS 不是也是一种身份验证协议吗?它是如何融入其中的?” RADIUS 是您的验证器 (AP) 与您的身份验证服务器通信的协议。在 802.1x 和 WPA 的上下文中,您可以将 RADIUS 视为您的验证器将 EAP 消息转发到您的服务器的传输方式。换句话说,您的最终用户的请求者使用 EAP 与您的验证器通信;您的验证器在发送到您的服务器的 RADIUS 数据包中转发这些消息。
这里仍然有另一个协议在起作用,在请求者-验证器通信中扮演着类似的角色:EAPOL,或 LAN 上的 EAP。然而,此协议是完全透明的,因为它内置于请求者和验证器软件中,并且不需要自己的配置。因此,除非您编写 WPA 软件,否则您不需要知道或理解有关 EAPOL 的任何特定内容。
从请求者启动其与 AP 的连接尝试时起,您的 AP 仅允许 EAP 流量。只有在基于服务器响应成功完成身份验证后,您的请求者系统才会被授予 DHCP 租约并被允许完全连接到 WLAN。然而,成功身份验证的另一个结果是将 WEP 密钥分配给请求者。
如果请求者通过 EAP-TLS 或其他加密版本的 EAP 进行身份验证,则身份验证流量也会被加密。但无线 LAN 帧本身没有;在请求者系统和接入点之间的连接上启用 WEP 之前,这种情况不会发生。碰巧的是,从实现者的角度来看,这是 WPA 最简单的部分。成功身份验证后,服务器、验证器和请求者使用临时密钥完整性协议 (TKIP) 安全地协商和传输 WEP 密钥,以在验证器和请求者系统之间使用。此过程在很大程度上是透明的:您无需在服务器或请求者上配置任何内容即可使其工作。但是,大多数接入点(包括 Linux 上的 hostapd)都可以配置自定义设置,例如 WEP 重新密钥间隔。
关于 TKIP,另一件要记住的事情是,正如我之前提到的,服务器是可选的。如果您已将您的请求者和验证器配置为使用预共享密钥 (PSK) 模式,则 TKIP 仍然用于在您的请求者和接入点之间动态地密钥和重新密钥 WEP 加密。
这就是 WPA 的简要介绍。下次,我们将应用这些概念,使用 FreeRADIUS 创建基于 Linux 的 WPA 身份验证服务器。如果您迫不及待地想要开始,请查看在线资源以获取更多信息。注意安全!
本文的资源: /article/8070。
Mick Bauer,CISSP,是Linux Journal的安全编辑,也是明尼苏达州明尼阿波利斯的 IS 安全顾问。O'Reilly & Associates 最近发布了他的著作Linux 服务器安全第二版(2005 年 1 月)。Mick 还创作工业波尔卡音乐,但很少公开表演,这很有品味。