1

我一直在尝试为我们的网络设备设置freeradius服务,该服务将针对 Active Directory 进行身份验证。我现在有身份验证工作。我要完成的下一个任务是检查用户是否属于某个组。require-membership-of使用参数“ ”很容易ntlm_auth

我的配置是这样的:

program = "/usr/bin/ntlm_auth --request-nt-key --domain=DOMAIN --require-membership-of='DOMAIN\NetworkAdmins' --username=%{mschap:User-Name} --password=%{User-Password}"

但我找不到检查 2 个或更多组的方法。有没有办法以某种方式做到这一点?

谢谢

4

1 回答 1

1

简短的回答:不要ntlm_auth用于此,而是使用 LDAP 模块。

组检查通过ntlm_auth是非常基本的。(实际上最好ntlm_auth完全跳过使用并开始使用 FreeRADIUS 内置的直接 winbind 身份验证:请参阅winbind_usernamewinbind_domainin raddb/mods-available/mschap。)

为了更好地控制组成员资格检查(包括正确检查嵌套组),您根本不应该将其作为ntlm_auth(或 winbind auth)的一部分进行,而是配置和使用该ldap模块。

查看raddb/mods-available/ldap所有详细信息。您需要创建一个符号链接raddb/mods-enabled/ldap -> ../mods-available/ldap来启用它。

配置 LDAP 模块后,您可以使用虚拟属性LDAP-Group来测试用户是否在组中,例如

if (LDAP-Group == "group1" && LDAP-Group == "group2") {
    ...
}

如果您发现这对于您的配置仍然不够灵活,您可以使用 XLAT 扩展来执行临时 LDAP 查询。

于 2019-07-22T22:13:25.720 回答