LAWRENCERoam: 个人组织间的 Wi-Fi 凭据共享 (1)

imbushuo

Please mind the gap

16人赞了该文章

在国外或者一些国内高校读书的同学应该对 eduroam (World Wide Education Roaming for Research & Education) 很熟悉。对于不熟悉这个东西的读者,我们就简单介绍一下:这个服务可以让你在 A 学术机构里使用 B 学术机构的网络凭据来访问网络。比如你是 University of Washington 的学生,你想到 Stanford University 上网,你就可以用 UW 的 NetID 来安全登录 Stanford University 的网络。和蜂窝网络的漫游不同,它不提供 Traffic 的漫游。还是以上面那个例子为例,使用 UW NetID 在 Stanford University 上网,出口照样是 Stanford University 的。或者说,在 SYSU 使用 Skidmore College 的网络 ID 上网,你还是得需要一个梯子来访问 Google。

我们的想法很简单 —— 在个人组织(比如以寝室或者家庭为单位)间,比如在朋友之间安全地共享网络。举个例子,A 同学拜访 L 同学的寝室,他直接使用 A 同学在自己寝室的网络凭据就可以访问 L 同学的寝室网络,而不需要向 L 同学询问凭据或者使用诸如 Wi-Fi 万能钥匙这样的软件。或者说有好几个人在 K 同学家里开 Party —— 他们可以使用他们在自己家使用的网络凭据登录 K 同学家的网络,并可以根据 AP 和路由器的设置实现诸如按用户账户为单位的网络隔离等高级安全功能。

于是我们想出了这样一个叫 LAWRENCERoam 的实验性计划 —— 在具备符合条件的设施的朋友家里使用独立网络凭据来进行网络访问漫游。为什么是 Lawrence?因为一开始提出这个想法的群组所有者网名叫 Lawrence。

前置知识

在开始实施我们的部署之前,我们需要了解一些前置知识。现在常用的 Wi-Fi WPA2 加密标准为 IEEE 802.11i。Wi-Fi 联盟称它们的可互操作完整 802.11i 实现为 RSN (Robust Security Network),而平时我们所使用的那种 WPA2 认证也就是 RSNA-PSK,其密钥也被称之为 PSK。而学校、大型公司和之前我们提到的 eduroam 使用的是 RSNA。其主要区别是 RSNA-PSK 使用单一共享密钥,而 RSNA 在 EAP 认证过程中,由 RADIUS 服务器签发密钥,实现每个设备使用独立密钥联网的功能。

为了完整实现这样的一个网络结构,我们还需要至少一个目录服务器和至少一个 RADIUS 服务器。在本例中,我们将使用 Active Directory 和 Windows Server Network Policy Services 来完成这一部分的操作。FreeRADIUS 和其他 LDAP 方案也是可行的,但是细节上有所不同。

安全考虑

这些内容是可选项,但是会提高你的网络安全性和健壮性

初步实施:服务器端

在本文中,我将对家庭网络进行改造,以实现 WPA2 Enterprise (RSNA) 认证,并为后续启用凭据共享准备基础。我所使用的 AP 为 Routerboard hAP ac,运行 RouterOS 操作系统,并已经准备好了 Active Directory 域和私有网络,并在家庭内有设施已经和私有网络间建立了站到站 VPN 连接。

你需要至少两个 Active Directory 服务 —— Active Directory Domain Services (俗称域控)和 Active Directory Certificate Services (俗称企业 PKI 设施)。前者用于提供目录服务,后者用于提供内部 PKI 设施。你还需要在一台加入这个 AD 域的机器上安装 NPS (Network Policy Server,也就是以前的 IAS)。理论上你可以把这些服务装在一台机器里,但是出于稳定性和可维护性的考虑,我不建议你这么做。

配置 Active Directory 域并不在本文的讨论范围之内,请参考微软 TechNet 和互联网上的其他文章。

在 AD CS 服务中,你需要启用 RAS and IAS Server 证书模板,并为 RADIUS 服务器签发这个模板的证书。通过推送组策略,我将 AD CS 的根证书应用到了所有加入域的本地计算机中,但这一步其实是可选的(其中之一是我现在写文章的平板)。然后我在 Active Directory 里新建了一个用户组 *Wireless Users*,并将我的账户添加到了这个组中,稍后我们会用到。

启用 NPS 服务后,你需要将其注册到 Active Directory 中。然后需要添加一个 RADIUS 设备。填写你的 RADIUS 客户端(在本例子中,也就是这个 AP)的 IP 地址,并填写 RADIUS 预共享密钥。RADIUS 客户端设备选择为 RADIUS 标准设备,取消勾选设备支持健康状态检查。

然后我们会使用向导来进行 RADIUS 策略的配置。


在向导中,我们选择安全 802.1X 无线设备,并添加刚刚添加的 RADIUS 客户端。在 EAP 类型里,我们暂时选择 *Microsoft: Protected EAP (PEAP)*(大部分学校也使用的此种类型),并添加 *Wireless Users *用户组,完成向导配置。你也可能需要在 Accounting 里配置使用本地文件或者数据库记录设备上线下线等信息。我配置了数据库首选,文本文件作为 failover 的记账模式。

备注:如果所有记账模式都不可用,NPS 会丢弃所有 RADIUS 请求(反映为请求超时)。因此,如果你的所有 RADIUS 请求均超时,你应该首先检查相关的系统日志。

*更新:不要勾选任何 **Less-secure Authentication Methods *,这将导致在 iOS 等设备上登录大概率失败。

初步实施:接入端

登录到 RouterOS 终端(我用的 Winbox),添加一个 RADIUS 客户端,类似如下。勾选服务 *wireless*。


然后添加一个 Wireless Security Profile。使用 WPA2 EAP 模式,取消 PSK,在 RADIUS 选项卡里勾选 *EAP Accounting,*EAP 模式选择 *Passthrough*。

然后在 Interface 选项里使用这个 Security Profile。关闭 WPS —— 因为 WPA2 Enterprise 不支持这个。

客户端登录

嗯……然后你就可以用了

**
**

展望

这些内容将会在系列文章中所提及。

发布于2017-07-15 11:35
编辑于2017-07-16 03:17

文章被以下专栏收录