我使用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不要在配置中散列密码
答案 0 :(得分:1)
CHAP是质询 - 响应。您看到的十六进制不是加密密码,并且无法“解密”它以获取纯文本密码。
使用PAP,您可以在服务器或明文上使用加密密码。您将收到一个可以测试的明文密码。
使用CHAP,您需要服务器上的明文密码来检查对质询的响应是否正确。
所以你不能以当前形式做你想做的事。
答案 1 :(得分:0)
在搜索了很多个小时之后,我终于使用我的数据库进行了身份验证:
首先:我正在研究freeradius 3,因为半径2和半径3有很多变化
第二:数据库配置
我正在使用mysql和2个这样的数据库:
成员
半径
您需要在此根目录中配置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