CHAP 密码解密 - 自由半径

CHAP Password decrypt - Freeradius

我正在使用 Freeradius 通过 php 代码

从我的服务器验证用户
update control {
    Reply-Message := `/usr/bin/php -f /etc/raddb/auth.php '%{User-Name}' '%{CHAP-Password}' '%{CHAP-Challenge}' auth`
}

它returnCHAP-Password = 0xa2a421bf267fbffabe5696cf1c6d54f479

并且 CHAP 密码是散列的,但我在数据库中没有明文密码,密码是散列的。

它在 PAP 协议下运行良好,但我需要将 CHAP 用于其他服务器配置

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

CHAP 是质询-响应。您看到的十六进制不是加密密码,无法 "decrypt" 它获得纯文本密码。

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

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

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

搜索了很多很多小时后,我终于让 chap 通过我的数据库进行了身份验证:

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

二:数据库配置

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

  1. 成员

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

    • radcheck
      • id
      • 用户名
      • 属性
      • op
      • 价值
    • radpostauth
    • ......

您需要在此根目录中配置 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

so radius 运行这个配置,因为mods-enabled里的所有文件都是什么radius 运行ning it

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

检查是否一切正常 运行ning OK

sudo radiusd -XC

此命令 运行 在 radius 上调试,return 错误。

如果此调试结束是

Configuration appears to be OK

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

第三:数据库连接与认证

现在我们需要通过 CHAP 验证用户名,因此我们需要将查询写入 select 来自 user[=129= 的用户名] table

这个查询将在这个文件中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

现在让我们在 table user 行中添加用户名 = "ahmed" 和密码 = "test"

并尝试测试身份验证

radtest -t chap ahmed test localhost 1812 testing123 

如果您收到

Received Access-Accept Id 105 from 127.0.0.1:1812 to 127.0.0.1:38259 length 20

大功告成,

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