我正在为约 150 个用户建立一个无线网络。简而言之,我正在寻找设置 RADIUS 服务器以针对 LDAP 对 WPA2 进行身份验证的指南。在 Ubuntu 上。
- 我有一个可用的 LDAP,但由于它没有用于生产,它可以很容易地适应这个项目可能需要的任何更改。
- 我一直在研究 FreeRADIUS,但任何 RADIUS 服务器都可以。
- 我们为 WiFi 提供了一个单独的物理网络,因此无需过多担心这方面的安全问题。
- 我们的 AP 是 HP 的低端企业产品——它们似乎支持您能想到的任何东西。
- 所有的 Ubuntu 服务器,宝贝!
还有坏消息:
- 我现在的知识比我少的人最终将接管管理,因此设置必须尽可能“简单”。
- 到目前为止,我们的设置仅基于 Ubuntu 存储库中的软件,除了我们的 LDAP 管理 Web 应用程序和一些小的特殊脚本。因此,如果可以避免的话,就没有“获取包 X、解压缩、./configure”的东西。
更新 2009-08-18:
虽然我找到了一些有用的资源,但有一个严重的障碍:
Ignoring EAP-Type/tls because we do not have OpenSSL support.
Ignoring EAP-Type/ttls because we do not have OpenSSL support.
Ignoring EAP-Type/peap because we do not have OpenSSL support.
基本上,Ubuntu 版本的 FreeRADIUS 不支持 SSL(错误 183840),这使得所有安全 EAP 类型都无用。真可惜。
但对任何感兴趣的人都有一些有用的文档:
- http://vuksan.com/linux/dot1x/802-1x-LDAP.html
- http://tldp.org/HOWTO/html_single/8021X-HOWTO/#confradius
2009 年 8 月 19 日更新:
我昨天晚上最终编译了我自己的 FreeRADIUS 包 - 在http://www.linuxinsight.com/building-debian-freeradius-package-with-eap-tls-ttls-peap-support.html上有一个非常好的食谱(参见对帖子的评论以获取更新的说明)。
我从http://CACert.org获得了证书(如果可能,您应该获得“真正的”证书)
然后我按照http://vuksan.com/linux/dot1x/802-1x-LDAP.html上的说明进行操作。此链接指向http://tldp.org/HOWTO/html_single/8021X-HOWTO/,如果您想了解 WiFi 安全性的工作原理,这是非常值得一读的。
更新 2009-08-27:
遵循上述指南后,我设法让 FreeRADIUS 与 LDAP 对话:
我用密码在 LDAP 中创建了一个测试用户mr2Yx36M
- 这提供了一个 LDAP 条目大致为:
uid: testuser
sambaLMPassword: CF3D6F8A92967E0FE72C57EF50F76A05
sambaNTPassword: DA44187ECA97B7C14A22F29F52BEBD90
userPassword: {SSHA}Z0SwaKO5tuGxgxtceRDjiDGFy6bRL6ja
使用时radtest
,我可以正常连接:
> radtest testuser "mr2Yx36N" sbhr.dk 0 radius-private-password
Sending Access-Request of id 215 to 130.225.235.6 port 1812
User-Name = "msiebuhr"
User-Password = "mr2Yx36N"
NAS-IP-Address = 127.0.1.1
NAS-Port = 0
rad_recv: Access-Accept packet from host 130.225.235.6 port 1812, id=215, length=20
>
但是当我尝试通过 AP 时,它并没有运行 - 虽然它确实确认它计算出了 NT 和 LM 密码:
...
rlm_ldap: sambaNTPassword -> NT-Password == 0x4441343431383745434139374237433134413232463239463532424542443930
rlm_ldap: sambaLMPassword -> LM-Password == 0x4346334436463841393239363745304645373243353745463530463736413035
[ldap] looking for reply items in directory...
WARNING: No "known good" password was found in LDAP. Are you sure that the user is configured correctly?
[ldap] user testuser authorized to use remote access
rlm_ldap: ldap_release_conn: Release Id: 0
++[ldap] returns ok
++[expiration] returns noop
++[logintime] returns noop
[pap] Normalizing NT-Password from hex encoding
[pap] Normalizing LM-Password from hex encoding
...
很明显,NT 和 LM 密码与上述不同,但消息[ldap] user testuser authorized to use remote access
- 用户后来被拒绝......
我将尝试在这里回答 LDAP 问题。
这是简短的回答:确保
ldap
模块已从该authenticate
部分中删除,并确保该mschap
模块同时出现在该部分authorize
和该authenticate
部分中。并且只需忽略“没有“已知良好”密码”。现在这是(非常)长的答案。
ldap 模块是如何工作的?
当您激活该部分中的
ldap
模块时authorize
,当 FreeRADIUS 接收到 RADIUS 数据包时,它会执行以下操作:ldap.conf
)ldap.conf
)。ldap.attrmap
,并将它们转换为 RADIUS 属性。当您激活该部分中的
ldap
模块时authenticate
,FreeRADIUS 会执行以下操作:Radius-Accept
数据包发送回客户端,否则为失败,导致Radius-Reject
数据包。那么如何配置 FreeRADIUS 以使 PEAP/MS-CHAP-v2 与 LDAP 一起使用?
这里重要的一点是,只有当 FreeRADIUS 服务器可以从接收到的 RADIUS 数据包中检索用户的明文密码时,作为用户的绑定才会起作用。只有在使用 PAP 或 TTLS/PAP 身份验证方法(也可能是 EAP/GTC)时才会出现这种情况。只有 TTLS/PAP 方法是真正安全的,并且在 Windows 中默认不可用。如果您希望您的用户与 TTLS/PAP 连接,您需要让他们安装 TTLS 请求者软件,这很少是一个选项。大多数时候,使用 WPA Enterprise 安全部署 WiFi 时,PEAP/MS-CHAP-v2 是唯一合理的选择。
所以底线是:除非您使用 PAP 或 TTLS/PAP,否则您可以安全地
ldap
从该部分中删除模块authenticate
,实际上,您应该:绑定用户将不起作用。如果你的测试在你使用的时候有效
radtest
,那很可能是该ldap
模块在该部分被激活authenticate
:它会尝试以用户身份绑定,并且由于radtest使用了PAP认证,所以它会成功。但如果您尝试通过接入点进行连接,它将失败,因为您使用的是 PEAP/MS-CHAP-v2。您应该做的是
ldap
从该部分中删除该模块authenticate
,并确保在该部分和该部分mschap
中都激活该模块。将会发生的是,模块将使用在该阶段从 LDAP 服务器检索到的属性来处理身份验证。authorize
authenticate
mschap
NT-Password
authorize
这是您的
sites-enabled/default
文件应该是什么样子(没有所有评论):这是您的
sites-enabled/inner-tunnel
文件的外观:'没有“已知的好”密码'警告呢?
好吧,您可以放心地忽略它。它之所以存在,是因为模块在该阶段从 LDAP 服务器获取用户详细信息时
ldap
找不到属性。在您的情况下,您拥有该属性,这对于身份验证来说非常好。UserPassword
authorize
NT-Password
PEAP/MS-CHAP-v2
我猜这个警告是存在的,因为在
ldap
设计模块时,模块PEAP/MS-CHAP-v2
还不存在,所以当时唯一有意义的事情是从 LDAP 服务器检索 UserPassword 属性,以便使用 PAP、CHAP、EAP/ MD5之类的认证方式。我将尝试在这里回答 OpenSSL 问题:简短的回答是使用 FreeRADIUS 2.1.8 或更高版本,其中包括 OpenSSL。它在 Ubuntu Lucid 和 Debian Lenny 反向移植中可用(并且可能最终也会出现在 Ubuntu Karmic 反向移植中)。
这是长答案:
不幸的是,OpenSSL 许可证曾经(在某种程度上)与 FreeRADIUS 许可证不兼容。因此,Ubuntu 人选择提供一个不与 OpenSSL 链接的 FreeRADIUS 二进制文件。如果您想要 EAP/TLS、PEAP 或 TTLS,您必须获取源代码并使用
--with-openssl
选项编译它们(正如您使用的配方所解释的那样)。但最近,许可问题已得到修复。FreeRADIUS 2.1.8 或更高版本可以使用 OpenSSL 编译和分发。坏消息是最新的稳定 Ubuntu 发行版 (Karmic Koala) 仅包含 FreeRADIUS 2.1.0,没有 OpenSSL(Debian 也是如此,因为 Lenny 仅包含 FreeRADIUS 2.0.4)。我检查了 Karmic-backports,但似乎 FreeRADIUS 2.1.8 或更高版本还没有上传到那里(但它可能很快就会添加,在这里查看)。所以现在,您必须切换到 Ubuntu Lucid(包括 FreeRADIUS 2.1.8)或坚持编译。对于 Debian 用户来说,情况要好一些:Lenny backports 包括 FreeRADIUS 2.1.8。因此,如果您想要一些非常稳定且易于安装和维护的东西,我建议您使用 Debian Lenny 部署服务器,并安装向后移植的 FreeRADIUS 软件包(它还使您可以免费编写 python 模块,而无需重新编译)所有实验模块)。
有一个带有“真实”证书的“陷阱”(与自签名证书相反)。
我用了一个由 Thawte 签名的。它工作正常,用户会看到一个漂亮的“有效”证书,名为
www.my-web-site.com
. 当用户接受证书时,他的计算机实际上明白应该信任由同一证书颁发机构颁发的所有证书(我用 Windows Vista 和 MacOSX Snow Leopard 进行了测试)!所以在我的例子中,如果黑客拥有一个证书,比如说,www.some-other-web-site.com
也由 Thawte 签名,那么他可以轻松地运行中间人攻击,而不会在用户的计算机上显示任何警告!对此的解决方案在于用户计算机的网络配置,以便明确指定只有“www.my-web-site.com”应该被信任。只需要一分钟,但大多数用户不知道在哪里配置它,除非你给他们一个清晰的过程并确保每个用户都遵循它。我仍然使用“有效”证书,但坦率地说,看到 Windows 和 MacOSX 共享这个“错误”令人失望:信任证书颁发机构而不是特定证书。哎哟...
根据错误报告,FreeRADIUS 的简单重建应该可以解决 OpenSSH 支持问题。它只需要执行一次。
我不确定易于管理与设置有什么关系。通常,设置越复杂、越详细,管理起来就越容易,因为设置涵盖了所有基础。你的意思是配置也必须很容易地放在其他服务器上吗?您设置了多少个无线局域网?
配置后,管理应仅限于 LDAP 用户添加、删除和修改。这些应该很容易使用 ldapmodify (等)编写脚本,或者找到一个不错的 LDAP 图形前端并用屏幕截图记录过程。
我遇到了同样的问题。我必须下载 RADIUS 源并自己编译它们。
您可以使用 FreeRADIUS2(带有 OpenSSL)+ EAP-TLS + WPA2-Enterprice。这是非常详细的 HOW-TO。Windows XP SP3 对它以及 Windows 7、Android 2.3、iPhone、Symbian 都有本机支持。但我不知道在这种方案中与 SLDAP 的兼容性。