一个单位的无线网络要求内部员工和访客使用无线网络前进行认证
内部员工账号认证通过后能同时访问内外网资源,访客账号认证通过后仅允许访问外网资源
由于华为无线控制器内置portal认证的糟糕使用体验(无法实现MAC优先的portal认证),拟增加外置portal服务器
华为和华三的软件方案报价令人xxx,一个字“贵”
信锐的方案虽然也捆绑了硬件,但是鉴于之前的接触,服务还不错,而且还提供测试设备进行对接和功能验证测试,荐之
对接
按照信锐社区的对接配置手册就可以完成基本对接
http://bbs.sundray.com.cn/forum.php?mod=viewthread&tid=8442
但是,在web界面点点点不是我的风格,写好脚本一把梭才符合我的气质[🉑]
重点
根据【信锐控制器对接华为AC6005系列_V3.8.0.3.pdf】文档第2页,可以看到两行红色字提示
但是,【SUNDRAY_NMC_3.10.0_20221203.pdf】NMC手册第170页也给出了“角色将会通过 RADIUS 报文中的 Class 字段,以字符串的形式返回给 RADIUS 客户端”,这就留下了可操作的空间
华为控制器产品手册中的RADIUS属性说明
【无线接入控制器(AC和FIT AP) V200R022C00 产品文档】-【配置】-【配置指南(通过命令行)】-【用户接入与认证配置】-【AAA配置】-【AAA原理描述】-【RADIUS认证、授权和计费】-【RADIUS属性】
华为ACL编号授权说明
https://support.huawei.com/enterprise/zh/doc/EDOC1000113778/f42e57ed
RADIUS服务器上配置了ACL编号下发功能,则授权信息中含有下发的ACL编号,设备端根据下发的ACL编号匹配相应的ACL规则,对用户权限进行控制
- ACL编号下发,使用的RADIUS属性为:(011)Filter-Id
- AC上支持接受的ACL编号取值范围为3000~3031
抓包分析信锐NMC返回的radius属性
首先在信锐NMC上配置角色,名称同华为无线控制器的配置ACL编号一致,只需填写名称,其他选项都不用
1 | # 华为无线控制器访客授权ACL示例,如要放行访客可以访问部分内网资源,按需修改 |
在【WEB 认证策略】-【权限设定】-【使用规则】-添加【认证类型条件】满足条件后分配角色 3020 ,此步骤对应华为NCE中的【授权规则】和【授权结果】
如下图,radius认证过程中,在信锐NMC返回给华为无线控制器的 Access-Accept 报文中,观察到Class属性中的值为 3020,正是在信锐NMC上配置的角色名称
华为无线控制器配置radius属性转换
华为无线控制器RADIUS属性转换功能,属性转换主要是为了兼容不同厂商RADIUS属性定义的差别。
在本次对接中,需要将信锐返回的radius Class属性转换成Filter-Id属性,这样就实现了华为系的授权ACL下发功能(已验证,好使)
在RADIUS服务器模板视图下添加如下命令
1 | radius-server attribute translate |
查看授权ACL
先根据无线终端MAC地址或IP地址查找出user-id,再执行以下命令
1 | [AC] display access-user user-id xxxxx |
总结
- 对无线终端进行访问限制有多种方式如用户组向下绑定acl-id、流量模板、ACL,但是就这个场景只能基于用户做限制
- 通过使用华为无线控制器上的radius属性转换功能,完成Class对Filter-Id的转换,进而实现授权ACL下发
- 信锐无线设备中的授权是基于角色(猜的,没有看到信锐文档中的说明)
- 华为NCE中的授权规则和授权结果与信锐NMC中的规则和角色,基本一个意思,有些许区别,不重要
- 这个方法也是摸索出来,查阅了华为和信锐的手册,并在vmware虚拟机安装各种radius软件进行抓包检验
- 再吐槽一句,华为的NCE代理商开的价真尼玛高,仅安装NCE软件这一项服务就好几十个K
- 经此一役,可能要改写信锐对接手册中这一句话了(注:portal 服务器中的权限设定无法对无线用户生效,但对接 Aruba 时该角色名与 aruba设备上的认证后角色名必须保持一致才能认证通过)