CHAP密码解密 - Freeradius

时间:2016-04-19 16:07:56

标签: php encryption radius freeradius

我使用Freeradius使用php代码从我的服务器验证用户

update control {
    Reply-Message := `/usr/bin/php -f /etc/raddb/auth.php '%{User-Name}' '%{CHAP-Password}' '%{CHAP-Challenge}' auth`
}

它返回CHAP-Password = 0xa2a421bf267fbffabe5696cf1c6d54f479

并且CHAP密码是Hashing,但我在数据库中没有明文密码,密码被哈希。

使用PAP协议可以正常工作,但我需要将CHAP用于其他服务器配置

所以我的问题是:无论如何要解密CHAP密码,或者如果不能告诉CHAP不要在配置中散列密码

2 个答案:

答案 0 :(得分:1)

CHAP是质询 - 响应。您看到的十六进制不是加密密码,并且无法“解密”它以获取纯文本密码。

使用PAP,您可以在服务器或明文上使用加密密码。您将收到一个可以测试的明文密码。

使用CHAP,您需要服务器上的明文密码来检查对质询的响应是否正确。

所以你不能以当前形式做你想做的事。

答案 1 :(得分:0)

在搜索了很多个小时之后,我终于使用我的数据库进行了身份验证:

首先:我正在研究freeradius 3,因为半径2和半径3有很多变化

第二:数据库配置

我正在使用mysql和2个这样的数据库:

  1. 成员

    • 用户
      • ID
      • 用户名
      • 密码
      • .......
      • .......
    • ........
  2. 半径

    • radcheck
      • ID
      • 用户名
      • 属性
      • 运算
    • radpostauth
    • ......
  3. 您需要在此根目录中配置sql文件

    sudo nano mods-available/sql
    

    并更改此值

    driver = "rlm_sql_mysql"
    dialect = "mysql"
    server = "localhost"
    login = "your_database_username"
    password = "your_database_password"
    

    然后通过以下方式保存并重新启动半径:

    sudo service radiusd restart
    

    如果radius重启没有错误,那么配置正确

    重新启动radius后,您需要将此文件复制到 mods-enabled

    所以radius运行此配置,因为 mods-enabled 中的所有文件都是运行它的半径

    sudo cp mods-available/sql mods-enabled/sql
    

    检查一切是否正常

    sudo radiusd -XC
    

    此命令在radius上运行debug,并返回错误。

    如果此调试结束

      

    配置似乎没问题

    所以到目前为止一切都很好

    第三:数据库连接和身份验证

    现在我们需要通过 CHAP 验证用户名,因此我们需要编写查询以从 user 表中选择用户名

    此查询将在此根

    中的 queries.conf 文件中
    sudo nano mods-config/sql/main/mysql/queries.conf
    

    并将authorize_check_query更改为

    authorize_check_query = "\
        SELECT members.user.id as id, \
        members.user.username as username, \
        'Cleartext-Password' as attribute, \
        members.user.password as value, \
        ':=' as op \
    FROM members.user \
    WHERE members.user.username = '%{SQL-User-Name}' \
    ORDER BY members.user.id"
    

    仅供参考,密码必须是纯文本,因为您看到该属性是 Cleartext-Password

    现在让我们在表格用户行中添加用户名=" ahmed"和密码="测试"

    并尝试测试身份验证

    radtest -t chap ahmed test localhost 1812 testing123 
    

    如果你收到

      

    从127.0.0.1:1812收到Access-Accept Id 105到127.0.0.1:38259 length 20

    所以你完成了,

    我还要感谢@MatthewNewton对我的问题的回答和评论:D