CHAP密码解密-Freeradius


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`
}

返回CHAP-Password = 0xa2a421bf267fbffabe5696cf1c6d54f479

CHAP密码是哈希,但我在数据库中没有明文密码,密码是哈希的。

它与PAP协议配合使用很好,但我需要将CHAP用于其他服务器配置

因此,我的问题是:是否有解密CHAP密码的方法,或者如果无法告诉CHAP不要在配置中哈希密码

CHAP是质询响应。你看到的十六进制不是加密密码,也没有办法"解密"它来获得纯文本密码。

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

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

所以你不能在当前表单中做你想做的事情。

经过无数个小时的搜索,我终于让chap使用我的数据库进行身份验证:

第一:我正在研究freeradius 3,因为radius 2和radius 3 有很多变化

第二:数据库配置

我使用mysql和2个类似的数据库:

  1. 会员

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

    • 雷达检查
      • id
      • 用户名
      • 属性
      • 操作
      • 价值
    • 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后,您需要将此文件复制到启用了的mods

因此radius运行此配置,因为mods中启用的中的所有文件都是运行的radius

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

检查是否运行正常

sudo radiusd -XC

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

如果此调试的结束是

配置似乎正常

所以直到现在一切都很好

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

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

这个查询将在这个根的querys.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"

仅供参考,密码必须是纯文本的,因为正如您所看到的,属性是明文密码

现在,让我们在user表中添加username="ahmed"和password="test"行

并尝试测试身份验证

radtest -t chap ahmed test localhost 1812 testing123 

如果您收到

接收到的访问接受Id 105从127.0.0.1:1812到127.0.0.1:38259长度20

所以你完成了,

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