ToughRADIUS 结合 Ldap 实现动态密码认证和MAC认证

时间:2022-07-27
本文章向大家介绍ToughRADIUS 结合 Ldap 实现动态密码认证和MAC认证,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

LDAP 数据库通常由企业使用,但某些 ISP 也使用它们。常见的实现是 Active Directory 和 OpenLDAP。

我们可以安装一个 RADIUS 服务器,该服务器可以直接使用您现有的 Ldap 用户信息, 这样大大缩减您部署认证系统的时间成本。

这里我们以 OpenLdap 为例来实现 ToughRADIUS 的 Ldap 认证

OpenLdap 安装配置

为了方便没有 Ldap 部署经验的用户, 这里我们将在 Centos 7上安装一个新的 OpenLdap 实例来提供更多的操作指导, 请参照 OpenLdap 安装配置 一步步完成。 需要特别注意关于 RADIUS 属性的配置

ToughRADIUS Ldap 配置

在网络管理模块创建一个 Ldap 节点, 实际的配置请参考具体环境

然后创建或修改 NAS 设备,关联该 Ldap 节点,这样通过这个 NAS 接入的用户就会走 Ldap 认证流程,其他NAS仍然可以配置本地认证

配置好之后, 我们就可以通过实际认证来测试了, 这里使用 jradius 客户端工具来模拟测试 由于没有配置到期(ExpireTime)属性, 默认下发了1天的时长, 限速属性自动适配华为 RADIUS 协议

Sending RADIUS Packet:
----------------------------------------------------------
Class: class net.jradius.packet.AccessRequest
Attributes:
User-Name := wjt
NAS-Identifier := jradius
NAS-IP-Address := 172.26.1.248
NAS-Port := 0
NAS-Port-Id := eth
NAS-Port-Type := Wireless-802.16
Calling-Station-Id := 11:11:11:11:11:11
User-Password := [Encrypted String]
Message-Authenticator := [Binary Data (length=16)]

Received RADIUS Packet:
----------------------------------------------------------
Class: class net.jradius.packet.AccessAccept
Attributes:
Session-Timeout = 86399
Acct-Interim-Interval = 120
Huawei-Input-Average-Rate = 10240000
Huawei-Input-Peak-Rate = 40960000
Huawei-Output-Average-Rate = 1024000
Huawei-Output-Peak-Rate = 4096000

MAC 认证配置

通常设备的MAC认证模式会使用 MAC 作为用户名和密码认证

  • 配置用户的 radiusCallingStationId 属性,填入终端 MAC
  • ToughRADIUS 配置 Ldap 的 UserFilter 为 (&(objectClass=radiusprofile)(radiusCallingStationId=%s))

OTP 动态密码认证

  • 首先需要设置全局启用 OTP 动态密码认证
  • 设置 LDAP 用户 OTP 动态密码属性, MfaSecret 可以通过在 ToughRADIUS 创建一个测试用户生成, 如图
radiusReplyItem: MfaSecret=2USF3NRFEWF6Z77I7KLMP6PLO5HBCAN6
radiusReplyItem: MfaStatus=enabled

用户通过手机APP(谷歌验证器或者 FreeOTP),扫码或者输入秘钥进行绑定

注意事项

  • 由于大部分 Ldap 服务器并不支持检索用户的明文密码, 所以普通模式的认证 只能支持 PAP, CHAP 和 MSCHAPV2 不能支持, 但是 OTP 动态密码认证可以支持 CHAP 和 MSCHAPV2
  • MAC 认证的优先级要高于OTP认证, 如果同时开启 MAC 认证和 OTP 认证, 会优先校验 MAC 有效性
  • 配置 OTP 认证时, 首先要全局启用 OTP 认证, 否则即使用户设置 OTP 认证启用也不会生效
  • 本方案实现的 Ldap 认证目前还不能支持 802.1x (EAP)认证, 如果需要实现 802.1x 认证, 需要集成 freeradius 来实现, 具体将会在新的文章中阐述