• 在Free Radius的PAP认证过程中使用MD5密码


    前一段时间,有个朋友过来问我关于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的方式进行认证以提高系统的安全性。

  • 相关阅读:
    mysql数据库(1)
    通过全局异常处理机制实现接口参数校验返回指定返回类型
    http接口安全校验
    java 锁机制介绍
    通过反射获取类的所有属性值拼接成字符串工具类
    Mybatis中出现java.sql.SQLException: 无效的列类型: 1111
    判断两个Long相等
    jwt工具类
    mybatis #{}和${}的区别是什么
    报错解决NoSuchMethod。。。
  • 原文地址:https://www.cnblogs.com/hotzenplotz/p/2510645.html
Copyright © 2020-2023  润新知