用户角色切换认证技术白皮书
Copyright © 2019 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。
设备采用RBAC(Role-Based Access Control,基于角色的访问控制)机制对用户的访问权限进行控制。用户的角色与相应的系统功能以及系统资源使用权限相对应,不同角色的用户登录设备后,只能使用指定角色的命令。但在有些情况下,用户希望在不退出当前登录、不断开当前连接的前提下,修改自身的用户角色,即需要切换用户角色。例如:
· 通常情况下管理员使用较低权限的用户角色登录设备、查看设备运行参数,当需要对设备进行维护时,要求临时切换到较高权限的用户角色。
· 管理员需要暂时离开设备或者将设备暂时交给其它人代为管理时,为了安全起见,可以临时切换到较低权限的用户角色,来限制其他人员的操作。
用户角色切换认证,就是设备对用户角色切换行为进行的认证。目前,设备支持两种基本的用户角色切换认证方案:
· 本地密码认证
当用户执行super命令希望将自身当前的用户角色切换到其它用户角色时,设备使用一个本地预先设置的密码(称为用户角色切换密码,通过super password命令设置)对该用户角色切换行为进行认证。如下例所示,用户只需要输入正确的切换密码xxx即可成功切换自身的用户角色为network-admin。
<Device> super network-admin
Password: xxx
· 远程AAA认证
当用户执行super命令希望将自身当前的用户角色切换到其它用户角色时,设备提示用户输入用户名和密码,并使用远程AAA服务器(RADIUS服务器或HWTACACS服务器)对该用户角色切换行为进行认证。如下例所示,用户需要输入用户名test@bbb和正确的切换密码yyy才能成功切换自身的用户角色为network-admin。
<Device> super network-admin
Username: test@bbb
Password: yyy
User privilege role is network-admin, and only those commands that authorized to the role can be used.
本地认证方式具有配置简单、易用的优点,但在也存在以下问题:
· 无法对用户角色切换的操作者进行身份区分,任何拥有本地切换密码的用户都可以使用相同的切换密码来修改自身的用户角色。
· 本地密码的存储信息量以及管理策略上均有一定的局限性,且容易产生安全隐患。
相比较而言,远程AAA认证需要部署相应的AAA服务器来配合,用户信息的管理与维护上比本地密码认证方式稍显复杂,但它具有如下优点:
· 可提升用户角色切换的安全性
用户进行角色切换操作时使用相应的用户名和密码在远程AAA(RADIUS或HWTACACS)服务器上进行身份认证,不同的用户可拥有不同的切换权限。
· 可提高设备管理的灵活性
通过与本地认证组合使用,增强了认证的可靠性,提高了设备管理的灵活性。
目前,设备支持四种用户角色切换认证方式,具体含义如表1所述。其中,后两种认证方式为前两种基本认证方式的灵活组合,提高了用户角色切换认证的可靠性。
认证方式 |
含义 |
说明 |
local |
仅本地密码认证 |
设备上预先通过super password命令设置一个目标用户角色对应的切换密码,然后当用户切换该目标角色时,由设备验证用户输入的用户角色切换密码是否准确 |
scheme |
仅通过HWTACACS或RADIUS进行远程AAA认证 |
HWTACACS/RADIUS服务器上预先配置对应的用户名和密码信息,然后当用户切换目标角色时,由设备将用户输入的角色切换使用的用户名和密码发送给HWTACACS/RADIUS服务器进行远程验证 |
local scheme |
先本地密码认证,后远程AAA认证 |
先由设备进行本地密码认证,若设备上未设置本地用户角色切换密码,则: · 使用Console、TTY、VTY用户线登录的用户转为远程AAA认证 · 使用AUX用户线登录的用户直接可以成功切换用户角色 |
scheme local |
先远程AAA认证,后本地密码认证 |
先进行远程AAA认证,远程HWTACACS/RADIUS服务器无响应或设备上的AAA远程认证配置无效时,转由设备进行本地密码认证 |
如果设备上设置了对应的本地用户角色切换密码,则系统提示用户输入该密码,并把用户输入的密码和对应的本地用户角色切换密码进行比较,如果一致则提示用户认证成功;如果认证尝试次数达到3次则提示用户认证失败,否则提示用户重新输入本地用户角色切换密码。
如下例所示,任何登录到设备上的用户,要切换到network-admin角色时,只需要正确输入该设备上预先设置的本地用户角色切换密码就可以。
<Device> super network-admin
Password: <——此处输入本地用户角色切换密码
User privilege role is network-admin, and only those commands that authorized to the role can be used.
当使用RADIUS方案进行用户角色切换认证时,系统统一使用“$enabn$”形式的用户名进行用户角色切换认证,其中n为用户希望切换到的用户角色level-n中的n,RADIUS服务器上也必须存在该形式用户名的用户。因此,使用RADIUS方案对用户进行角色切换时,用户输入的用户名称在认证过程中无实际意义。
· 当用户要切换到level-n的用户角色时,要求RADIUS服务器上存在用户名为“$enabn$”的用户。例如,用户希望切换到用户角色level-3,输入任意用户名,系统忽略用户输入的用户名,使用用户名“$enab3$”进行用户角色切换认证。
· 当用户要切换到非level-n的用户角色时,要求RADIUS服务器上存在用户名为“$enab0$”的用户,且该用户配置了取值为allowed-roles=”role”的自定义属性(其中role为要切换的目的用户角色名称),具体配置要求请以服务器侧的要求为准。
RADIUS服务器接收到认证请求报文后,对角色切换用户名和密码进行认证。如果认证成功,RADIUS服务器返回认证成功消息;如果认证失败,则返回认证失败消息。如果认证尝试次数达到3次,则提示用户认证失败,否则提示用户重新输入角色切换用户名和密码。
当使用HWTACACS方案进行用户角色切换认证时,若未配置用户角色切换认证时使用用户登录的用户名认证,则系统使用用户输入的用户角色切换用户名进行角色切换认证,HWTACACS服务器上也必须存在相应的用户。用户输入的用户名和密码需要与服务器上的配置保持一致。
· 当用户要切换到level-n的用户角色时,要求HWTACACS服务器上存在能提供切换到level-n角色的用户。在HWTACACS服务器上,支持切换到用户角色level-n的用户也能够支持切换到level-0到level-n之间任意的用户角色。
· 当用户要切换到非level-n的用户角色时,要求HWTACACS服务器上存在至少能提供切换到level-0角色的用户,且该用户配置了取值为allowed-roles=”role”的自定义属性(其中role为要切换的目的用户角色名称,多个角色可用空格间隔)。
HWTACACS服务器接收到认证请求报文后,对角色切换用户名和密码进行认证。如果认证成功,HWTACACS服务器返回认证成功消息;如果认证失败,则返回认证失败消息。如果认证尝试次数达到3次则提示用户认证失败,否则提示用户重新输入角色切换用户名和密码。
用户角色切换认证过程中,是否需要提供用户名和密码以及所使用的用户名和密码与用户登录设备的认证方式有密切的关联,会因为不同的用户登录方式而存在一些差异,具体情况如表2所示。
登录认证方式 |
用户角色切换 认证方式 |
用户角色切换时的 用户名和密码 |
none/ password |
local |
· 用户名:不需要 · 密码:本地用户角色切换密码 |
scheme |
· 用户名:用户角色切换用户名 · 密码:服务器上的用户角色切换密码 |
|
scheme |
local |
· 用户名:不需要 · 密码:本地用户角色切换密码 |
scheme |
· 用户名:用户角色切换用户名或用户登录用户名 · 密码:服务器上的用户角色切换密码 缺省情况下,系统提示用户输入用户角色切换用户名。可以通过配置允许系统自动获取用户登录用户名作为用户角色切换用户名,而不需要用户输入 |
建议用户角色切换的认证方法(由authentication super命令设置)与登录域下配置的用户登录授权方法(由authorization login命令设置)保持一致,否则在与当前登录用户相同的ISP域中执行用户角色切换认证时,可能无法切换到非level-n用户角色。
典型的组网应用如图1所示。在该组网中,用户登录设备时需要进行RADIUS认证,为了避免对设备的误操作,登录后仅被授予具有较低权限的用户角色level-0。后续,当该用户需要以管理员的身份进行设备维护时,可以直接切换到高权限的用户角色network-admin。考虑到用户角色切换认证的安全性和灵活性,首先对该用户的角色切换行为使用RADIUS认证,若AAA配置无效或者RADIUS服务器没有响应则转为本地密码认证。
图1 RADIUS用户角色切换典型组网图
假设用户使用Telnet客户端远程登录Device,则按照如下提示输入正确的用户名及登录密码后,即可成功登录,且只能访问指定权限的命令。
<Device> telnet 192.168.1.70
Trying 192.168.1.70 ...
Press CTRL+K to abort
Connected to 192.168.1.70 ...
login: test@bbb
Password: <——此处需输入登录密码
******************************************************************************
* Copyright (c) 2004-2019 New H3C Technologies Co., Ltd. All rights reserved.*
* Without the owner's prior written consent, *
* no decompiling or reverse-engineering shall be allowed. *
******************************************************************************
<Device>?
User view commands:
ping Ping function
quit Exit from current command view
ssh2 Establish a secure shell client connection
super Switch to a user role
system-view Enter the System View
telnet Establish a telnet connection
tracert Tracert function
<Device>
如果该用户需要提升自己的管理权限,则在当前的用户线下执行切换到用户角色network-admin的命令,并按照提示输入正确的RADIUS用户角色切换认证密码即可。
<Device> super network-admin
Username: test@bbb
Password: <——此处需输入RADIUS用户角色切换认证密码
User privilege role is network-admin, and only those commands that authorized to the role can be used.
若RADIUS服务器无响应,再按照系统提示输入本地用户角色切换认证密码,若认证成功即可将当前用户角色切换到network-admin。
<Device> super network-admin
Username: test@bbb
Password: <——此处需输入RADIUS用户角色切换认证密码
Invalid configuration or no response from the authentication server.
Change authentication mode to local.
Password: <——此处需输入本地用户角色切换认证密码
User privilege role is network-admin, and only those commands that authorized to the role can be used.