我是FreeRadius的新手,所以我的知识并不深入。 我试图配置一个中心半径,以处理任何基于网络的系统(交换机,路由器,防火墙和VPN),以在最终用户尝试通过SSH和/或VPN进入系统时对它们进行身份验证。我所有的设备都支持半径。
环境:
参考: 我按照此页面操作使大部分系统正常运行(SSLVPN Two - Factor Authentication with Google Authenticator
工作原理:
下一步(问题): 我希望能够最终决定是否通过AD安全组授予最终用户访问VPN或交换机的权限。 因此,根据我的理解,我可以在auth模块或post-auth中执行此操作。我相信正确的地方应该是使用unlang的post-auth可能的位置(但是如果这不是一般的工作范围,请纠正我)。 我不知道我需要/在何处执行LDAP查找以获取用户名AD安全组信息。 从理论上讲,一旦有了用户的名称和组信息,就可以在多个过滤器中使用它们来声明他们是否可以访问一组系统。 谢谢
答案 0 :(得分:0)
所以我想出了如何完成我想做的事情。
配置/etc/raddb/clients.conf
将选项添加到virtual_server = custom_vs01的每个客户端下
重复(不重命名)/ etc / raddb / sites-available /默认为/ etc / raddb / sites-available / custom_vs01
编辑custom_vs01。更改服务器块以匹配文件。 orig:服务器默认{新:服务器custom_vs01 {
将AUTH和ACCT的端口更改为实际端口(例如511812和511813)
在验证后部分中;添加unlang查找LDAP组 因此,基本上,如果经过身份验证的用户不属于任何一个AD组,那么我们将更新控件并拒绝其访问
post-auth {
update {
&reply: += &session-state:
}
-sql
exec
remove_reply_message_if_eap
# Custom post-auth policies
if (LDAP-Group == "AD_Group_SystemAdmins") {
update reply {
Class := "AD_Group_SystemAdmins"
}
}
elsif (LDAP-Group == "AD_Group_SystemUsers") {
update reply {
Class := "AD_Group_SystemUsers"
}
}
else {
update reply {
Reply-Message = "Not authorized to access this system"
}
update control {
Auth-Type := "Reject"
}
}