新增测试用户后FreeRADIUS服务器认证返回Access-Reject问题求助
根因定位
从你提供的服务端调试日志可以直接定位错误:认证请求在authorize阶段触发了FreeRADIUS默认的filter_username安全策略,规则判定用户名包含连续两个点(..),直接返回拒绝,请求还未走到用户密码校验的流程。
修复步骤
- 先验证用户配置有效性
编辑/usr/local/etc/raddb/sites-enabled/default,找到authorize段下的filter_username行,开头加#注释掉该规则。保存后重新启动调试模式服务:
再次执行测试命令:sudo radiusd -X
如果此时返回radtest testing password localhost 0 testing123Access-Accept,说明你新增的用户配置本身完全正确,错误就是filter_username规则误判导致。 - 修复过滤规则
编辑/usr/local/etc/raddb/policy.d/filter文件,找到filter_username策略中如下判断逻辑:
如果你确认你的使用场景不存在用户名路径穿越的风险,可以直接删除这部分判断;如果需要保留该安全能力,可以调整正则表达式避免误判。修改完成后重启服务即可正常使用。if (&User-Name =~ /\.\./ ) { update request { &Module-Failure-Message += 'Rejected: User-Name contains multiple ..s' } reject } - 额外排查项
如果注释filter_username后仍返回拒绝,检查/usr/local/etc/raddb/users文件中你新增的用户行:确保行首无空格、testing与Cleartext-Password之间仅用空格分隔、无隐藏特殊字符,同时确认users文件权限允许radiusd运行用户读取。
内容的提问来源于stack exchange,提问作者Grimer
相关产品推荐
相关产品推荐

