在Ubuntu上为WPA2设置RADIUS + LDAP


16

我正在为150个用户建立无线网络。简而言之,我正在寻找设置RADIUS服务器以针对LDAP验证WPA2的指南。在Ubuntu上。

  • 我有一个可用的LDAP,但是由于它尚未投入生产,因此可以很容易地适应该项目可能需要的任何更改。
  • 我一直在研究FreeRADIUS,但是任何RADIUS服务器都可以。
  • 我们为WiFi提供了一个单独的物理网络,因此在这方面不必过多担心安全性。
  • 我们的AP是HP的低端企业产品-它们似乎支持您能想到的一切。
  • 所有Ubuntu服务器,宝贝!

和坏消息:

  • 现在,我的知识不足,最终将接管我的工作,因此设置必须尽可能“平凡”。
  • 到目前为止,我们的设置仅基于Ubuntu存储库中的软件,但我们的LDAP管理Web应用程序和一些小的特殊脚本除外。因此,没有“获取软件包X,untar,。/ 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-后来用户被拒绝...


NT和LM密码是加密存储的,因此它们是否不同并不明显。您需要确定AP正在使用哪种密码,如果以明文方式通过密码,则是在其位置通过了MD5密码,或者...其他方式。RADIUS客户端可以使用任意数量的RADIUS属性进行密码或类似密码的身份验证。另外,尝试填充过期属性。
kmarsh

Answers:


12

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

简短的答案是:确保ldap从该authenticate部分中删除了该mschap模块,并确保该模块同时存在于authorizeauthenticate部分中。只需忽略“没有“已知好的”密码”即可。

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

ldap模块如何工作?

当您激活本节中的ldap模块时authorize,这是FreeRADIUS收到RADIUS数据包时的操作:

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

当您激活本节中的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,如果尝试通过访问点进行连接,它将失败。

您应该做的是ldap从该authenticate部分中取出模块,并确保mschapauthorizeauthenticate部分中都激活了该模块。将会发生的是,该mschap模块将使用NT-Password在此authorize阶段从LDAP服务器检索的属性来负责身份验证。

这是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模块UserPassword在此authorize阶段从LDAP服务器获取用户详细信息时找不到属性。在您的情况下,您具有NT-Password属性,这对于PEAP/MS-CHAP-v2身份验证而言是非常好的。

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


3

我将在这里尝试回答OpenSSL问题:简短的答案是使用FreeRADIUS 2.1.8或更高版本,其中包括OpenSSL。它可以在Ubuntu Lucid和Debian Lenny backports中使用(也可能最终在Ubuntu Karmic backports中使用)。

这是一个很长的答案:

不幸的是,OpenSSL许可证曾经(在某种程度上)与FreeRADIUS许可证不兼容。因此,Ubuntu人们选择提供与OpenSSL链接的FreeRADIUS二进制文件。如果需要EAP / TLS,PEAP或TTLS,必须获取源代码并使用--with-openssl选项进行编译(如您使用的配方所述)。

但是最近,许可问题已得到解决。可以使用OpenSSL编译和分发FreeRADIUS 2.1.8或更高版本。坏消息是,最新的稳定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 backport包含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.comThawte签名的证书,那么他可以轻松进行中间人攻击,而不会在用户计算机上显示任何警告!

解决方案在于用户计算机的网络配置中,以明确指定仅“ www.my-web-site.com”是受信任的。这仅需一分钟,但是除非您给他们一个清晰的过程并确保每个用户都遵循它,否则大多数用户都不知道在哪里进行配置。我仍然使用“有效”证书,但是坦率地说,看到Windows和MacOSX都共享此“错误”是令人失望的:信任证书颁发机构而不是特定证书。哎哟...


1

根据错误报告,对FreeRADIUS的简单重建应该可以解决OpenSSH支持问题。它只需要做一次。

我不确定设置的简易性。通常,设置越复杂,越详细,则管理起来就越容易,因为该设置涵盖了所有基础。您是说配置也必须轻松地放在其他服务器上吗?您要设置多少个无线局域网?

配置后,“管理”应仅限于LDAP用户添加,删除和修改。使用ldapmodify(等)编写脚本或找到不错的LDAP图形前端并使用屏幕快照记录过程,这些操作应该足够容易。


首先,您必须在每次提供更新时重新编译软件包(此处是Gentoo-folk的羡慕对象)。在其他方面,我完全同意-如果设置涵盖所有基础,那么我的继任者将需要做的工作更少(需要进行逆向工程的黑客也更少)。
2009年


-1

您可以使用FreeRADIUS2(带有OpenSSL)+ EAP-TLS + WPA2-Enterprice。这是令人烦恼的HOW-TO。Windows XP SP3对其具有本机支持,以及Windows 7,Android 2.3,iPhone,Symbian。但是我不知道在这种方案中与SLDAP的兼容性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.