TACACS+ 身份验证
Junos OS 支持 TACACS+ 对网络设备上的用户进行集中身份验证。要在设备上使用 TACACS+ 身份验证,您(网络管理员)必须配置有关网络上一个或多个 TACACS+ 服务器的信息。您还可以在设备上配置 TACACS+ 计费,以收集有关登录或注销 LAN 的用户的统计数据,并将数据发送到 TACACS+ 计费服务器。
配置 TACACS+ 身份验证
TACACS+ 身份验证是一种对尝试访问网络设备的用户进行身份验证的方法。
要配置 TACACS+,请执行以下操作:
配置 TACACS+ 服务器详细信息
要在设备上使用 TACACS+ 身份验证,请配置有关网络上一个或多个 TACACS+ 服务器的信息,方法是在层次结构级别为每个 [edit system]
TACACS+ 服务器包含一个tacplus-server
语句。设备将按配置顺序查询 TACACS+ 服务器。如果主服务器(配置的第一个服务器)不可用,设备将尝试联系列表中的每个服务器,直到收到响应。
网络设备可以将经过 TACACS+ 身份验证的用户映射到本地定义的用户帐户或用户模板帐户,以确定授权。默认情况下,在以下情况下, Junos OS 会将经过 TACACS+ 身份验证的用户分配给用户模板帐户 remote
(如果已配置):
-
经过身份验证的用户未在本地设备上配置用户帐户。
-
TACACS+ 服务器未将用户分配到本地用户模板,或者服务器分配的模板未在本地设备上配置。
TACACS+ 服务器可以将经过身份验证的用户分配给其他用户模板,以向该用户授予不同的管理权限。用户在 CLI 中保留相同的登录名,但从分配的模板继承登录类、访问权限和有效用户 ID。如果经过 TACACS+ 身份验证的用户未映射到任何本地定义的用户帐户或用户模板,并且未配置模板 remote
,则身份验证将失败。
remote
用户名是一个特殊情况Junos OS,必须始终为小写。它充当由远程服务器进行身份验证但在设备上没有本地配置的用户帐户的用户的模板。 Junos OS 将 remote
模板的权限应用于没有本地定义帐户的经过身份验证的用户。映射到模板的 remote
所有用户都在同一登录类中。
由于远程身份验证是在多台设备上配置的,因此通常在配置组内进行配置。此处显示的步骤位于名为 global
的配置组中。使用配置群组是可选的。
要配置 TACACS+ 服务器的身份验证,请执行以下操作:
配置 TACACS+ 以使用管理实例
默认情况下, Junos OS 通过默认路由实例路由 TACACS+ 的身份验证、授权和记帐数据包。您还可以通过非默认 VRF 实例中的管理接口路由 TACACS+ 数据包。
要通过 mgmt_junos
管理实例路由 TACACS+ 数据包,请执行以下操作:
-
mgmt_junos
启用管理实例。[edit system] user@host# set management-instance
-
routing-instance mgmt_junos
为 TACACS+ 认证服务器和 TACACS+ 记帐服务器配置语句(如果已配置)。[edit system] user@host# set tacplus-server server-address routing-instance mgmt_junos user@host# set accounting destination tacplus server server-address routing-instance mgmt_junos
为多个 TACACS+ 服务器配置相同的身份验证服务
您可以通过在 和 [edit system tacplus-server]
[edit system tacplus-options]
层次结构级别包含语句,为多个 TACACS+ 服务器配置相同的身份验证服务。
要将同一身份验证服务分配给多个 TACACS+ 服务器,请执行以下操作:
以下示例说明如何为多个 TACACS+ 服务器配置相同的身份验证服务:
[edit system] tacplus-server { 10.2.2.2 secret "$ABC123"; ## SECRET-DATA 10.3.3.3 secret "$ABC123"; ## SECRET-DATA } tacplus-options { service-name bob; }
配置瞻博网络供应商特定的 TACACS+ 属性
Junos OS 可以将经过 TACACS+ 身份验证的用户映射到本地定义的用户帐户或用户模板帐户,这决定了授权。您还可以通过在 TACACS+ 服务器上定义瞻博网络供应商特定的 TACACS+ 属性,选择性地配置用户的访问权限。您可以按用户在 TACACS+ 服务器配置文件中定义属性。对用户进行身份验证后,网络设备通过 TACACS+ 服务器的授权请求检索这些属性。
要指定这些属性,请在 service
TACACS+ 服务器配置文件中包含以下形式的语句:
service = junos-exec { local-user-name = <username-local-to-router> allow-commands = "<allow-commands-regex>" allow-configuration-regexps = "<allow-configuration-regex>" deny-commands = "<deny-commands-regex>" deny-configuration-regexps = "<deny-configuration-regex>" }
可以在语句或group
语句中user
定义service
语句。
配置 TACACS+ 授权配置文件的定期刷新
将运行 Junos OS 的设备配置为使用 TACACS+ 服务器进行身份验证时,设备会提示用户输入登录信息,这些信息由 TACACS+ 服务器验证。成功对用户进行身份验证后,网络设备会向 TACACS+ 服务器发送授权请求,以获取用户的授权配置文件。授权配置文件指定经过身份验证的用户或设备的访问权限。
TACACS+ 服务器将授权配置文件作为授权回复消息的一部分发送。在 TACACS+ 服务器上配置的远程用户将映射到在运行 Junos OS的设备上配置的本地用户或用户模板。 Junos OS 结合了用户的远程授权配置文件和本地配置的授权配置文件,后者在 [edit system login class
] 层次结构级别进行配置。
默认情况下,授权请求和回复消息的交换仅在身份验证成功后发生一次。您可以配置设备,以便定期 Junos OS 从 TACACS+ 服务器获取远程授权配置文件,并刷新本地存储的授权配置文件。此定期刷新可确保本地设备反映授权参数中的任何更改,而无需用户重新启动身份验证过程。
要启用授权配置文件的定期刷新,必须设置本地设备检查在 TACACS+ 服务器上远程配置的授权配置文件的时间间隔。如果远程授权配置文件发生更改,设备将从 TACACS+ 服务器获取授权配置文件以及在登录类层次结构下配置的授权配置文件。设备通过组合远程和本地配置的授权配置文件来刷新存储在本地的授权配置文件。
您可以在运行的 Junos OS 设备上本地配置刷新时间间隔,也可以直接在 TACACS+ 服务器上配置刷新时间间隔。时间间隔范围为 15 到 1440 分钟。
使用以下准则确定哪个时间间隔配置优先:
- 如果仅在 TACACS+ 服务器上配置刷新时间间隔,或者仅在运行 Junos OS的设备上配置刷新时间间隔,则配置的值将生效。
-
如果在 TACACS+ 服务器和正在运行 Junos OS的设备上都配置了刷新时间间隔,则在 TACACS+ 服务器上配置的值优先。
-
如果未在 TACACS+ 服务器或正在运行 Junos OS的设备上配置刷新时间间隔,则不会发生定期刷新。
-
如果在 TACACS+ 服务器上配置的刷新时间间隔超出范围或无效,则本地配置的刷新时间间隔将生效。如果未在本地配置刷新时间间隔,则不会发生定期刷新。
设置定期刷新时间间隔后,如果用户在本地设备发送授权请求之前更改了刷新间隔,则更新后的刷新间隔将在下一次立即定期刷新后生效。
示例:配置 TACACS+ 服务器以进行系统身份验证
此示例通过 TACACS+ 服务器配置系统身份验证。
要求
准备工作:
-
执行初始设备配置。请参阅适用于您设备的入门指南。
-
在您的网络上至少设置一个 TACACS+ 服务器。
概述
在此示例中,您将添加一个 IP 地址为 172.16.98.1 的新 TACACS+ 服务器。您可以将 TACACS+ 服务器的共享密钥密码指定为 Tacacssecret1。设备将密钥作为加密值存储在配置数据库中。最后,指定设备在 TACACS+ 服务器请求中使用的源地址。在大多数情况下,您可以使用设备的环路地址,在本例中为 10.0.0.1。
您可以在网络设备上配置对多种用户身份验证方法的支持,例如本地密码身份验证、TACACS+ 和 RADIUS。配置多种身份验证方法时,可以确定设备尝试不同方法的顺序。在此示例中,您将设备配置为首先使用 TACACS+ 身份验证服务,如果失败,则尝试本地密码身份验证。
经过 TACACS+ 身份验证的用户必须映射到网络设备上的本地用户帐户或本地用户模板帐户,这将确定授权。默认情况下,如果经过 TACACS+ 身份验证的用户未映射到本地用户帐户或特定用户模板,则会将该用户分配到 remote
用户模板(如果已配置)。此示例配置 remote
用户模板。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后进入 commit
配置模式。
set system tacplus-server 172.16.98.1 set system tacplus-server 172.16.98.1 secret Tacacssecret1 set system tacplus-server 172.16.98.1 source-address 10.0.0.1 set system authentication-order [tacplus password] set system login user remote class operator
分步过程
要配置 TACACS+ 服务器以进行系统身份验证,请执行以下操作:
-
添加新的 TACACS+ 服务器并设置其 IP 地址。
[edit system] user@host# set tacplus-server 172.16.98.1
-
指定 TACACS+ 服务器的共享密钥(密码)。
[edit system] user@host# set tacplus-server 172.16.98.1 secret Tacacssecret1
-
将设备的环路地址指定为源地址。
[edit system] user@host# set tacplus-server 172.16.98.1 source-address 10.0.0.1
-
指定设备的身份验证顺序,并包括该
tacplus
选项。[edit system] user@host# set authentication-order [tacplus password]
remote
配置用户模板及其登录类。[edit system] user@host# set login user remote class operator
结果
在配置模式下,输入 show system
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。
以下输出仅包含与此示例相关的配置层次结构部分:
[edit] user@host# show system login { user remote { class operator; } } authentication-order [ tacplus password ]; tacplus-server { 172.16.98.1 { secret "$9$ABC123"; ## SECRET-DATA source-address 10.0.0.1; } }
配置设备后,进入 commit
配置模式。
瞻博网络供应商特定的 TACACS+ 属性
Junos OS 支持在 TACACS+ 服务器上配置瞻博网络 TACACS+ 供应商特定属性 (VSA)。 表 1 列出了受支持的瞻博网络 VSA。
某些属性接受 POSIX 1003.2 中定义的扩展正则表达式。如果正则表达式包含任何空格、运算符或通配符,请用引号将其括起来。有关详细信息,请参阅:
名称 |
Description |
长度 |
字符串 |
---|---|---|---|
|
指示用户登录到设备时分配给此用户的用户模板的名称。 |
≥3 |
一个或多个包含可打印 ASCII 字符的八位位组。 |
|
包含一个扩展的正则表达式,除了用户的登录类权限位授权的那些命令之外,它还允许用户运行命令。 |
≥3 |
一个或多个包含可打印 ASCII 字符的八位位组,形式为扩展正则表达式。 |
allow-commands-regexps |
包含一个扩展的正则表达式,除了用户的登录类权限位授权的那些命令之外,它还允许用户运行命令。 |
≥3 |
一个或多个包含可打印 ASCII 字符的八位位组,形式为扩展正则表达式。 |
|
包含一个扩展的正则表达式,除了由用户的登录类权限位授权的那些语句之外,它还允许用户查看和修改配置语句。 |
≥3 |
一个或多个包含可打印 ASCII 字符的八位位组,形式为扩展正则表达式。 |
allow-configuration-regexps |
包含一个扩展的正则表达式,除了由用户的登录类权限位授权的那些语句之外,它还允许用户查看和修改配置语句。 |
≥3 |
一个或多个包含可打印 ASCII 字符的八位位组,形式为扩展正则表达式。 |
|
包含一个扩展正则表达式,该表达式拒绝用户运行由用户的登录类权限位授权的命令的权限。 |
≥3 |
一个或多个包含可打印 ASCII 字符的八位位组,形式为扩展正则表达式。 |
deny-commands-regexps |
包含一个扩展正则表达式,该表达式拒绝用户运行由用户的登录类权限位授权的命令的权限。 |
≥3 |
一个或多个包含可打印 ASCII 字符的八位位组,形式为扩展正则表达式。 |
|
包含一个扩展正则表达式,该表达式拒绝用户查看或修改由用户的登录类权限位授权的配置语句的权限。 |
≥3 |
一个或多个包含可打印 ASCII 字符的八位位组,形式为扩展正则表达式。 |
deny-configuration-regexps |
包含一个扩展正则表达式,该表达式拒绝用户查看或修改由用户的登录类权限位授权的配置语句的权限。 |
≥3 |
一个或多个包含可打印 ASCII 字符的八位位组,形式为扩展正则表达式。 |
|
包含服务器用于指定用户权限的信息。 注:
当 TACACS+ 服务器定义 |
≥3 |
一个或多个包含可打印 ASCII 字符的八位位组。 请参阅 访问权限级别概述。 |
|
指示用于对用户进行身份验证的身份验证方法(本地数据库或 TACACS+ 服务器)。如果使用本地数据库对用户进行身份验证,则属性值将显示“local”。如果使用 TACACS+ 服务器对用户进行身份验证,则属性值将显示“远程”。 |
≥5 |
一个或多个包含可打印 ASCII 字符的八位位组。 |
|
指示已建立会话的源端口号。 |
整数的大小 |
整数 |
在 RADIUS 或 TACACS+ 服务器上使用正则表达式允许或拒绝命令
Junos OS 可以将经过 RADIUS 和 TACACS+ 身份验证的用户映射到本地定义的用户帐户或用户模板帐户,后者定义用户的访问权限。您还可以通过在相应的身份验证服务器上定义瞻博网络 RADIUS 和 TACACS+ 供应商特定属性 (VSA),选择性地配置用户的访问权限。
用户的登录类定义了一组权限,该权限确定用户有权执行哪些操作模式和配置模式命令,以及用户可以查看和修改哪些配置区域。登录类还可以定义正则表达式,这些正则表达式允许或拒绝用户执行某些命令或查看和修改配置的某些区域,以及权限标志授权的内容。登录类可以包含以下语句来定义用户授权:
-
permissions
-
allow-commands
-
allow-commands-regexps
-
allow-configuration
-
allow-configuration-regexps
-
deny-commands
-
deny-commands-regexps
-
deny-configuration
-
deny-configuration-regexps
同样,RADIUS 或 TACACS+ 服务器配置可以使用瞻博网络 VSA 来定义确定用户访问权限的特定权限或正则表达式。有关受支持的 RADIUS 和 TACACS+ VSA 的列表,请参阅以下内容:
您可以将 RADIUS 或 TACACS+ 服务器上的用户权限定义为空格分隔值的列表。
-
RADIUS 服务器使用以下属性和语法:
Juniper-User-Permissions += "flag1 flag2 flag3",
例如:
Juniper-User-Permissions += "interface interface-control configure",
-
TACACS+ 服务器使用以下属性和语法:
user-permissions = "flag1 flag2 flag3"
例如:
user-permissions = "interface interface-control configure"
RADIUS 或 TACACS+ 服务器还可以定义瞻博网络 VSA,这些 VSA 使用单个扩展正则表达式(如 POSIX 1003.2 中所定义)来允许或拒绝用户执行某些命令或查看和修改配置区域的能力。您可以将多个命令或配置层次结构括在括号中,并使用管道符号将它们分隔开。如果正则表达式包含任何空格、运算符或通配符,请用引号将其括起来。在本地和远程配置授权参数时,设备会将 TACACS+ 或 RADIUS 授权期间收到的正则表达式与本地设备上定义的任何正则表达式合并。
-
RADIUS 服务器使用以下属性和语法:
Juniper-Allow-Commands += "(cmd1)|(cmd2)|(cmdn)", Juniper-Deny-Commands += "(cmd1)|(cmd2)|(cmdn)", Juniper-Allow-Configuration += "(config1)|(config2)|(confign)", Juniper-Deny-Configuration += "(config1)|(config2)|(confign)",
例如:
Juniper-Allow-Commands += "(test)|(ping)|(quit)", Juniper-Deny-Commands += "(request)|(restart)", Juniper-Allow-Configuration += "(groups re0)|(system radius-server)", Juniper-Deny-Configuration += "(system radius-options)|(system accounting)",
-
TACACS+ 服务器使用以下属性和语法:
allow-commands = "(cmd1)|(cmd2)|(cmdn)" deny-commands = "(cmd1)|(cmd2)|(cmdn)" allow-configuration = "(config1)|(config2)|(confign)" deny-configuration = "(config1)|(config2)|(confign)"
例如:
allow-commands = "(test)|(ping)|(quit)" deny-commands = "(request)|(restart)" allow-configuration = "(groups re0)|(system tacplus-server)" deny-configuration = "(system tacplus-options)|(system accounting)"
RADIUS 和 TACACS+ 服务器还支持配置与可在本地设备上配置的相同 *-regexps
语句相对应的属性。*-regexps
TACACS+ 属性和 *-Regexps
RADIUS 属性使用与先前属性相同的正则表达式语法,但它们使您能够使用变量配置正则表达式。
-
RADIUS 服务器使用以下属性和语法:
Juniper-Allow-Configuration-Regexps += "(config1)|(config2)|(confign)", Juniper-Deny-Configuration-Regexps += "(config1)|(config2)|(confign)",
-
TACACS+ 服务器使用以下属性和语法:
allow-commands-regexps = "(cmd1)|(cmd2)|(cmdn)" deny-commands-regexps = "(cmd1)|(cmd2)|(cmdn)" allow-configuration-regexps = "(config1)|(config2)|(confign)" deny-configuration-regexps = "(config1)|(config2)|(confign)"
例如,TACACS+ 服务器配置可以定义以下属性:
allow-commands-regexps = "(show cli .*)|(ping 10.1.1..*)" deny-commands-regexps = "(configure .*)|(edit)|(commit)|(rollback .*)"
在 RADIUS 或 TACACS+ 服务器上,您还可以使用简化的语法定义属性,其中您可以在单独的行上指定每个单独的表达式。
对于 RADIUS 服务器,请使用以下语法指定各个正则表达式:
Juniper-User-Permissions += "permission-flag1", Juniper-User-Permissions += "permission-flag2", Juniper-User-Permissions += "permission-flagn", Juniper-Allow-Commands += "cmd1", Juniper-Allow-Commands += "cmd2", Juniper-Allow-Commands += "cmdn", Juniper-Deny-Commands += "cmd1", Juniper-Deny-Commands += "cmd2", Juniper-Deny-Commands += "cmdn", Juniper-Allow-Configuration += "config1", Juniper-Allow-Configuration += "config2", Juniper-Allow-Configuration += "confign", Juniper-Deny-Configuration += "config1", Juniper-Deny-Configuration += "config2", Juniper-Deny-Configuration += "confign",
对于 TACACS+ 服务器,请使用以下语法指定各个正则表达式:
user-permissions1 = "permission-flag1" user-permissions2 = "permission-flag2" user-permissionsn = "permission-flagn" allow-commands1 = "cmd1" allow-commands2 = "cmd2" allow-commandsn = "cmdn" deny-commands1 = "cmd1" deny-commands2 = "cmd2" deny-commandsn = "cmdn" allow-configuration1 = "config1" allow-configuration2 = "config2" allow-configurationn = "confign" deny-configuration1 = "config1" deny-configuration2 = "config2" deny-configurationn = "confign"
-
在 TACACS+ 服务器语法中,数值 1 到 n 必须是唯一的,但不必是连续的。例如,以下语法有效:
allow-commands1="cmd1" allow-commands3="cmd3" allow-commands2="cmd2" deny-commands3="cmd3" deny-commands2="cmd2" deny-commands1="cmd1"
-
RADIUS 或 TACACS+ 服务器对单个正则表达式行的数量施加了限制。
-
发出
show cli authorization
命令时,命令输出会在一行中显示正则表达式,即使您在单独的行上指定每个表达式也是如此。
用户可以通过发出 show cli authorization
操作模式命令来验证其类、权限以及命令和配置授权。
user@host> show cli authorization
在网络设备上本地配置授权参数以及在 RADIUS 或 TACACS+ 服务器上远程配置授权参数时,设备会将在 TACACS+ 或 RADIUS 授权期间收到的正则表达式与任何本地配置的正则表达式合并。如果最终表达式包含语法错误,则总体结果是无效的正则表达式。
配置 TACACS+ 系统记帐
您可以在设备上配置 TACACS+ 记帐,以收集有关登录或注销 LAN 的用户的统计数据,并将这些数据发送到 TACACS+ 记帐服务器。统计数据可用于常规网络监控、分析和跟踪使用模式,或根据会话持续时间或访问的服务类型向用户计费。
要配置 TACACS+ 记帐,请指定:
-
一个或多个 TACACS+ 计费服务器,用于从设备接收统计数据
-
要收集的会计数据类型
您可以将同一服务器用于 TACACS+ 记帐和身份验证,也可以使用单独的服务器。您可以指定 TACACS+ 计费服务器的列表。设备将按配置顺序查询服务器。如果主服务器(配置的第一个服务器)不可用,设备将尝试联系列表中的每个服务器,直到收到响应。
启用 TACACS+ 计费后,作为 TACACS+ 客户端的瞻博网络设备可以向 TACACS+ 服务器通知用户活动,例如软件登录、配置更改和交互式命令。
配置 TACACS+ 服务器记帐
要配置 TACACS+ 服务器记帐,请执行以下操作:
变更历史表
是否支持某项功能取决于您使用的平台和版本。 使用 Feature Explorer 查看您使用的平台是否支持某项功能。