>我有一个工作的LDAP,但由于它不在生产中使用,它可以很容易地适应这个项目可能需要的任何变化.
>我一直在关注FreeRADIUS,但任何RADIUS服务器都可以.
>我们为WiFi提供了一个单独的物理网络,所以对这方面的安全性没有太多担忧.
>我们的AP是惠普的低端企业产品 – 它们似乎支持您能想到的任何东西.
>所有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(bug 183840),这使得所有安全的EAP类型都无用.游民.
但对于任何感兴趣的人都有一些有用的文
> 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有一个非常好的食谱(请参阅帖子的评论以获取更新说明).
我从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 – 这给出了一个大致为:
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 ...
这里是简短的回答:确保从authenticate部分删除ldap模块,并确保mscp模块存在于authorize和authenticate部分.并且忽略’No’已知良好的“密码”.
现在这是(非常)长的答案.
ldap模块如何工作?
在授权部分激活ldap模块时,这就是FreeRADIUS收到RADIUS数据包时的操作:
>它尝试绑定到LDAP服务器(作为来宾用户,或者如果在ldap.conf中配置了一个,则使用给定的身份)
>它使用基本DN(在ldap.conf中配置)下的过滤器搜索用户的DN条目.
>它获取在ldap.attrmap中配置的所有LDAP属性,并将它们转换为RADIUS属性.
>它将这些属性添加到RADIUS数据包的检查项列表中.
当您在authenticate部分激活ldap模块时,这就是FreeRADIUS所做的事情:
>它尝试以用户身份绑定到LDAP服务器.
>如果它可以绑定,那么它是一个成功的身份验证,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,否则您可以安全地从authenticate部分删除ldap模块,实际上,您应该:绑定,因为用户将无法工作.
如果您在使用radtest时测试工作,则可能意味着在authenticate部分激活了ldap模块:它将尝试以用户身份绑定,并且由于radtest使用PAP身份验证,因此它将成功.但是,如果您尝试通过接入点进行连接,则会失败,因为您正在使用PEAP / MS-CHAP-v2.
您应该做的是从authenticate部分删除ldap模块,并确保在authorize和authenticate部分中激活mschap模块.将要发生的是mschap模块将使用在授权阶段从LDAP服务器检索的NT-Password属性来处理身份验证.
以下是您的网站启用/默认文件应该是什么样的(没有所有注释):
... authorize { preprocess suffix eap { ok = return } expiration logintime } authenticate { eap } ...
以下是您的网站启用/内部隧道文件应如下所示:
... authorize { mschap suffix update control { Proxy-To-Realm := LOCAL } eap { ok = return } ldap expiration logintime } authenticate { Auth-Type MS-CHAP { mschap } eap } ...
那么“不”已知良好的“密码”警告怎么样?
好吧,你可以放心地忽略它.它只是因为ldap模块在授权阶段从LDAP服务器获取用户详细信息时找不到UserPassword属性.在您的情况下,您具有NT-Password属性,这对于PEAP / MS-CHAP-v2身份验证来说非常好.
我想这个警告是存在的,因为当设计ldap模块时,PEAP / MS-CHAP-v2还不存在,所以当时唯一有意义的就是从LDAP服务器中检索UserPassword属性,按顺序使用PAP,CHAP,EAP / MD5或此类身份验证方法.