假设我有链 Mikrotik Hotspot-FreeRADIUS0-OpenLDAP,并且我想要对存储在 Hotspot 的 LDAP 目录中的用户进行身份验证。到目前为止,我拥有明文的所有密码,并且一切正常,但现在我想以哈希格式保存这些密码(可能是 SSHA,默认的 ldappasswd 选项)。我想我必须在该链的所有步骤中启用哈希密码选项,但我没有找到如何在 FreeRADIUS 中启用它的任何地方。感谢您的帮助
答案1
在raddb/mods-available/ldap
ldap {
...
update {
control:Password-With-Header := '<your ldap password attribute>'
}
...
}
在raddb/sites-available/default
或raddb/sites-available/inner-tunnel
authorize {
...
eap
ldap
pap
...
}
在 LDAP 密码属性中,在密码值之前添加适当的标头。
完整的标题列表在这里:https://github.com/FreeRADIUS/freeradius-server/blob/v3.0.x/src/modules/rlm_pap/rlm_pap.c#L76
当 LDAP 模块运行时,它将查找您的密码属性,并将其存储在 FreeRADIUS 内部Password-With-Header
属性中。
当 PAP 模块运行时,它将搜索属性Password-With-Header
,查看预定义的标头名称列表以查看是否有任何与值的开头匹配Password-With-Header
。
如果这样做,PAP 模块将删除标头,根据需要从 base64/hex 进行转换,使用相同的摘要算法和盐对用户提供的密码进行哈希处理,然后比较结果。
如果哈希值匹配,pap 模块将返回 ok,身份验证继续,否则 pap 模块将返回拒绝,身份验证将失败。
为了使其工作,您需要使用EAP-TTLS-PAP
EAP 类型(对于 WPA2 企业)或只是普通类型PAP
(对于门户网站登录)。