如何在 Cisco IOS 上限制用户执行某些命令

网络工程 路由器 思科-ios
2021-07-12 23:23:24

我需要确保 IOS 路由器上的某个用户只能键入特定的命令。我可以使用权限级别来执行此操作,但是每当用户键入“启用”时,他都会立即返回到 15 级权限并即将键入所有命令。我想确保即使他输入“启用”,他仍然只能输入我允许的特定命令。我也尝试过使用基于角色的 cli,但遇到了同样的问题。我不想使用任何外部身份验证服务器。

谢谢!

2个回答

您已经知道自己问题的大部分答案 - 您需要配置用户可以在特定权限级别运行的命令。enable没有权限级别参数默认为权限级别 15,它有权运行所有命令。您需要做的两件事是:

  1. 更改默认启用密码,使用户无法再访问它,因此无法达到权限级别 15。

  2. 将用户在登录时的默认权限级别设置为与您更改用户可以运行的所需命令相同的权限级别:

Router(config)#username joe privilege <x> password foobar

其中 X 是所需命令集的权限级别。

编辑:我应该指出这实际上并没有提供真正的基于用户的命令授权,它只提供基于权限级别的授权,因为命令本身一次只绑定到一个权限级别,所以它实际上是一个路由器范围的更改. 它旨在以分层方式工作;每个权限级别都可以运行该级别及其以下所有级别的命令。如果您想要真正的基于用户的授权,您需要某种类型的 AAA 服务器(请参阅下面的注释)。

从技术上讲,您还可以将enable命令的权限级别更改为高于用户的权限级别,这样他们甚至无法选择运行它:

Router(config)#privilege exec level <x> enable

这当然假设您不希望用户能够运行任何配置命令。

另一种选择是确保当用户登录并键入时,enable他们需要指定他们的权限级别,而不是没有权限级别,默认为 15。

Router>enable <x>

显然,如果您愿意,您可以为所有 16 个权限级别指定启用密码。

我的最后一点是,如果没有外部 AAA 服务器,所有这一切都是一个巨大的痛苦。有许多开源 TACACS+ 实现可用,它们只需要初始设置的成本,但它们使做这样的事情有些微不足道,而且它是集中式的,因此如果您有多个路由器,则不必一直重复相同的命令您管理的每台设备上的特权跳绳。这就是 AAA 服务器首先存在的原因,因此您不想使用它的要求没有多大意义。

如果您将设备配置为将 TACACS 用于 AAA,则可以在 Cisco ACS 中限制命令。