在 Ubuntu 上为 WPA2 设置 RADIUS + LDAP

在 Ubuntu 上为 WPA2 设置 RADIUS + LDAP

我正在为大约 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 类型都变得毫无用处。真倒霉。

但对于任何感兴趣的人来说,都有一些有用的文档:

更新2009-08-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- 并且用户后来被拒绝......

答案1

我将尝试在这里回答 LDAP 问题。

简短的回答是:确保ldap模块已从部分中删除authenticate,并确保模块mschap同时存在于authorizeauthenticate部分中。忽略“无“已知良好”密码”。

现在,这是(非常)长的答案。

ldap 模块如何工作?

ldap当您在本节中激活该模块时authorize,当 FreeRADIUS 接收到 RADIUS 数据包时,它会执行以下任务:

  1. 它会尝试绑定到 LDAP 服务器(作为来宾用户,或者使用给定的身份(如果已在 中配置ldap.conf))
  2. 它使用基础 DN(在 中配置)下的过滤器搜索用户的 DN 条目ldap.conf
  3. 它从配置的 LDAP 属性中获取所有可以获得的 LDAP 属性ldap.attrmap,并将它们转换为 RADIUS 属性。
  4. 它将这些属性添加到 RADIUS 数据包的检查项列表中。

当您在部分ldap中激活模块时authenticate,FreeRADIUS 会执行以下操作:

  1. 它尝试绑定到 LDAP 服务器作为用户
  2. 如果可以绑定,那么就是认证成功,并且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。

您应该做的是ldapauthenticate部分中删除模块,并确保mschapauthorizeauthenticate部分中激活模块。将发生的是,模块将使用在阶段从 LDAP 服务器检索到的属性来mschap处理身份验证。NT-Passwordauthorize

您的文件应如下所示sites-enabled/default(不包含所有注释):

    ...
    authorize {
        preprocess
        suffix
        eap {
            ok = return
        }
        expiration
        logintime
    }
    authenticate {
        eap
    }
    ...

您的sites-enabled/inner-tunnel文件看起来应该是这样的:

    ...
    authorize {
        mschap
        suffix
        update control {
               Proxy-To-Realm := LOCAL
        }
        eap {
            ok = return
        }
        ldap
        expiration
        logintime
    }
    authenticate {
        Auth-Type MS-CHAP {
            mschap
        }
        eap
    }
    ...

那么‘没有已知的良好密码’警告怎么办?

好吧,您可以放心地忽略它。它之所以存在,是因为模块在此阶段从 LDAP 服务器获取用户详细信息时ldap找不到属性。就您而言,您有该属性,这对于身份验证来说完全没问题。UserPasswordauthorizeNT-PasswordPEAP/MS-CHAP-v2

我猜测存在这个警告是因为在ldap设计模块时PEAP/MS-CHAP-v2该模块还不存在,所以当时唯一似乎有意义的事情就是从 LDAP 服务器检索 UserPassword 属性,以便使用 PAP、CHAP、EAP/MD5 或类似的身份验证方法。

答案2

我将尝试在这里回答 OpenSSL 问题:简短的回答是使用 FreeRADIUS 2.1.8 或更高版本,其中包含 OpenSSL。它在 Ubuntu Lucid 和 Debian Lenny 反向移植版中可用(并且可能也会在 Ubuntu Karmic 反向移植版中可用)。

以下是详细答案:

不幸的是,OpenSSL 许可证曾经与 FreeRADIUS 许可证(有点)不兼容。因此,Ubuntu 人员选择提供 FreeRADIUS 二进制文件不是与 OpenSSL 链接。如果您想要 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 反向移植包括 FreeRADIUS 2.1.8。因此,如果您想要非常稳定、易于安装和维护的东西,我建议您部署一个带有 Debian Lenny 的服务器,并安装反向移植的 FreeRADIUS 包(它还使您能够免费编写 python 模块,而无需使用所有实验模块重新编译)。

我获得了证书 http://CACert.org(如果可能的话你应该获得“真正的”证书)

“真实”证书(相对于自签名证书)有一个“陷阱”。

我使用了 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 都存在这个“错误”令人失望:信任证书颁发机构而不是特定证书。哎哟……

答案3

根据错误报告,只需对 FreeRADIUS 进行简单重建即可解决 OpenSSH 支持问题。只需执行一次即可。

我不确定管理的简易性与设置有什么关系。通常,设置越复杂、越详细,管理就越容易,因为设置涵盖了所有基础。你的意思是配置也必须轻松地转移到其他服务器上吗?你要设置多少个无线局域网?

配置完成后,管理应仅限于添加、删除和修改 LDAP 用户。这些操作应该很容易,可以使用 ldapmodify(等)编写脚本,也可以找到合适的 LDAP 图形前端并用屏幕截图记录这些过程。

答案4

您可以使用 FreeRADIUS2(带 OpenSSL)+ EAP-TLS + WPA2-Enterprice。以下是详细的操作方法。Windows XP SP3 以及 Windows 7、Android 2.3、iPhone、Symbian 都原生支持它。但我不知道这种方案与 SLDAP 的兼容性如何。

相关内容