在Ubuntu上为WPA2设置RADIUS + LDAP

我正在为〜150个用户build立一个无线networking。 总之,我正在寻找一个指南来设置RADIUS服务器来validation对LDAP的WPA2。 在Ubuntu上。

  • 我有一个工作的LDAP,但由于它不是在生产中使用,它可以很容易地适应这个项目可能需要的任何变化。
  • 我一直在看FreeRADIUS,但任何RADIUS服务器都可以。
  • 我们为WiFi提供了一个单独的物理networking,因此对这个方面的安全性没有太多的担忧。
  • 我们的AP是惠普的低端企业产品 – 他们似乎支持任何您能想到的事情。
  • 所有的Ubuntu服务器,宝贝!

而坏消息是:

  • 我现在有一个比我更less知识的人最终会接pipe行政,所以设置必须尽可能“微不足道”。
  • 到目前为止,我们的设置仅基于Ubuntu存储库中的软件,除了我们的LDAPpipe理Web应用程序和一些小的特殊脚本。 因此,如果可以避免的话,不要“获取软件包X,解压缩./configure”。

更新2009-08-18:

虽然我find了一些有用的资源,但还有一个严重的障碍:

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. 

基本上FreeRADIUS的Ubuntu版本不支持SSL( 错误183840 ),这使得所有的安全EAPtypes无用。 游民。

但是对于任何感兴趣的人来说,

  • http://vuksan.com/linux/dot1x/802-1x-LDAP.html
  • http://tldp.org/HOWTO/html_single/8021X-HOWTO/#confradius

更新2009-08-19:

我昨天晚上编写了我自己的FreeRADIUS软件包 – 在http://www.linuxinsight.com/building-debian-freeradius-package-with-eap-tls-ttls-peap-support.html有一个非常好的配方(参见更新说明的post的评论)。

我从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中创build了一个testing用户,密码为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问题。

下面是简短的回答:确保从authenticate部分中删除ldap模块,并确保mschap模块同时存在于authorize部分和authenticate部分中。 只是忽略了“不”已知的好“密码”。

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

ldap模块如何工作?

authorize部分激活ldap模块时,这是FreeRADIUS收到RADIUS数据包时的作用:

  1. 它试图绑定到LDAP服务器(作为访客用户,或者使用给定的身份,如果在ldap.confconfiguration的话)
  2. 它使用基本DN下的filter(在ldap.confconfiguration)search用户的DN条目。
  3. 它将获取在ldap.attrmapconfiguration的所有LDAP属性,并将它们转换为RADIUS属性。
  4. 它将这些属性添加到R​​ADIUS数据包的检查项目列表中。

当你在authenticate部分激活ldap模块时,这是FreeRADIUS所做的:

  1. 它试图以用户身份绑定到LDAP服务器。
  2. 如果可以绑定,则authentication成功, Radius-Accept报文将被发送回客户端,否则会导致Radius-Reject报文失败。

那么如何configurationFreeRADIUS使PEAP / MS-CHAP-v2能够与LDAP协同工作呢?

这里重要的一点是,如果FreeRADIUS服务器可以从它收到的RADIUS数据包中检索用户的明文密码,那么只有在用户绑定情况下才能工作。 只有在使用PAP或TTLS / PAPauthentication方法(也可能是EAP / GTC)的情况下。 只有TTLS / PAP方法非常安全,并且在Windows中默认情况下不可用。 如果您希望用户使用TTLS / PAP进行连接,则需要安装一个TTLS请求者软件,该软件很less是一个选项。 在大多数情况下,当部署WiFi与WPA企业安全,PEAP / MS-CHAP-V2是唯一合理的select。

因此,底线是:除非您使用PAP或TTLS / PAP,否则可以安全地从authenticate部分删除ldap模块,实际上,您应该:绑定,因为用户将无法工作。

如果你的testing在你使用radtest ,这可能意味着在authenticate部分激活ldap模块:它将尝试与用户绑定,并且由于radtest使用PAPauthentication,所以它会成功。 但是,如果您尝试通过接入点进行连接,则会失败,因为您正在使用PEAP / MS-CHAP-v2。

你应该做的是从authenticate部分中删除ldap模块,并确保在authorizeauthenticate部分都激活mschap模块。 会发生什么情况是mschap模块将使用在authorize阶段从LDAP服务器检索到的NT-Password属性来进行身份validation。

以下是您的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 } ... 

那么“不”已知的“密码”警告呢?

那么,你可以放心地忽略它。 这只是因为在authorize阶段从LDAP服务器获取用户详细信息时, ldap模块找不到UserPassword属性。 在你的情况下,你有NT-Password属性,这对于PEAP/MS-CHAP-v2authentication来说非常好。

我猜这个警告是存在的,因为当deviseldap模块时, PEAP/MS-CHAP-v2没有存在,所以当时似乎唯一有意义的事情是从LDAP服务器中检索UserPassword属性使用PAP,CHAP,EAP / MD5等authentication方式。

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

这是一个长长的答案:

不幸的是,OpenSSL许可曾经(有点)与FreeRADIUS许可不兼容。 因此,Ubuntu的人们select了提供一个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。 所以,如果你想要一些非常稳定的东西,并且易于安装和维护,我build议你用Debian Lenny部署一个服务器,然后安装反向移植的FreeRADIUS软件包(它也使你可以免费编写python模块,而不必重新编译所有的实验模块)。

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

有一个“gotcha”与“真正的”证书(而不是自签证书)。

我使用了Thawte签署的一个。 它工作正常,用户看到一个漂亮的“有效”的证书,如www.my-web-site.com当用户接受证书时,他的电脑确实知道所有由相同证书颁发机构颁发的证书都应该被信任 (我用Windows Vista和MacOSX Snow Leopardtesting过)! 所以就我而言,如果一个黑客拥有Thawte签名的www.some-other-web-site.com证书,那么他可以很容易地运行一个中间人攻击,没有任何警告被显示在用户的电脑上!

对此的解决scheme在于用户的计算机的networkingconfiguration深处,以便具体指定只有“www.my-web-site.com”应该是可信的。 它只需要一分钟,但大多数用户不知道在哪里configuration,除非你给他们一个清晰的程序,并确保每个用户都遵循。 我仍然使用“有效”的证书,但坦率地说,看到Windows和MacOSX共享这个“错误”:相信证书颁发机构而不是特定的证书是令人失望的。 哎哟…

根据bug报告,FreeRADIUS的一个简单的重build应该修复OpenSSH支持问题。 它只需要做一次。

我不知道什么是安装pipe理的简单方法。 通常情况下,设置越多,设置越详细,pipe理越容易,因为设置覆盖了所有的基础。 你的意思是configuration必须简单地放在其他服务器上吗? 你有多less个无线局域网?

configuration完成后,pipe理员应限制为LDAP用户添加,删除和修改。 这些应该很容易,可以用ldapmodify(et al)编写脚本,或者find一个体面的LDAPgraphics前端,并用截图logging这些过程。

我遇到了同样的问题。 我不得不下载RADIUS资源并自己编译它们。

您可以使用FreeRADIUS2(使用OpenSSL)+ EAP-TLS + WPA2-Enterprice。 这里是一个令人陶醉的如何 。 Windows XP SP3除了Windows 7,Android 2.3,iPhone,Symbian之外,还有本机支持。 但是我不知道在这样的scheme中与SLDAP的兼容性。