TACACS+ 身份验证
Junos OS 演化版 支持 TACACS+,用于对网络设备上的用户进行集中身份验证。要在设备上使用 TACACS+ 身份验证,您(网络管理员)必须配置有关网络上一个或多个 TACACS+ 服务器的信息。您还可以在设备上配置 TACACS+ 计费,以收集有关登录或注销 LAN 的用户的统计数据,并将数据发送到 TACACS+ 计费服务器。
配置 TACACS+ 身份验证
TACACS+ 身份验证是一种对尝试访问网络设备的用户进行身份验证的方法。
要配置 TACACS+,请执行以下操作:
配置 TACACS+ 服务器详细信息
要在设备上使用 TACACS+ 身份验证,请通过在层次结构级别为[edit system]每台 TACACS+ 服务器包含一个tacplus-server语句来配置有关网络上一个或多个 TACACS+ 服务器的信息。设备按配置顺序查询 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+ 数据包。
要通过管理实例路由 TACACS+ 数据包,请执行以下操作 mgmt_junos :
-
启用
mgmt_junos管理实例。[edit system] user@host# set management-instance
-
为 TACACS+ 身份验证服务器和 TACACS+ 计费服务器(如果已配置)配置
routing-instance mgmt_junos语句。[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+ 服务器的授权请求检索这些属性。
要指定这些属性,请在 TACACS+ 服务器配置文件中包含 service 以下形式的语句:
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 Evolved 的设备配置为使用 TACACS+ 服务器进行身份验证时,设备会提示用户输入登录信息,该信息由 TACACS+ 服务器进行验证。用户成功通过身份验证后,网络设备会向 TACACS+ 服务器发送授权请求,以获取用户的授权配置文件。授权配置文件用于指定经过身份验证的用户或设备的访问权限。
TACACS+服务器将授权配置文件作为授权REPLY消息的一部分发送。在 TACACS+ 服务器上配置的远程用户映射到运行 Junos OS 演化版的设备上配置的本地用户或用户模板。 Junos OS 演化版 结合了用户的远程授权配置文件和本地配置的授权配置文件,后者在 [edit system login class] 层次结构级别进行配置。
默认情况下,授权请求和回复消息的交换仅在成功身份验证后发生一次。您可以配置设备,以便 Junos OS 演化 版定期从 TACACS+ 服务器获取远程授权配置文件,并刷新本地存储的授权配置文件。这种定期刷新可确保本地设备反映授权参数中的任何更改,而无需用户重新启动身份验证过程。
要启用授权配置文件的定期刷新,您必须设置本地设备检查在 TACACS+ 服务器上远程配置的授权配置文件的时间间隔。如果远程授权配置文件发生更改,设备将从 TACACS+ 服务器获取授权配置文件和在登录类层次结构下配置的授权配置文件。通过组合远程和本地配置的授权配置文件,设备刷新存储在本地的授权配置文件。
您可以在运行 Junos OS Evolved 的设备上本地配置刷新时间间隔,也可以直接在 TACACS+ 服务器上配置刷新时间间隔。时间间隔可以从 15 到 1440 分钟不等。
请遵循以下准则,确定哪个时间间隔配置优先:
- 如果仅在 TACACS+ 服务器上配置刷新时间间隔,或者仅在运行 Junos OS 演化版的设备上配置刷新时间间隔,则配置的值将生效。
-
如果在 TACACS+ 服务器和运行 Junos OS Evolved 的设备上均配置了刷新时间间隔,则在 TACACS+ 服务器上配置的值优先。
-
如果在 TACACS+ 服务器或运行 Junos OS Evolved 的设备上未配置刷新时间间隔,则不会进行定期刷新。
-
如果 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 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以便与网络配置匹配,将命令复制并粘贴到层次结构级别的 [edit] CLI 中,然后进入 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 中所定义。如果正则表达式包含任何空格、运算符或通配符,请用引号将其括起来。有关详细信息,请参阅:
| 姓名 |
描述 |
长度 |
字符串 |
|---|---|---|---|
|
|
指示在用户登录设备时分配给此用户的用户模板的名称。 |
≥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+服务器)。如果使用本地数据库对用户进行身份验证,则属性值显示“本地”。如果用户使用 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+ 服务器还可以定义使用单个扩展正则表达式(如 POSIX 1003.2 中所定义)的瞻博网络 VSA,以允许或拒绝用户执行某些命令或查看和修改配置区域。将多个命令或配置层次结构括在括号中,并使用管道符号将它们分隔开。如果正则表达式包含任何空格、运算符或通配符,请用引号将其括起来。在本地和远程配置授权参数时,设备会将 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+ 服务器计费,请执行以下操作: