使用Freeradius、LDAP和Google Authenticator实现双因素身份验证

By | 2024年4月12日

介绍及遗留问题

Freeradius 是一个功能强大的开源 AAA (认证、授权、会计) 服务器,用于实现远程网络访问控制和用户认证。

参考 【Freeradius】使用Freeradius、LDAP和Google Authenticator实现双因素身份验证 这篇文章,成功将 Freeradius 和 LDAP 绑定进行认证了,但谷歌双因子认证模块始终无法认证,虽然输入一个正确的格式,让 Freeradius Filter分离出谷歌双因子token即可,无论输入什么token都可以通过,说明双因子认证模块对接到 Freeradius还是有问题的。还好开发测试环境不用关心这些,客户那服务器端已经成功集成好了。

安装笔记

提醒:安装与配置直接参考上面的文章即可,下面仅记录下参考文章中没有的!

通常客户端连接 FreeRadius 服务器时,不需要设置 Auth-Type 属性值,服务器会自己选择做正确的事。在使用Java进行客户端开发时,默认Auth-Type 是 PAP 类型的。

PAP(Password Authentication Protocol )是口令认证协议。PAP认证过程非常简单,二次握手机制,使用明文格式发送用户名和密码。 相对于chap, 没有增加随机数加密,可以无限次尝试。 不如chap安全
上述的明文传递密码, 指的是 认证客户端 —> 认证服务端 交互时。

FreeRadius 日志文件位于 /var/log/freeradius 目录,当客户端连不上来时,日志里会打印错误信息,方便排查。

查看服务状态:systemctl status freeradius

客户端测试命令:radtest test001 ldapPassword,123456 localhost 1812 testing123
其中 test001 是 ldap账号,ldapPassword 是 ldap密码,后面的123456是谷歌二次认证token,最后的 testing123 密码是在参考文章的 /etc/freeradius/3.0/clients.conf 中进行配置的。
测试返回的类型必须是 Access-Accept,不能是 Access-Reject,否则测试失败:

运行参考文章的 bash ./add-otp-user <username> 会弹出二维码,手机装个谷歌验证器,扫一下绑定即可:

其他参考

使用 FreeRADIUS 搭配 Google 認證服務進行雙重驗證

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注