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 来实现, 具体将会在新的文章中阐述
- Oracle 11g R2 RAC 高可用连接特性 – SCAN 详解
- Spring boot · 链接池配置
- Linux下命令行图片格式转换
- 用SQL解一道有趣的数学题:Gauss和Poincare
- OpenSSL 转换证书格式
- 电子邮件服务器DKIM配置
- 自相矛盾:一个进程可以自成死锁么?
- 数据库安全·开发加密插件
- wordpress无法安装这个包。: PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file 'C:WINDOWSTEMP/wordpress-4.
- 数据库安全·数据加密
- Medium网友开发了一款应用程序 让学习算法和数据结构变得更有趣
- 数据库安全·Token 认证
- 数据库安全·用户/角色认证
- 防止在训练模型时信息丢失 用于TensorFlow、Keras和PyTorch的检查点教程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 大点干!早点散----------深入剖析LVS负载均衡群集原理
- javascript中元素的scrollLeft和scrollTop属性说明
- 大点干!早点散----------LVS负载均衡之LVS-NAT部署实战
- 大点干!早点散----------负载均衡LVS-DR群集部署
- 大点干!早点散----------群集负载均衡LVS DR+keepalived部署实战
- Java字符串所占字节数的小总结
- Java类加载机制详解
- 详解Java注解(Annotation)
- 你不知道的Synchronized
- 从Java并发集合看锁优化策略
- Java常用并发容器总结(二)
- Java常用并发容器总结(一)
- Java常用并发容器总结(三)
- Java常用并发容器总结(四)
- Js常见点击跳转方式