Atl*_*las 9 authentication radius freeradius
我遇到了一个问题,我在Freeradius 用户文件中无法理解.我的目标是用密码"test"验证外部用户"shad".我在/ etc/raddb/users中添加了以下行: shad Cleartext-Password =="test" 结果为Reject.如果我将"=="运算符更改为":="身份验证成功.所以我的问题是:为什么我不能用"=="而FREERADIUS文档讲述了运营商: "属性==值作为检查项目,它匹配如果指定的属性存在于请求,并给定值".
还有一个问题.在一些资源中我遇到过这样的行: shad Auth-Type:= Local,User-Password =="test" 我试过但它不起作用.响应是拒绝日志:[pap]警告!没有为用户找到"已知良好"密码.验证可能因此而失败.
先感谢您.最好的祝福.
Arr*_*ell 26
对于下面的答案,对是指属性值对(AVP),即由属性,运算符和值组成的元组.
可以从用户文件访问三个属性(对)列表.这些列表与特定请求相关联.
用户文件模块确定它将用于插入/搜索的列表,该列表在条目和操作符中列出.
条目的第一行包含必须匹配的检查对,以便使用该条目.它还包含控制对,如果所有检查对都匹配,则需要将控制对插入到控制列表中.
注意:列出对的顺序无关紧要.除非所有检查对都评估为真,否则不会插入控制对.
检查和控制对由所使用的操作员区分.如果使用赋值运算符,即':='或'=',则该对将被视为控制对.如果使用等于运算符,例如'>','<','==','> =','<=','=〜',则该对将被视为检查对.
同一条目中的后续行仅包含回复对.如果所有检查对都匹配,则回复对将插入回复列表中.
Cleartext-Password严格来说是一个控制对.它不应出现在任何其他列表中.
Cleartext-Password是一组属性之一,应包含"引用"(或"已知良好")密码,即用户密码的本地副本.此集合中另一对的示例是SSHA-Password - 它包含用户密码的salted SHA哈希.
服务器中的模块搜索引用密码对,该模块使用"用户密码"对"rlm_pap"处理对用户的验证.
用户密码严格来说是一对请求.它不应出现在任何其他列表中.
用户密码包含在NAS的请求中.它包含用户提供给NAS的密码的纯文本版本.为了验证用户,模块需要将用户密码的内容与像Cleartext-Password这样的控制对进行比较.
在设置参考密码时的用户文件条目中,您将看到以下条目:
my_username Cleartext-Password := "known_good_password"
Run Code Online (Sandbox Code Playgroud)
也就是说,如果用户名与左侧的值(my_username)匹配,则插入控制对Cleartext-Password,其值为"known_good_password".
回答第一个问题的原因:
shad Cleartext-Password == "test"
Run Code Online (Sandbox Code Playgroud)
不起作用,这是因为您告诉文件模块在请求列表中搜索,对于请求列表中不存在的对,并且应该永远不存在于请求列表中.
你现在可能会想到哦,我将使用User-Password =="test"代替它,它会起作用.不幸的是,它不会.如果密码匹配,则条目将匹配,但用户仍将被拒绝,请参阅下面的原因.
Auth-Type严格来说是一个控制对.它不应出现在任何其他列表中.
服务器中有三个主要部分用于处理请求'authorize','authenticate','post-auth'.
授权是信息收集部分.这是完成数据库查找以授权用户和检索引用密码的地方.它也是确定Auth-Type的地方,也就是我们想要为用户执行的身份验证类型.
Authenticate是调用特定模块以执行身份验证的位置.该模块由Auth-Type确定.
Post-Auth主要用于日志记录,并且应用更多策略,在Post-Auth中运行的模块由在Authenticate中运行的模块返回的响应确定.
授权中的模块检查请求,如果他们认为可以对用户进行身份验证,并且未设置Auth-Type,则会将其设置为自己.
如果在请求中找到用户密码,rlm_pap模块将设置Auth-Type ='pap'.
如果未设置Auth-Type,则拒绝该请求.
所以要回答你的第二个问题,你正在强制进行pap身份验证,这是错误的,你应该让rlm_pap设置Auth-Type,然后你要对密码进行相等性检查,而不是设置rlm_pap使用的控制对.
当rlm_pap在身份验证中运行时,它会查找上面描述的一组"引用"密码的成员,如果找不到,则拒绝该请求,这就是上面发生的情况.
还有一个'魔术'Auth-Type,'Accept',完全跳过身份验证部分,只接受用户.如果你想在不使用rlm_pap的情况下进行明文密码比较,你可以使用:
shad Auth-Type := Accept, User-Password == "test"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21253 次 |
| 最近记录: |