Cisco 交换机上的 AAA/TACACS+ 密码总是在出现第二个密码提示时失败

网络工程 思科 思科-ios 啊啊啊
2021-07-07 20:38:18

每当使用 AAA/TACACS+ 登录网络设备时,如果我在用户名提示后粗指密码提示,即使密码正确,第二次密码提示也总是失败。我必须再次等待用户名提示,并且必须立即在第一个密码提示中输入正确的密码。换句话说,任何时候我看到第二个密码提示,它都不起作用。

请参阅下面的消毒交互和配置。

用户访问验证
用户名:用户名
密码:

密码:(这里总是失败)
% 拒绝访问

用户访问验证
用户名:用户名
密码:

连接到第 1 行(站点名称)上的 s-site-rack-agg2.example.net。
s-site-rack-agg2#

说明这种行为的第二个密码提示有什么不同?

我拥有的典型 AAA 和相关配置是:

aaa 新模式
aaa 认证登录默认组 tacacs+ 本地线路
aaa 认证登录 CONSOLE 无
aaa 身份验证启用默认组 tacacs+ 启用
aaa 授权 exec 默认组 tacacs+ 本地 if-authenticated
aaa 授权命令 1 默认组 tacacs+ local if-authenticated
aaa 授权命令 7 默认组 tacacs+ local if-authenticated
aaa 授权命令 15 个默认组 tacacs+ 本地 if-authenticated
aaa 会计执行默认启停组 tacacs+
aaa 记帐命令 0 默认启停组 tacacs+
aaa 记帐命令 1 默认启停组 tacacs+
aaa 记帐命令 7 默认启停组 tacacs+
aaa 记帐命令 15 默认启停组 tacacs+
aaa 会计系统默认启停组 tacacs+
ip tacacs 源接口 Loopback0
tacacs-服务器主机-prmiaryipremoved-单连接
tacacs-服务器主机-secondaryipremoved-单连接
tacacs 服务器超时 10
tacacs 服务器定向请求
tacacs-server key 7 -removed-
线路连接 0
 登录认证控制台
线 vty 0 4
 位置 - 删除 -
 执行超时 60 0
 密码 7 -已删除-
 传输输入 telnet ssh
3个回答

当您尝试此操作时,我会在您的 TACACS+ 服务器上进行调试。

我假设您只想使用 TACACS 身份验证并且仅在无法访问服务器时回退到本地登录?

尝试使用这个:
aaa authentication login default group tacacs+ line
aaa authentication enable default group tacacs+ enable

另请参阅此站点:它有一些很好的示例和解释

http://my.safaribooksonline.com/book/networking/cisco-ios/0596527225/tacacsplus/i13896_ heada _4_2#X2ludGVybmFsX0h0bWxWaWV3P3htbGlkPTA1OTY1MjcyMjUlMkZpNTAzNjNfX2hlYWRhX180XzEmcXVlcnk9

我的猜测是,因为你有“本地”关键字:
aaa authentication login default group tacacs+ local line

TACACS+ 身份验证返回失败,因此路由器尝试进行本地身份验证。我想您应该向我们提供经过line vty消毒的配置。如果你有
line vty 0 15
login local

然后它会做一个用户名/密码认证,否则它会做密码

我认为您的配置非常危险,如果您使用“启用/线路”或“本地”作为后备,您似乎优柔寡断,正确答案是本地的,永远不要使用“启用”,尤其是永远不要使用“线路”来做任何事情(线路是两个-方式“加密”而不是单向散列)。

我会推荐这种配置:

aaa new-model
! uses tacacs, fallsback to local user if tacacs not working
aaa authentication login default group tacacs+ local
! user gets enabled by tacacs or by enable password
aaa authentication enable default group tacacs+ enable
! console user is authorized as well (gets enabled, if such permission)
aaa authorization console
! configuration commands are authorized as well as exec commands (Good to prevent dangerous commands)
aaa authorization config-commands
! user privilege level is recovered from tacacs or from local account
aaa authorization exec default group tacacs+ local
! level 15 commands are authorized (you really only need this) 
aaa authorization commands 15 default group tacacs+ if-authenticated 
! level 1, 15 commands are logged (you really only need these two)
aaa accounting commands 1 default start-stop group tacacs+
aaa accounting commands 15 default start-stop group tacacs+
!
! fallback user consulted only when tacacs is broken
username sikrit privilege 15 secret <password>

'sikrit' 用户将在 tacacs 不工作时使用(如果 TACACS 应答则不能使用)在 VTY 下不需要“线路”密码,因为它从未被咨询过。不需要“启用”密码,因为它永远不会被咨询。如果您想要未启用的备份用户,只需创建另一个具有“权限 1”的用户。
但是,如果您毕竟出于某种原因想使用它,我确实添加了对“启用”的支持。

如果您正在使用 OOB,并且 OOB 访问已经得到保护/认证,您可能希望允许 OOB 用户始终使用本地身份验证,以防万一 TACACS 损坏但 IOS 错误地认为它不是,那么您可以添加类似这样的内容:

aaa authentication login CONSOLE local
!
line con 0
 login authentication CONSOLE

我不确定您的本地设备配置是否应该为此负责,而是您的 TACACS 服务器本身。TACACS 将用户名/密码提示从 TACACS 服务器(以及可能的外部身份存储)代理到设备,因此如果您使用 ACS(例如)并设置它与 AD 通信以进行用户身份验证,您需要将用户名/密码提示视为来自域控制器而不是设备本身。

我最近遇到了一个与 ACS 补丁完全一样的问题 - 同样,我假设您正在使用 ACS 并将其从 AD 中提取以进行用户身份验证/组验证等。Cisco Bug ID 是 CSCtz03211并且基本上 ACS 5.3 每次向设备发送一次“用户名/密码”身份验证尝试都会向 AD 发送多次身份验证尝试。这将导致以下行为:如果用户在第一次尝试时对密码进行了粗指,则会将错误的用户名/密码组合的多个实例发送到 AD 并且用户的帐户实际上被锁定,从而导致随后的登录尝试失败即使用户在第二次尝试时正确输入了他们的用户名/密码(此行为当然会因您在 AD 中的用户帐户上设置的锁定阈值而异)。

只是需要考虑的事情(不了解您的 TACACS 服务器实现)。