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 个这样的数据库:
成员
- 用户
- id
- 用户名
- 密码
- .......
- .......
- .......
半径
- 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
我正在使用 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 个这样的数据库:
成员
- 用户
- id
- 用户名
- 密码
- .......
- .......
- .......
- 用户
半径
- radcheck
- id
- 用户名
- 属性
- op
- 价值
- radpostauth
- ......
- radcheck
您需要在此根目录中配置 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