DerRauber

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

前一段时间,有个朋友过来问我关于802.1x的认证问题。具体的问题是这样的:

在802.1x的认证过程中,使用Free Radius加LDAP实现认证服务器,使用LDAP的原因是对方要实现集中管理帐户,而为了保密原因,LDAP中存储的全部是MD5加密过后的密码,而且LDAP不能做任何修改。

现在可供选择的认证方式有2种:pap和mschap。pap认证方式中,freeradius收到客户端发来的认证密码为明文,而mschap则为由NTPASSWORD(MD4加密)计算而来的challenge。而由于MD4和MD5均为不可逆的加密方式,有MD5密文无法得到明文,因此由LDAP中的MD5密文是无法计算出相应的chanllenge与客户端进行对比,所以mschap首先被否决了。

现在只剩下pap认证方式可供选择,而在freeradius的ldap配置文件中,明确提到LDAP认证只能用于明文密码:

#  However, LDAP can be used for authentication ONLY when the
#  Access-Request packet contains a clear-text User-Password
#  attribute.  LDAP authentication will NOT work for any other
#  authentication method.
#
#  This means that LDAP servers don't understand EAP.  If you
#  force "Auth-Type = LDAP", and then send the server a
#  request containing EAP authentication, then authentication
#  WILL NOT WORK.

因此只能修改freeradius中的ldap模块,将收到的明文密码经过MD5加密之后再与LDAP进行认证,返回认证结果。该认证模块位于freeradius的源码目录下src/modules/rlm_ldap/rlm_ldap.c中,将password进行md5计算后再进行对比。经测试,达到了预想的效果。

 

后记:但是该方式只是实现了简单的MD5密码的存储,在PAP认证过程中,依然传输的是明文密码,其安全性并没有本质改变,因此如果条件允许的话(更改LDAP),还是应该采用MSCHAP的方式进行认证以提高系统的安全性。

posted on 2012-05-20 16:49  hotzenplotz  阅读(3129)  评论(0编辑  收藏  举报