简介
本文档介绍为权限级别较低的用户显示完整运行配置的配置过程。
先决条件
要求
要理解本文档,必须具备对思科权限级别的基本了解,背景信息足以解释对所需权限级别的理解。
使用的组件
本文档中用于配置示例的组件是ASR1006,但所有Cisco IOS®或Cisco IOS XE设备的工作方式都类似。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
本文档介绍如何为登录到低权限级别的路由器的用户显示完整运行配置的配置步骤。要了解下一个问题和解决方法,必须了解权限级别。 可用的权限级别范围为0到15,并允许管理员自定义哪些命令在哪些权限级别可用。默认情况下,路由器的三个权限级别为:
- 0级 — 仅包括基本命令(disable、enable、exit、help和log out)
- 1级 — 包括在用户EXEC命令模式下可用的所有命令
- 级别15 -包括在特权EXEC命令模式下可用的所有命令
在这些最小和最大级别之间的剩余级别未定义,直到管理员将命令和/或用户分配给它们。因此,管理员可以为用户分配不同权限级别,这些权限级别介于最小权限级别和最大权限级别之间,以分隔不同用户也具有访问权限的内容。然后,管理员可以将单个命令(和各种其他选项)分配给单个权限级别,以使此级别的任何用户都可以使用它。例如:
Router(config)# username user1 privilege 7 password P@ssw0rD1
Router(config)# privilege exec level 7 show access-lists
通过此配置,当用户1连接到路由器时,他们能够运行 show access-lists
命令和/或在该权限级别启用的任何其它命令。但是,不能这样说,因为启用了 show running-config
命令,问题语句中稍后将对此进行介绍。
配置问题
为不同用户配置不同的路由器访问级别时,网络管理员通常会尝试将某些用户分配为仅有权访问 show
命令,不提供对任何 configuration
命令。对大多数人来说,这都是一项简单的任务 show
命令,因为您可以通过简单配置授予访问权限,如下所示:
Router(config)# username test_user privilege 10 password testP@ssw0rD
Router(config)# privilege exec level 10 show
Router(config)# privilege exec level 10 show running-config
使用此示例配置,第二行可以允许 test_user
访问过多的show related命令,这些命令通常在此权限级别不可用。但是, show running-config
命令的处理方式与大多数show命令不同。即使使用示例代码的第三行,也只有省略/缩写 show running-config
显示为用户,尽管该命令是以正确的权限级别指定的。
User Access Verification
Username: test_user
Password:
Router#
Router#show privilege
Current privilege level is 10
Router#
Router#show running-config
Building configuration...
Current configuration : 121 bytes
!
! Last configuration change at 21:10:08 UTC Mon Aug 28 2017
!
boot-start-marker
boot-end-marker
!
!
!
end
Router#
您可以看到,此输出未显示任何配置,对于尝试收集有关路由器配置信息的用户没有帮助。这是因为 show running-config
命令显示用户能够在其当前权限级别修改的所有命令。此配置设计为安全配置,可防止用户从其当前权限级别访问之前配置的命令。当尝试创建具有show命令访问权限的用户时,会出现此问题,例如 show running-config
是工程师在排除故障时最初收集的标准命令。
配置解决方案和验证
作为这一困境的解决之道,还有另一种形式的传统 show run
命令来绕过命令的此限制。
Router(config)# show running-config view full
Router(config)# privilege exec level 10 show running-config view full
添加 view full
对于命令,(并反过来使用命令的权限级别来允许用户访问命令),现在允许用户查看完整的 show running-config
没有任何省略的命令。
Username: test_user
Password:
Router#
Router#show privilege
Current privilege level is 10
Router#
Router#show running-config view full
Building configuration...
Current configuration : 2664 bytes
!
! Last configuration change at 21:25:45 UTC Mon Aug 28 2017
!
version 15.4
service timestamps debug datetime msec
service timestamps log datetime msec
no platform punt-keepalive disable-kernel-core
!
hostname Router
!
boot-start-marker
boot system flash bootflash:packages.conf
boot system flash bootflash:asr1000rp1-adventerprisek9.03.13.06a.S.154-3.S6a-ext.bin
boot-end-marker
!
vrf definition Mgmt-intf
!
address-family ipv4
exit-address-family
!
address-family ipv6
exit-address-family
!
enable password <omitted>
!
no aaa new-model
!
no ip domain lookup
!
subscriber templating
!
multilink bundle-name authenticated
!
spanning-tree extend system-id
!
username test_user privilege 10 password 0 testP@ssw0rD
!
redundancy
mode sso
!
cdp run
!
interface GigabitEthernet0/2/0
no ip address
shutdown
negotiation auto
!
interface GigabitEthernet0/2/1
no ip address
shutdown
negotiation auto
!
interface GigabitEthernet0
vrf forwarding Mgmt-intf
ip address <omitted>
negotiation auto
cdp enable
!
ip forward-protocol nd
!
control-plane
!
!
privilege exec level 10 show running-config view full
alias exec show-running-config show running-config view full
!
line con 0
stopbits 1
line aux 0
exec-timeout 0 1
no exec
transport output none
stopbits 1
line vty 0 4
login local
!
end
Router#
但是,这确实会产生问题,通过向用户提供此版本命令的访问权限,这不会增加尝试通过设计省略版本来解决的初始安全风险?
作为解决方案的变通方法,为确保安全网络设计的一致性,您可以为运行完整版本的用户创建一个别名, show running-config
命令而不向用户提供访问/知识,如下所示:
Router(config)# alias exec show-running-config show running-config view full
在本示例中, show running-config
是别名,当用户登录到路由器时,他们可以输入此别名而不是命令,并在不知道正在运行的实际命令的情况下接收预期输出。
注意:从16.X版本开始,根据平台的不同,还需要使用命令(config)#file privilege <level>向文件添加权限。
结论
总之,这只是管理性创建不同级别的用户权限访问时如何获得更多控制的一个示例。创建各种权限级别和访问不同命令的选项非常多,以下示例说明了如何确保show only用户在无权访问任何配置命令时仍然能够访问完整的运行配置。
相关信息