Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos OS 用户访问权限

Junos OS 允许您授予对命令和配置层次结构级别和语句的访问权限。这使用户能够仅执行这些命令,并仅配置和查看他们拥有访问权限的那些语句。您可以使用扩展的正则表达式来指定拒绝或允许用户使用的操作模式命令、配置语句和层次结构。这可防止未经授权的用户执行或配置可能导致网络损坏的敏感命令和语句。有关详细信息,请阅读本主题。

了解 Junos OS 访问权限级别

每个顶级 CLI 命令和每个配置语句都有与其相关的访问权限级别。用户只能执行这些命令,并且只能配置和查看他们具有访问权限的那些语句。每个登录类的访问权限由一个或多个权限标志定义。

对于每个登录类,您可以明确拒绝或允许使用在permissions语句中指定的权限级别上允许或不允许的操作和配置模式命令。

以下各节提供有关权限的附加信息:

Junos OS 登录类权限标志

权限标志用于授予用户访问操作模式命令和配置层次结构级别和语句的权限。在层级的用户登录类上指定特定权限标志后,即允许用户访问相应的命令和配置 [edit system login class] 层次结构级别和语句。要授予对所有命令和配置语句的访问权, all请使用权限标志。

注:

列出的每个命令都将该命令以及与该命令相结合的所有子指令表示为前缀。列出的每条配置语句均表示该标记授予访问权的配置层次结构的顶部。

permissions语句指定中表 1所列的一个或多个权限标志。权限标志不具有累积性,因此对于每个类,您必须列出所需的所有view权限标志,包括configure显示信息和进入配置模式。配置各部分的两种形式的权限控制包括:

  • "普通"形式 — 为该权限类型提供只读功能。例如interface

  • -control —提供该许可类型的读写功能的形式。例如interface-control

对于授予对配置层次结构级别和语句的访问权的权限标志,标记将向该配置授予只读权限。例如, interface权限标记授予对层次结构级别的[edit interfaces]只读访问权限。标志-control的形式授予对该配置的读写访问权限。使用上面的示例, interface-control[edit interfaces]层次结构级别授予读写访问权限。

表 1列出了可通过在permissions[edit system login class class-name]层次结构级别包含语句来配置的 Junos OS 登录类权限标志。

权限标志将授予一组特定的访问权限。每个权限标志都列有操作模式命令和配置层次结构级别以及该标志为其授予访问权限的语句。

表 1: 登录类权限标志

权限标志

Description

access

可在配置模式和 show configuration 操作模式命令中查看访问配置。

接入控制

可以在[edit access]层次结构级别查看和配置访问信息。

管理员

可在配置模式下使用show configuration操作模式命令查看用户帐户信息。

管理控制

可以查看用户帐户信息并在[edit system]层次结构级别配置。

全控制

可以查看用户帐户并在[edit system login]层次结构级别配置它们。

all

可访问所有操作模式命令和配置模式命令。可以修改所有配置层次结构级别中的配置。

清楚

可以清除(删除)通过使用这些clear命令存储在各种网络数据库中的网络所了解的信息。

configure

可使用configure命令进入配置模式。

控制点

可执行所有控制级别操作 — 使用权限标记配置 -control 的所有操作。

字段中)

可以查看字段调试命令。为调试支持而保留。

防火墙

可以在配置模式中查看防火墙过滤器配置。

防火墙控制

可在[edit firewall]层次结构级别查看和配置防火墙过滤器信息。

存放

可对可移动媒体进行读写。

流点击

可以在配置模式中查看流量分路配置。

流点击控制

可在配置模式中查看流分路配置,并可在[edit services flow-tap]层次结构级别配置流点击配置信息。

流点击-操作

可对路由器或交换机进行分流式请求。例如,动态任务控制协议(DTCP)客户端必须具有flow-tap-operation对 Junos OS 作为管理用户进行身份验证的权限。

注:

权限标志中不包含此flow-tap-operation选项。 all-control

idp-profiler-操作

可以查看探查器数据。

接口

可在配置模式和show configuration操作模式命令中查看接口配置。

接口控制

可查看机箱、服务等级(CoS)、组、转发选项和接口配置信息。可在以下层次结构级别编辑配置:

  • [edit chassis]

  • [edit class-of-service]

  • [edit groups]

  • [edit forwarding-options]

  • [edit interfaces]

维护

可以执行系统维护,包括在路由器或交换机上启动本地外壳并使用su root命令在外壳中成为超级用户,并可使用request system命令暂停和重新启动路由器或交换机。

网络

可使用pingsshtelnet、和traceroute命令访问网络。

pgcp 会话镜像

可以查看pgcp会话镜像配置。

pgcp-会话镜像控制

可以修改pgcp会话镜像配置。

reset

可使用restart命令重新启动软件进程,并可配置在[edit system processes]层次结构级别上是启用还是禁用软件进程。

复原

可以使用rollback命令返回到以前提交的配置,而不是最近提交的设置。

路由

可以查看配置和操作模式中的常规路由、路由协议和路由策略配置信息。

路由控制

可以查看常规路由、路由协议和路由策略配置信息,并且可以在层次[edit routing-options]结构级别、层次[edit protocols]结构级别上的路由协议以及[edit policy-options]层次结构级别的路由策略中配置常规路由。

秘密

可以查看配置中的密码和其他身份验证密钥。

机密控制

可以查看配置中的密码和其他身份验证密钥,并可在配置模式中修改。

安全

可在配置模式和show configuration操作模式命令中查看安全配置。

安全控制

可以在[edit security]层次结构级别查看和配置安全信息。

可以使用start shell命令在路由器或交换机上启动本地 shell。

snmp

可以在配置和操作模式中查看简单网络管理协议(SNMP)配置信息。

snmp 控制

可以查看 SNMP 配置信息,并可修改[edit snmp]层次结构级别的 snmp 配置。

系统

可以在配置和操作模式中查看系统级信息。

系统控制

可以查看系统级配置信息并在[edit system]层次结构级别配置。

追踪

可以查看跟踪文件设置和配置跟踪文件属性。

跟踪控制

可修改跟踪文件设置并配置跟踪文件属性。

观看

可以使用各种命令显示当前系统级、路由表以及协议特定的值和统计信息。无法查看机密配置。

视图-配置

可以查看不包括机密、系统脚本和事件选项的所有配置。

注:

只有拥有maintenance权限的用户才能查看提交脚本、op 脚本或事件脚本配置。

允许或拒绝 Junos OS 登录类的个别命令

默认情况下,所有顶级 CLI 命令都具有关联的访问权限级别。用户只能执行这些命令,而只查看他们具有访问权限的那些语句。对于每个登录类,您可以明确拒绝或允许使用在permissions语句中指定的权限级别上允许或不允许的操作和配置模式命令。

权限标志用于授予用户访问操作模式命令和配置层次结构级别和语句的权限。在层级的用户登录类上指定特定权限标志后,即允许用户访问相应的命令和配置 [edit system login class] 层次结构级别和语句。要授予对所有命令和配置语句的访问权, all请使用权限标志。对于授予对配置层次结构级别和语句的访问权的权限标志,标记将向该配置授予只读权限。例如, interface权限标记授予对层次结构级别的[edit interfaces]只读访问权限。标志-control的形式授予对该配置的读写访问权限。使用上面的示例, interface-control[edit interfaces]层次结构级别授予读写访问权限。

  • all启用了rollbackrollback权限标记的用户发出命令时,登录类权限位优先于扩展正则表达式。

  • 用于为 RADIUS 和 TACACS + 服务器上的用户提供和拒绝命令的表达式已得到简化。您可以将每个命令指定为一个单独的allow-commands=cmd1 cmd2 ... cmdn表达式,而不是使用多个命令的单个长表达式()。此新语法allow-configuration对、 deny-configurationallow-commandsdeny-commands、、和所有用户权限位有效。

  • 用户在指定扩展load override正则表达式时无法发出命令。用户只能发出mergereplacepatch配置命令。

  • 如果您允许和拒绝相同的命令,权限allow-commands将优先于由指定的权限deny-commands。例如,如果包括allow-commands "request system software add" and deny-commands "request system software add",则允许登录类用户使用request system software add命令安装软件。

  • allow-commands的正则表达式deny-commands还可以commit包含、 loadrollbacksavestatus、、、和update命令。

  • 如果为allow-commands某个命令的两个不同deny-commands变体指定和的正则表达式,则始终执行最长匹配。

    allow-commands例如,如果您为commit-synchronize命令指定正则表达式,将命令与正则表达式deny-commands一起使用commit ,则分配给此类登录类的用户将能够发出commit synchronize命令,而不是commit命令。这是因为commit-synchronize是与进行和commitcommit-synchronize之间的最长匹配。 allow-commands

    同样,如果使用allow-commandscommit命令和正则表达式deny-commandscommit-synchronize指定正则表达式,则分配给此类登录类的用户将能够发出commit命令,但不能发送commit-synchronize命令。这是因为commit-synchronize是与进行和commitcommit-synchronize之间的最长匹配。 deny-commands

示例:使用访问权限级别配置用户权限

本示例说明如何查看用户帐户的权限,以及如何配置用户权限以及登录类的访问权限。这使用户能够仅执行这些命令,并仅配置和查看他们拥有访问权限的那些语句。这可防止未经授权的用户执行或配置可能导致网络损坏的敏感命令和语句。

要求

此示例使用以下硬件和软件组件:

  • 一个瞻博网络设备

  • 一个 TACACS + (或 RADIUS)服务器

  • 在瞻博网络设备上运行 Junos OS 生成

开始之前:

  • 在设备与 TACACS + 服务器之间建立连接。

    有关配置 TACACS + 服务器的信息,请参阅配置 tacacs + 身份验证

  • 在瞻博网络设备上至少配置一个分配给登录类的用户。一个登录类可以有多个,每个都有不同的权限配置,并且设备上有多个用户。

概述

每个顶级命令行界面(CLI)命令和 Junos OS 中的每个配置语句都具有与其关联的访问权限级别。对于每个登录类,您可以明确拒绝或允许使用在权限级别允许或不允许的操作和配置模式命令。用户只能执行这些命令,并且只能配置和查看他们具有访问权限的那些语句。要配置访问权限级别,请将permissions语句包含在[edit system login class class-name]层次结构级别。

每个登录类的访问权限由permissions语句中指定的一个或多个权限标志定义。权限标志用于授予用户对操作模式命令、语句和配置层次结构的访问权限。权限标志不具有累积性,因此对于每个登录类,您必须列出所需的所有view权限标志,包括configure显示信息和进入配置模式。通过指定用户登录类上的特定权限标志,您将授予用户访问相应命令、语句和配置层次结构的权限。要授予对所有命令和配置语句的访问权, all请使用权限标志。权限标志为权限类型提供只读("普通"形式)和读写(以 -控制结束的表单)功能。

注:

all用户发出回滚命令且启用了回滚权限标记时,登录类权限位优先于扩展正则表达式。

要配置用户访问权限级别:

  1. 查看用户帐户的权限。

    在配置这些权限的访问权限之前,您可以查看用户帐户的权限。

    要查看用户权限,请在?[edit]层次结构级别输入:

  2. 使用访问权限配置用户权限。

    可以登录设备的所有用户都必须在登录类中。对于每个登录类,您可以配置关联用户登录设备时可拥有的访问权限。

    要配置用户权限的访问权限级别,请将permissions语句包括在[edit system login class class-name]层次结构级别,然后是用户权限、 permissions选项和所需权限标志。

配置

使用访问权限级别配置用户权限

分步过程

要配置访问权限:

  1. 从设备中查看可用于用户帐户的权限列表。在此示例中,用户帐户的用户名为 host。

    输出中将列出用户主机的权限。可通过配置这些用户权限的不同访问权限来创建自定义登录类。

  2. 配置访问权限类,使用户主机能够仅配置和查看 SNMP 参数。在此示例中,此登录类称为网络管理。要自定义网络管理登录类,请将 SNMP 权限标志包含到configure用户权限中。

    此处,配置的权限标志为 SNMP 提供读(snmp)和读写(snmp 控制)功能,这是网络管理登录类唯一允许的访问权限。换句话说,除了配置和查看 SNMP 参数以外的其他所有访问权限都将被拒绝。

成果

从配置模式,输入show system login命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

针对

以新登录类分配的用户名登录,并确认配置是否正常运行。

验证 SNMP 配置

用途

验证是否可以执行 SNMP 配置。

行动

从配置模式执行[edit snmp]层次结构级别的基本 SNMP 命令。

含义

分配给网络管理登录类的用户主机可以配置 SNMP 参数,因为为此类指定的权限标志包括 snmp (读功能)和 snmp 控制(读写功能)权限位。

验证非 SNMP 配置

用途

验证网络管理登录类是否拒绝非 SNMP 配置。

行动

从配置模式执行任何非 SNMP 配置,例如接口配置。

用于允许和拒绝 Junos OS 操作模式命令、配置语句和层次结构的正则表达式

本主题包含以下部分:

了解正则表达式

您可以使用扩展正则表达式来指定拒绝或允许的操作模式命令、配置语句和层次结构。您可以在 层次结构级别的 本地 和 和 语句中指定这些正则表达式,或远程指定授权服务器配置中的 瞻博网络 供应商专用 allow/deny-commandsallow/deny-configuration,allow/deny-commands-regexpsallow/deny-configuration-regexp[edit system login class class-name] TACACS+ 或 RADIUS 属性。

注:

从 Junos OS 版本18.1 开始, allow-commands-regexpsdeny-commands-regexps语句支持 TACACS + 授权。

本地和远程授权配置之间的差异在于执行正则表达式语句的模式。虽然可以在本地授权配置中使用字符串指定多个正则表达式,但在远程配置中,需要在单独的字符串中拆分和指定正则表达式语句。在远程和本地配置授权参数时,在 TACACS + 或 RADIUS 授权期间收到的正则表达式将与本地设备上提供的任何正则表达式合并。

使用allow-configurationdeny-configurationallow-commands、或deny-commands语句在本地配置中指定多个正则表达式时,正则表达式在括号内配置并使用管道符号分隔。完整的表达式括在双引号中。例如,您可以使用以下语法allow-commands指定多个参数:

在授权服务器上远程配置的同一表达式使用以下语法:

使用allow-configuration-regexpsdeny-configuration-regexpsallow-commands-regexps、或deny-commands-regexps语句在本地配置中指定多个正则表达式时,正则表达式在双引号内配置,并使用 space 运算符分隔。完整的表达式括在方括号中。例如,您可以使用以下语法指定多个 allow 命令参数:

在授权服务器上远程配置的同一表达式使用以下语法:

表 2使用正则表达式区分本地和远程授权配置。

表 2: 使用正则表达式的本地和远程授权配置示例

本地配置

远程配置

login {
    class local {
        permissions configure;
        allow-commands "(ping .*)|(traceroute .*)|(show .*)|(configure .*)|(edit)|(exit)|(commit)|(rollback .*)";
        deny-commands .*;
        allow-configuration "(interfaces .* unit 0 family ethernet-switching vlan mem.* .*)|(interfaces .* native.* .*)|(interfaces .* unit 0 family ethernet-switching interface-mo.* .*)|(interfaces .* unit .*)|(interfaces .* disable)|(interfaces .* description .*)|(vlans .* vlan-.* .*)"
        deny-configuration .*;
    }
}
user = remote {
    login = username
    service = junos-exec {
        allow-commands1 = "ping .*"
        allow-commands2 = "traceroute .*"
        allow-commands3 = "show .*"
        allow-commands4 = "configure"
        allow-commands5 = "edit"
        allow-commands6 = "exit"
        allow-commands7 = "commit"
        allow-commands8 = ".*xml-mode" <<<<<
        allow-commands9 = ".*netconf" <<<<<
        allow-commands10 = ".*need-trailer" <<<<<
        allow-commands11 = "rollback.*"
        deny-commands1 = ".*"
        allow-configuration1 = "interfaces .* unit 0 family ethernet-switching vlan mem.* .*"
        allow-configuration2 = "interfaces .* native.* .*"
        allow-configuration3 = "interfaces .* unit 0 family ethernet-switching interface-mo.* .*"
        allow-configuration4 = "interfaces .* unit .*"
        allow-configuration5 = "interfaces .* disable"
        allow-configuration6 = "interfaces .* description .*"
        allow-configuration7 = "interfaces .*"
        allow-configuration8 = "vlans .* vlan-.* .*"
        deny-configuration1 = ".*"
        local-user-name = local-username
        user-permissions = "configure"
    }
}
注:
  • 您需要显式允许访问 NETCONF 模式(本地或远程),方法是发出以下三个命令:xml-modenetconfneed-trailer

  • 使用该deny-configuration = “.*”语句时,应使用allow-configuration语句来允许所有其他所需的配置。这可能会影响allow-configuration语句允许的正则表达式缓冲区限制。当此限制超过时,允许的配置可能不起作用。此正则表达式缓冲区大小限制已在 Junos OS 版本 14.1 x53-D40、15.1 和16.1 中增加。

指定正则表达式

警告:

为命令和配置语句指定正则表达式时,请注意以下示例,因为带有无效语法的正则表达式可能不会产生所需的结果,即使配置提交时没有任何error.

应按照与执行完整命令或语句相同的方式指定命令和配置语句的正则表达式。表 3列出了用于为[edit interfaces] and [edit vlans]语句层次结构以及delete interfaces命令配置访问权限的正则表达式。

表 3: 指定正则表达式

正则表达式

配置说明

[edit interfaces]

接口set命令按以下方式执行:

[edit]
user@host# set interfaces interface-name unit interface-unit-number

set interfaces语句本身不完整,需要unit选项执行语句。

因此,拒绝set interfaces配置所需的正则表达式必须使用.*运算符代替语句变量来指定整个可执行文件字符串:

[edit system login class class-name]
user@host# set permissions configure
user@host# set deny-configuration "interfaces .* unit .*"
  • .*运算符表示该特定命令或语句从指定点向前的所有内容。在此示例中,它表示任何设备值的接口名称。

  • 仅指定deny-configuration "interfaces .*"语句是错误的,不会拒绝对指定登录类的接口配置的访问。

  • 其他有效选项可包括在正则表达式中,例如:

    [edit system login class class-name]
    user@host# set permissions configure
    user@host# set deny-configuration "interfaces .* description .*"
    
    [edit system login class class-name]
    user@host# set permissions configure
    user@host# set allow-configuration-regexps [ "interfaces .* description .*” “interfaces .* unit .* description .*” “interfaces .* unit .* family inet address .*” “interfaces.* disable" ]
    
    [edit system login class class-name]
    user@host# set permissions configure
    user@host# set allow-configuration "interfaces .* unit 0 family ethernet-switching vlan mem.* .*"
    

    Note:mem.* 指定正则表达式中需要包含从 mem 关键字开始的多个字符串时,将使用此示例中的正则表达式。如果只需要member包含一个字符串,则使用member .*正则表达式。

delete interfaces

接口delete命令按以下方式执行:

[edit]
user@host# delete interfaces interface-name

delete interfaces语句可单独执行且无需完成附加语句。

因此,拒绝delete interfaces语句所需的正则表达式应指定以下内容:

[edit system login class class-name]
user@host# set permissions configure
user@host# set allow-configuration "interfaces .*"
user@host# set deny-configuration "interfaces .*"
  • .*运算符表示该特定命令或语句从指定点向前的所有内容。在此示例中,它表示任何接口名称。

  • 为了使deny-configuration "interfaces .*"正则表达式生效,指定的登录类应允许使用allow-configuration "interfaces .*"正则表达式对接口层次结构进行配置权限。

[edit vlans]

Vlan set命令的执行方式如下:

[edit]
user@host# set vlans vlan-name vlan-id vlan-id

此处, set vlans语句本身不完整,需要vlan-id选项执行语句。

因此,允许set vlans配置所需的正则表达式必须使用.*运算符代替语句变量来指定整个可执行字符串:

[edit system login class class-name]
user@host# set permissions configure
user@host# set allow-configuration "vlans .* vlan-id .*"
  • .*运算符表示该特定命令或语句从指定点向前的所有内容。在此示例中,它表示任何 VLAN ID 的 VLAN 名称。

  • 可将[edit vlans]语句层次结构下的其他有效选项包括在正则表达式中,例如:

    [edit system login class class-name]
    user@host# set permissions configure
    user@host# set allow-configuration-regexps [ "vlans .* vlan-id .*" "vlans .* vlan-id .* description .*" "vlans .* vlan-id .* filter .*" ]
    

正则表达式运算符

表 4列出可用于允许或拒绝操作和配置模式的常用正则表达式运算符。

命令正则表达式实施扩展(现代)正则表达式,如 POSIX 1003.2 中定义。

表 4: 常用正则表达式运算符

运营商

相符

例子

|

由管道分隔的两个或多个词中的一个。每个术语都必须是括在括号()内的完整独立表达式,管道和相邻括号之间不留空格。

[edit system login class test]
user@host# set permissions configure
user@host# set allow-commands "(ping)|(traceroute)|(show system alarms)|(show system software)"
user@host# set deny-configuration "(access)|(access-profile)|(accounting-options)|(applications)|(apply-groups)|
(bridge-domains)|(chassis)|(class-of-service)"

借助上述配置,分配给测试登录类的用户将操作模式访问限制为仅限于allow-commands语句中指定的命令,并访问配置模式,不包括deny-configuration语句中指定的层次结构级别。

^

在表达式的开头,用于表示命令开始的位置,可能有一些多义性。

[edit system login class test]
user@host# set permissions interface
user@host# set permissions interface-control
user@host# set allow-commands "(^show) (log|interfaces|policer))|(^monitor)"

借助上述配置,分配给测试登录类的用户可以访问配置和查看操作模式和配置方式的接口配置。allow-commands语句指定对以和show关键字开头的monitor命令的访问。

对于第一个过滤器,指定的命令包括show logshow interfacesshow policer命令。第二个过滤器指定以monitor关键字(例如monitor interfacesmonitor traffic命令)开头的所有命令。

$

命令结尾处的字符。用于表示与该点必须完全匹配的命令。

[edit system login class test]
user@host# set permissions interface
user@host# set allow-commands "(show interfaces$)"

借助上述配置,分配给测试登录类的用户可在配置模式下查看接口配置,并在界面用户权限show configuration中使用操作模式命令。但是, allow-commands语句中指定的正则表达式限制用户仅执行show interfaces命令,并拒绝访问命令扩展,例如show interfaces detail或。 show interfaces extensive

[ ]

一系列字母或数字。要分隔范围的开始和末尾,请使用连字符 ( -   )。

[edit system login class test]
user@host# set permissions clear
user@host# set permissions configure
user@host# set permissions network
user@host# set permissions trace
user@host# set permissions view
user@host# set allow-configuration-regexps [ "interfaces [gx]e-.* unit [0-9]* description .*" ]

借助上述配置,分配给测试登录类的用户拥有操作员级用户权限,并且有权在指定接口名称和设备号范围(0到9)内配置接口。

( )

一组命令,表示要评估的完整独立表达式。然后,结果将作为整体表达式的一部分进行评估。如所述,必须将圆括号与管道操作符结合使用。

[edit system login class test]
user@host# set permissions all
user@host# set allow-commands "(clear)|(configure)"
user@host# deny-commands "(mtrace)|(start)|(delete)"

借助上述配置,分配给测试登录类的用户拥有超级用户级权限,并且可以访问allow-commands语句中指定的命令。

*

零个或多个术语。

[edit system login class test]
user@host# set permissions configure
user@host# set deny-configuration "(system login class m*)"

借助上述配置,分配给登录用户名开始的测试登录类的用户m将被拒绝配置访问。

+

一个或多个条款。

[edit system login class test]
user@host# set permissions configure
user@host# set deny-configuration "(system login class m+)"

借助上述配置,分配给登录用户名开始的测试登录类的用户m将被拒绝配置访问。

.

除空格以外的任何字符 ""。

[edit system login class test]
user@host# set permissions configure
user@host# set deny-configuration "(system login class m.)"

借助上述配置,分配给登录用户名开始的测试登录类的用户m将被拒绝配置访问。

.*

从指定点向前的所有内容。

[edit system login class test]
user@host# set permissions configure
user@host# set deny-configuration "(system login class m .*)"

借助上述配置,分配给登录用户名开始的测试登录类的用户m将被拒绝配置访问。

同样,该deny-configuration "protocols .*"语句也拒绝[edit protocols]层次结构级别下的所有配置访问。

注:
  • *通过+使用..*实现、和操作。

  • deny-commands .*deny-configuration .*语句分别拒绝对所有操作模式命令和配置层次结构的访问。

注:

Junos OS 不支持!正则表达式运算符。

正则表达式示例

表 5 列出了用于允许在两个配置层次结构下允许配置选项的正则表达式 — 和 [edit system ntp server][edit protocols rip] — 作为指定正则表达式的示例。

注:

表 5不提供所有配置语句和层次结构的所有正则表达式和关键字的完整列表。表中列出的正则表达式在 Junos OS 版本16.1 中受支持,并且仅针对[edit system ntp server][edit protocols rip]语句层次结构进行验证。

表 5: 正则表达式示例

语句层次结构

正则表达式

允许的配置

拒绝的配置

[edit system ntp server]

     

[edit system login class test]
set permissions configure
set allow-configuration-regexps [ "system ntp server .*" "system ntp server .* key .*" ]
set deny-configuration-regexps [ "system ntp server .* version .*" "system ntp server .* prefer" ]
  • 服务器 IP

  • 服务器 IP 和密钥

  • 版本

  • 倾向于

版本 版本号

[edit system login class test]
set permissions configure
set allow-configuration-regexps [ "system ntp server .*" "system ntp server .* version .*" ]
set deny-configuration-regexps [ "system ntp server .* key .*" "system ntp server .* prefer" ]
  • 服务器 IP

  • 服务器 IP 和版本

  • 密钥

  • 倾向于

倾向于

[edit system login class test]
set permissions configure
set allow-configuration-regexps [ "system ntp server .*" "system ntp server .* prefer" ];
set deny-configuration-regexps [ "system ntp server .* key .*" "system ntp server .* version .*" ]
  • 服务器 IP

  • 服务器 IP 和更愿意

  • 密钥

  • 版本

[edit protocols rip]

     

消息大小 消息大小

[edit system login class test]
set permissions configure
set allow-configuration-regexps "protocols rip message-size .*"
set deny-configuration-regexps [ "protocols rip metric-in .*" "protocols rip route-timeout .*" "protocols rip update-interval .*" ]
  • 消息大小

  • 指标-英寸

  • 路由超时

  • 更新间隔

指标 表示

[edit system login class test]
set permissions configure
set  allow-configuration-regexps "protocols rip metric-in .*"
set  deny-configuration-regexps [ "protocols rip message-size .*" "protocols rip route-timeout .*" "protocols rip update-interval .*" ]
  • 指标-英寸

  • 消息大小

  • 路由超时

  • 更新间隔

路由超时 路由超时

[edit system login class test]
set permissions configure
set allow-configuration-regexps "protocols rip route-timeout .*"
set deny-configuration-regexps [ "protocols rip metric-in .*" "protocols rip message-size .*" "protocols rip update-interval .*" ]
  • 路由超时

  • 消息大小

  • 指标-英寸

  • 更新间隔

更新间隔 更新间隔

[edit system login class test]
set permissions configure
set allow-configuration-regexps "protocols rip update-interval .*"
set deny-configuration-regexps [ "protocols rip metric-in .*" "protocols rip route-timeout .*" "protocols rip message-size .*" ]
  • 更新间隔

  • 消息大小

  • 指标-英寸

  • 路由超时

使用允许配置和拒绝配置语句定义访问权限的示例

您可以结合使用以下类型的语句来定义访问权限:

  • 权限标志

  • allow-configurationdeny-configuration语句

权限标志定义了个人或登录类可访问和控制的内容的更大边界。allow-configuration And deny-configuration语句优先于权限标志,赋予管理员对用户有权访问的确切内容的更精细控制。

本主题说明使用allow-configuration and 语句定义访问deny-configuration权限的方法是,通过显示采用这些语句的登录类配置的一系列示例。示例1至3使用权限标志和deny-configuration语句创建登录类,允许用户访问所有其他内容。每allow-configurationdeny-configuration or 语句都配置了一个或多个正则表达式,允许或拒绝。

请注意,权限位权限标志可互换使用。

示例1

要创建允许用户配置除 telnet 参数之外的所有内容的登录类:

  1. 将用户的登录类权限位设置为 all
  2. 包括以下deny-configuration语句。

示例2

要创建允许用户配置所有项的登录类,名称以"m"开头的任何登录类中除外:

  1. 将用户的登录类权限位设置为 all

  2. 包括以下deny-configuration语句。

示例3

下一个示例演示如何创建all具有权限位的登录类,以防止用户在commit[edit system login class][edit system services]层次结构级别上编辑配置或发出命令(如):

创建允许用户配置除[edit system login class][edit system services]层次结构级别之外的所有内容的登录类:

  1. 将用户的登录类权限位设置为 all

  2. 包括以下deny-configuration语句。

下面两个示例显示如何使用allow-configuration and deny-configuration语句来确定[edit system services]层次结构级别的反向权限。

示例4

要创建允许用户在[edit system services]层次结构级别和仅[edit system services]层次级别拥有完全配置权限的登录类,请执行以下操作:

  1. 将用户的登录类权限位设置为 configure

  2. 包括以下allow-configuration语句。

示例5

要创建允许用户对所有配置模式层次结构( [edit system services]层次结构级别除外)具有完全权限的登录类,请执行以下操作:

  1. 将用户的登录类权限位设置为 all

  2. 包括以下deny-configuration 语句。

示例:使用具有正则表达式的加法逻辑指定访问权限

此示例显示如何在使用正则表达式设置配置访问权限时使用加法逻辑。

配置

分步过程

要为正则表达式启用加法逻辑:

  1. 要显式允许一个或多个单独的配置模式层次结构allow-configuration-regexps ,请将[edit system login class class-name]语句包含在层次结构级别,并配置有要允许的正则表达式。

  2. 将登录类分配给一个或多个用户。

  3. 为正则表达式启用加法逻辑。

  4. 提交更改。

    分配此登录类的用户有权访问allow-configuration-regexps语句中包含的配置层次结构,但不包括其他。

要求

此示例使用以下硬件和软件组件:

  • 一瞻博网络 J 系列、M Series、MX 系列或 T Series 设备

  • 16.1 或更高版本 Junos OS

    • 必须为登录类分配至少一个用户。

    • 一个登录类可以有多个,每个都有不同的权限配置,并且设备上有多个用户。

概述

要控制哪些人可以对系统进行配置更改,以及他们可以更改哪些内容,您可以创建正则表达式,用于指示配置层次结构的特定部分,允许命名的用户类中的用户访问。例如,您可以创建正则表达式来指定允许用户修改的一组路由实例,并防止用户更改任何其他路由实例或其他任何配置级别。

您可以使用allow-configuration-regexpsdeny-configuration-regexps语句配置正则表达式。默认情况下deny-configuration-regexps ,语句优先于allow-configuration-regexps对其所应用的命名用户类中用户的语句。

如果配置层次结构出现在命名deny-configuration-regexps用户类的语句中,则无论该allow-configuration-regexps语句的内容如何,都不会对用户可见。如果配置层次结构未出现在deny-configuration-regexps语句中,则当其出现在allow-configuration-regexps语句中或没有为 user 类配置任何allow-configuration-regexps语句时,就会显示出来。。

您可以选择更改此默认行为,以便在正则表达式中使用加法逻辑(即默认为 "全部拒绝"/"允许某些部分")。启用附加逻辑时,现有正则表达式的行为会发生变化,因此所有配置层次结构都将被拒绝,除非allow-configuration-regexps它们包含在命名用户类的语句中。

示例

将正则表达式与加法逻辑结合使用

用途

本节提供使用加法逻辑的正则表达式示例,为您提供有关创建适合系统的配置的创意。

允许特定路由实例

下面的示例登录类包含一个正则表达式,允许配置名称开头为的CUST-VRF-路由实例;例如CUST-VRF-1CUST-VRF-25,、、 CUST-VRF-100等:

如果配置中包含以下语句,将阻止用户配置任何其他路由实例,并且拒绝访问任何非路由实例配置层次结构:

仅允许 BGP 对等配置

下面的示例登录类包含正则表达式,允许 BGP 对等方进行配置:

如果配置中包含以下语句,将阻止用户进行任何其他更改,例如删除或禁用 BGP 语句:

针对

要验证是否已正确设置访问权限:

  1. 配置登录类并提交更改。

  2. 将登录类分配给 用户名

  3. 以新 登录 类分配的用户名登录。

  4. 尝试执行已允许的配置。

    • 您应该能够对层次结构级别和正则表达式执行配置更改。

    • 所有其他层次结构都不应是可见的。

    • 任何允许或拒绝的表达式都优先于通过该permissions语句授予的任何权限。

示例:使用操作模式命令的访问权限配置用户权限

此示例说明如何配置自定义登录类并分配操作模式命令的访问权限。这使得自定义登录类的用户能够仅执行已指定访问权限的操作命令。这可防止未经授权的用户执行可能导致网络损坏的敏感命令。

要求

此示例使用以下硬件和软件组件:

  • 一个瞻博网络设备

  • 一个 TACACS + (或 RADIUS)服务器

  • 在瞻博网络设备上运行 Junos OS 生成

开始之前:

  • 在设备与 TACACS + 服务器之间建立 TCP 连接。在 RADIUS 服务器的情况下,在设备与 RADIUS 服务器之间建立 UDP 连接。

    有关配置 TACACS + 服务器的信息,请参阅配置 tacacs + 身份验证

  • 在瞻博网络设备上至少配置一个分配给登录类的用户。一个登录类可以有多个,每个都有不同的权限配置,并且设备上有多个用户。

概述和拓扑

每个顶级命令行界面(CLI)命令和 Junos OS 中的每个配置语句都具有与其关联的访问权限级别。对于每个登录类,您可以明确拒绝或允许使用在权限级别允许或不允许的操作和配置模式命令。用户只能执行这些命令,并且只能配置和查看他们具有访问权限的那些语句。要配置访问权限级别,请将permissions语句包含在[edit system login class class-name]层次结构级别。

每个登录类的访问权限由permissions语句中指定的一个或多个权限标志定义。除此之外,您还可以使用以下语句指定扩展正则表达式:

  • allow-commandsdeny-commands和 —仅允许或拒绝对操作模式命令的访问。

  • allow-configurationdeny-configuration和 —仅允许或拒绝对特定配置层次结构的访问。

  • allow-configuration-regexpsdeny-configuration-regexps和 —使用正则表达式字符串允许或拒绝对特定配置层次结构的访问。

  • allow-commands-regexpsdeny-commands-regexps和 —(仅 TACACS+ 授权) 使用正则表达式字符串允许或拒绝对特定命令的访问。

以上语句定义了用户对单个操作模式命令、配置语句和层次结构的访问权限。这些语句优先于为用户设置的登录类权限。

Configuration Notes

使用访问权限allow-commands配置deny-commandsallow-configuration、和deny-configuration语句时,请注意以下事项:

  • 每个登录类中只能包含允许/拒绝语句一次。

  • 如果完全相同的命令同时配置在 both allow-commandsdeny-commands both allow-configurationdeny-configuration语句上,则 allow 操作优先于 deny 语句。

    例如,使用以下配置时,将允许分配给登录类测试的用户使用request system software add命令安装软件,尽管该deny-commands语句还包括:

    例如,使用以下配置时,将允许分配给登录类测试的用户访问[edit system services]配置层次结构,尽管该deny-configuration语句还包括:

  • 如果为allow-commands一个命令的两个不同deny-commands变体指定了正则表达式 and 语句,则始终执行最长匹配。

    例如,对于以下配置,允许分配给测试登录类的用户执行commit synchronize命令,而不是commit命令。这是因为commit-synchronize是和commitcommit-synchronize之间的最长匹配,并且为指定的allow-commands

  • allow-commandsdeny-commands语句的正则表达式还可以包含commitloadrollbacksavestatus、和update命令。

  • 使用该allow-configuration语句显式允许配置模式层次结构或正则表达式将使用permissions语句添加到常规权限集。同样,使用deny-configuration语句显式拒绝配置模式层次结构或正则表达式将从该permissions语句提供的默认权限中删除指定配置模式层次结构的权限。

    例如,对于以下配置,登录类用户可以在[edit system services]层次结构级别和问题配置模式命令(如commit)中编辑配置,除了使用configure命令(配置权限标记指定的权限)输入配置模式外,还可执行下列操作:

    同样,对于以下配置,登录类用户可执行所有权限标志允许的操作,但发出配置模式命令(如 )或修改层级 commit[edit system services] 的配置除外:

  • 这些allow/deny-configuration语句与allow/deny-configuration-regexps语句相互排斥, allow-deny-commands语句与allow/deny-commands-regexps语句互斥。例如,您不能同时allow-configuration在同allow-configuration-regexps一个登录类中配置和。

  • 如果您有allow/deny-configuration使用 or allow/deny-commands语句的现有配置,与allow/deny-configuration-regexps or allow/deny-commands-regexps语句一起使用相同的配置选项可能不会产生相同的结果,因为搜索和匹配方法在这些语句的两种形式上不同。

  • 要定义部分配置层次结构的访问权限,请在扩展正则表达式中使用allow-configuration and deny-configuration语句指定完整路径。将两个或更多表达式与管道(|)符号两边的扩展正则表达式括起来。

    例如:

  • 如果正则表达式包含任何空格、运算符或通配符,请将表达式括在引号中。正则表达式不区分大小写;例如, allow-commands "show interfaces"

  • 要匹配的正则表达式字符串不支持设置、日志和计数等修改器。如果使用了修饰符,则不会匹配任何内容。

    配置不正确:

    正确配置:

  • 在使用allow-commands语句指定复杂正则表达式时,需要定位点。

    例如:

  • 使用allow/deny-commands and allow/deny-configuration语句指定扩展正则表达式时,由管道(|)符号分隔的每个表达式都必须是完整的独立表达式,并且必须括在括号()中。不要在使用括号分隔的正则表达式之间使用空格,并与管道(|)符号相连。

    例如:

  • 使用allow/deny-configuration-regexps or allow/deny-commands-regexps语句指定扩展正则表达式时,括在引号(")内且由空格分隔的每个表达式都必须括在尖括号 [] 中。

    例如:

  • 当表示正则表达式时,您可以使用 * 通配符。但是,它必须用作正则表达式的一部分。您不能单独 使用 [ * ] 或 [ .* ] 。

  • 不能使用 allow-configuration(interfaces)配置 语句(|。*)) 正则表达式,用于对正则表达式 allow-configuration = .* 进行评估。

  • 您可以根据需要配置多个正则表达式,以允许或拒绝。要拒绝的正则表达式优先于允许配置。

拓扑

图 1: 配置 TACACS + 服务器身份验证配置 TACACS + 服务器身份验证

图 1展示了一个简单的拓扑结构,其中路由器 R1 是瞻博网络设备,并且具有与 TACACS + 服务器建立的 TCP 连接。

此示例为 R1 配置了三个自定义登录类(Class1、Class2 和 Class3)以使用 和 语句为扩展正则表达式指定 allow-commandsdeny-commands 访问权限。

每个登录类的用途如下:

  • Class1—仅使用 语句定义 allow-commands 用户的访问权限。此登录类提供操作员级别用户权限,应仅为重新启动设备提供授权。

  • Class2—仅使用 语句定义 deny-commands 用户的访问权限。此登录类提供操作员级别用户权限,应拒绝对set命令的访问。

  • Class3— 使用 和 语句定义 allow-commands 用户的 deny-commands 访问权限。此登录类提供超级用户级别的权限,并应提供访问接口和查看设备信息的授权。它还会拒绝访问editconfigure命令。

路由器 R1 分别分配给 Class1、Class2 和 Class3 login 类的三个不同用户、User1、User3 和。

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除任何换行符,更改与网络配置匹配的必要详细信息,将命令复制并粘贴到[edit]层次结构级别的 CLI 中,然后从commit配置模式进入。

R1

配置路由器 R1 的身份验证参数

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅Cli 用户指南中的使用配置模式中的 CLI 编辑器

要配置路由器 R1 身份验证:

  1. 配置对 R1 应进行身份验证的顺序。在此示例中,TACACS + 服务器身份验证首先是 RADIUS 服务器身份验证,然后是本地密码。

  2. 建立与 TACACS + 服务器的 R1 连接。

  3. 配置 RADIUS 服务器身份验证参数。

  4. 配置 R1 计费配置参数。

仅使用 allow 命令语句配置访问权限(Class1)

分步过程

要仅使用allow-commands语句指定正则表达式:

  1. 配置 Class1 自定义登录类并分配操作员级别用户权限。有关预定义系统登录类的信息,请参阅Junos OS 登录类概述

  2. 指定命令以允许在allow-commands语句中重新启动 R1。

  3. 为 Class1 登录类配置用户帐户。

仅使用 deny 命令语句配置接入权限(Class2)

分步过程

要仅使用deny-commands语句指定正则表达式:

  1. 配置 Class2 的自定义登录类并分配操作员级别用户权限。有关预定义系统登录类的信息,请参阅Junos OS 登录类概述

  2. 禁止在deny-commands语句中执行任何 set 命令。

  3. 配置 Class2 登录类的用户帐户。

使用 allow 命令和 deny-命令语句配置访问权限(Class3)

分步过程

要同时使用allow-commands and deny-commands语句指定正则表达式:

  1. 配置 Class3 的自定义登录类并分配超级用户级别用户权限。有关预定义系统登录类的信息,请参阅Junos OS 登录类概述

  2. 指定在allow-commands语句中仅启用配置命令的命令。

  3. 禁止执行deny-commands语句中的所有命令。

  4. 为 Class1 登录类配置用户帐户。

成果

从配置模式,输入show system命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

针对

以新登录类分配的用户名登录,并确认配置是否正常运行。

验证 Class1 配置

用途

验证 Class1 login 类中允许的权限和命令是否正常工作。

行动

从操作模式运行show system users命令。

从操作模式运行request system reboot命令。

含义

用户1所分配到的 Class1 登录类具有操作员级别用户权限,允许执行request system reboot命令。

预定义操作员登录类具有指定的以下权限标志:

  • clear—可以使用命令清除(删除)从存储在各种网络数据库的网络 clear 的信息。

  • network—可以使用 、 和 命令 pingsshtelnet 访问 traceroute 网络。

  • reset— 可以使用 命令重新启动软件进程,并可在 层次结构级别配置软件进程是启用还是 restart[edit system processes] 禁用。

  • trace—可查看追踪文件设置和配置追踪文件属性。

  • view— 可使用各种命令显示当前系统范围、路由表以及协议特定值和统计信息。无法查看机密配置。

对于 Class1 login 类,除了上述用户权限之外,User1 还可以执行request system reboot命令。第一个输出将查看权限显示为一个运算符,第二个输出显示: User1 可以request作为一个运算符执行的唯一命令就是request system reboot命令。

验证 Class2 配置

用途

验证 Class2 login 类允许的权限和命令是否正常工作。

行动

从操作模式运行ping命令。

从 CLI 提示中检查可用权限。

从 CLI 提示符处执行任何 set 命令。

含义

用户2分配给用户的 Class2 登录类具有操作者级别权限,被拒绝访问所有set命令。这将显示在命令输出中。

为预定义操作员登录类指定的权限标志与 Class1 相同。

验证 Class3 配置

用途

验证 Class3 login 类允许的权限和命令是否正常工作。

行动

从 CLI 提示中检查可用权限。

在操作模式下,进入配置模式。

含义

分配给 User3 的 Class3 login 类拥有超级用户(all)用户权限,但只允许执行configure命令,并且被拒绝访问所有其他操作模式命令。由于在allow/deny-commands语句中指定的正则表达式优先于用户权限,因此 R1 上的 User3 只能访问配置模式,并被拒绝访问所有其他操作模式命令。

示例:使用配置语句和层次结构的访问权限配置用户权限

此示例演示如何配置自定义登录类并将访问权限分配给配置层次结构的某些部分。这使得自定义登录类的用户能够仅执行指定了访问权限的配置语句和层次结构。这可防止未经授权的用户访问可能导致网络损坏的设备配置。

要求

此示例使用以下硬件和软件组件:

  • 一个瞻博网络设备

  • 一个 TACACS + (或 RADIUS)服务器

  • 在瞻博网络设备上运行 Junos OS 生成

开始之前:

  • 在设备与 TACACS + 服务器之间建立 TCP 连接。在 RADIUS 服务器的情况下,在设备与 RADIUS 服务器之间建立 UDP 连接。

    有关配置 TACACS + 服务器的信息,请参阅配置 tacacs + 身份验证

  • 在瞻博网络设备上至少配置一个分配给登录类的用户。一个登录类可以有多个,每个都有不同的权限配置,并且设备上有多个用户。

概述和拓扑

每个顶级命令行界面(CLI)命令和 Junos OS 中的每个配置语句都具有与其关联的访问权限级别。对于每个登录类,您可以明确拒绝或允许使用在权限级别允许或不允许的操作和配置模式命令。用户只能执行这些命令,并且只能配置和查看他们具有访问权限的那些语句。要配置访问权限级别,请将permissions语句包含在[edit system login class class-name]层次结构级别。

每个登录类的访问权限由permissions语句中指定的一个或多个权限标志定义。除此之外,您还可以使用以下语句指定扩展正则表达式:

  • allow-commandsdeny-commands和 —允许或拒绝对操作模式命令的访问。

  • allow-configurationdeny-configuration和 —允许或拒绝对配置层次结构部分的访问。

    这些语句执行较慢的匹配,并提高了灵活性,特别是在通配符匹配中。但是,如果配置了大量的完整路径正则表达式或通配符表达式,可能需要很长时间才能对所有可能的语句求值,从而影响性能。

  • allow-configuration-regexpsdeny-configuration-regexps和 —使用正则表达式字符串允许或拒绝对特定配置层次结构的访问。这些语句与allow-configurationdeny-configuration语句类似,但在allow/deny-configuration-regexps语句中,您可以配置字符串集,其中字符串在使用第一组语句时包含空格。

以上语句定义了用户对单个操作模式命令、配置语句和层次结构的访问权限。这些语句优先于为用户设置的登录类权限位。

Difference between allow/deny-configuration and allow/deny-configuration-regexps statements

allow-configuration Junos OS deny-configuration版本7.4 之前引入了和声明。allow-configuration-regexpsdeny-configuration-regexps语句在 Junos OS 版本11.2 中引入。在 Junos OS 版本11.4 中, allow-configurationdeny-configuration建议使用 and 语句,但由于这些语句在执行简单配置时很有用,这些语句在 Junos OS 版本 11.4 r6 中 undeprecated,并从 11.4 r6 版本开始,同时allow/deny-configuration支持和allow/deny-configuration-regexps声明。

语句将正则表达式拆分为令牌,并按指定配置的完整路径的每个部分匹配每个部分,而语句与完整字符串 allow/deny-configuration-regexpsallow/deny-configuration 匹配。对于allow/deny-configuration-regexps语句,您可以配置一组字符串,其中每个字符串都是一个正则表达式,字符串术语之间有空格。这提供了非常快速的匹配,但灵活性更低。对于指定通配符表达式,您必须为要匹配的空格分隔字符串的每个标记设置通配符,这使得对这些语句使用通配符表达式变得更加乏味。

例如:

  • 使用 "允许-配置-regexps" 匹配一个令牌的正则表达式

    此示例显示这options是对语句的第一个标记唯一匹配的表达式。

    以上配置与以下语句相匹配:

    • set policy- options condition 条件 dynamic-db

    • 设置路由- options 静态路由 静态路由 下一跃

    • set event- options 生成事件时间间隔秒数

    上述配置与以下语句不符:

    • 系统主机名主机-options

    • 接口 接口名称 说明 options

  • 使用 "允许-配置-regexps" 匹配三个令牌的正则表达式

    此示例显示这ssh是对语句的第三个标记唯一匹配的表达式。

    在上面的示例中,这三个.*标记.*分别包括.*ssh、和。

    以上配置与以下语句相匹配:

    • 系统主机名称主机名ssh

    • 系统服务 ssh

    • 系统服务出站-ssh

    上述配置与以下语句不匹配:

    • 接口 接口名称 说明 ssh

与使用deny-configuration语句相比,您可以使用deny-configuration-regexps语句轻松限制配置访问。表 6说明如何在不同的配置deny-configurationdeny-configuration-regexps使用 and 语句,获得对特定配置的限制访问的相同结果。

表 6: 使用拒绝 configurtion 和拒绝配置-regexps 语句限制配置访问

配置被拒绝

采用拒绝-配置

采用拒绝-配置-regexps

结果

xnm-ssl

[edit system]
login {
    class test {
        permissions configure;
         allow-configuration .*;
        deny-configuration .*xnm-ssl;
    }
}
[edit system]
login {
    class test {
        permissions configure;
         allow-configuration .*;
        deny-configuration-regexps ".* .* .*-ssl"";
    }
}

拒绝以下配置语句:

  • 系统服务 xnm-ssl

ssh

[edit system]
login {
    class test {
        permissions configure;
         allow-configuration .*;
        deny-configuration ".*ssh";
    }
}
[edit system]
login {
    class test {
        permissions configure;
         allow-configuration .*;
        deny-configuration-regexps ".*ssh";
        deny-configuration-regexps ".* .*ssh";
        deny-configuration-regexps ".* .* .*ssh";
    }
}

以下配置语句被拒绝:

  • 系统主机名称主机-ssh

  • 系统服务 ssh

  • 系统服务出站-ssh

  • 安全 ssh-已知主机

尽管在allow/deny-configuration需要简单配置时,这些语句也很有用, allow/deny-configuration-regexps但这些语句可提供更好的性能,并克服在allow/deny-configuration语句中设置的表达式时存在的歧义。

注:

allow/deny-configuration And allow/deny-configuration-regexps语句相互排斥,不能一起配置用于登录类。在给定时间点,登录类可以包含allow/deny-configuration语句或allow/deny-configuration-regexps语句。如果您有使用这些allow/deny-configuration语句的现有配置,则对allow/deny-configuration-regexps语句使用相同的配置选项可能不会产生相同的结果,因为搜索和匹配方法在这些语句的两种形式上不同。

Configuration Notes

使用访问权限allow-configuration配置deny-configurationallow-configuration-regexps、和deny-configuration-regexps语句时,请注意以下事项:

  • 您可以在每deny-configuration个登录allow-configuration类中包含一个和一个语句。

  • allow/deny-configuration And allow/deny-configuration-regexps语句相互排斥,不能一起配置用于登录类。在给定时间点,登录类可以包含allow/deny-configuration语句或allow/deny-configuration-regexps语句。如果您有使用这些allow/deny-configuration语句的现有配置,则对allow/deny-configuration-regexps语句使用相同的配置选项可能不会产生相同的结果,因为搜索和匹配方法在这些语句的两种形式上不同。

  • 使用该allow-configuration语句显式允许配置模式层次结构或正则表达式将使用permissions语句添加到常规权限集。同样,使用deny-configuration语句显式拒绝配置模式层次结构或正则表达式将从该permissions语句提供的默认权限中删除指定配置模式层次结构的权限。

    例如,对于以下配置,登录类用户可以在[edit system services]层次结构级别和问题配置模式命令(如commit)中编辑配置,除了使用configure命令(配置权限标记指定的权限)输入配置模式外,还可执行下列操作:

    同样,对于以下配置,登录类用户可执行所有权限标志允许的操作,但发出配置模式命令(如 )或修改层级 commit[edit system services] 的配置除外:

  • 要定义部分配置层次结构的访问权限,请在扩展正则表达式中使用allow-configuration and deny-configuration语句指定完整路径。将两个或更多表达式与管道(|)符号两边的扩展正则表达式括起来。

    例如:

  • 使用allow/deny-commands and allow/deny-configuration语句指定扩展正则表达式时,由管道(|)符号分隔的每个表达式都必须是完整的独立表达式,并且必须括在括号()中。不要在使用括号分隔的正则表达式之间使用空格,并与管道(|)符号相连。

    例如:

  • 使用allow-deny-configuration-regexps语句指定扩展正则表达式时,括在引号(")内且由空格分隔的每个表达式都必须括在尖括号 [] 中。

    例如:

  • 如果在 both allow-configurationdeny-configuration语句下配置完全相同的命令,则 allow 操作优先于 deny 语句。

    例如,使用以下配置时,将允许分配给登录类测试的用户访问[edit system services]配置层次结构,尽管该deny-configuration语句还包括:

    例如,如果允许某个命令或配置,例如使用 all 权限,则我们可以使用 命令拒绝对特定层次结构 deny-configuration 的访问。

  • 要匹配的正则表达式字符串不支持设置、日志和计数等修改器。如果使用了修饰符,则不会匹配任何内容。

    配置不正确:

    正确配置:

  • 当表示正则表达式时,您可以使用 * 通配符。但是,它必须用作正则表达式的一部分。您不能单独 使用 [ * ] 或 [ .* ] 。

  • 不能使用 allow-configuration(interfaces)配置 语句(|。*)) 正则表达式,用于对正则表达式 allow-configuration = .* 进行评估。

  • 您可以根据需要配置多个正则表达式,以允许或拒绝。要拒绝的正则表达式优先于允许配置。

拓扑

图 2: 配置 TACACS + 服务器身份验证配置 TACACS + 服务器身份验证

图 2展示了一个简单的拓扑结构,其中路由器 R1 是瞻博网络设备,并且具有与 TACACS + 服务器建立的 TCP 连接。

此示例为 R1 配置了两个自定义登录类(Class1 和 Class2)以使用 、 和 语句以不同方式使用 扩展正则表达式指定 allow-configurationdeny-configurationallow-configuration-regexpsdeny-configuration-regexps 访问权限。

登录类的用途如下:

  • Class1—使用 和 语句定义 allow-configuration 用户的 deny-configuration 访问权限。此登录类应仅提供对配置接口层次结构的访问权限,并拒绝设备上的所有其他访问。为此,用户权限应包括 配置 以提供配置访问。此外,该allow-configuration语句还应允许接口配置,而deny-configuration语句应拒绝对所有其他配置的访问。由于 allow 语句优先于 deny 语句,因此分配给 Class1 登录类的用户只能访问[edit interfaces]层次结构级别。

  • Class2—使用 和 语句定义 allow-configuration-regexps 用户的 deny-configuration-regexps 访问权限。此登录类提供超级用户级别的权限,此外,还明确允许在多层次结构级别下配置接口。它还拒绝对和[edit system][edit protocols]层次结构级别的配置访问。

路由器 R1 有两个用户、User1 和用户2,分别分配给 Class1 和 Class2 login 类。

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除任何换行符,更改与网络配置匹配的必要详细信息,将命令复制并粘贴到[edit]层次结构级别的 CLI 中,然后从commit配置模式进入。

R1

配置路由器 R1 的身份验证参数

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅Cli 用户指南中的使用配置模式中的 CLI 编辑器

要配置路由器 R1 身份验证:

  1. 配置对 R1 应进行身份验证的顺序。在此示例中,TACACS + 服务器身份验证首先是 RADIUS 服务器身份验证,然后是本地密码。

  2. 建立与 TACACS + 服务器的 R1 连接。

  3. 配置 RADIUS 服务器身份验证参数。

  4. 配置 R1 计费配置参数。

使用允许配置和拒绝配置语句(Class1)配置访问权限

分步过程

要使用allow-configuration and deny-configuration语句指定正则表达式:

  1. 配置 Class1 自定义登录类并分配配置用户权限。

  2. allow-configuration语句中指定正则表达式,以允许在[edit interfaces]层次结构级别配置。要在set[edit interfaces]层次结构级别上允许命令,使用的正则interfaces .* unit .*表达式为。

  3. deny-configuration语句中指定正则表达式,以禁用所有配置访问。用于拒绝所有配置访问的正则表达式为.*

  4. 为 Class1 登录类配置用户帐户。

使用允许配置 regexps 和拒绝配置-regexps 语句(Class2)配置接入权限

分步过程

要使用allow-configuration-regexps and deny-configuration-regexps语句指定正则表达式:

  1. 配置 Class2 的自定义登录类并分配超级用户(all)用户权限。有关预定义系统登录类的信息,请参阅Junos OS 登录类概述

  2. 指定正则表达式以允许访问层次结构级别下的[edit interfaces]多个层次结构。

  3. 指定用于在[edit system][edit protocols]层次结构级别拒绝配置的正则表达式。

  4. 配置 Class2 登录类的用户帐户。

成果

从配置模式,输入show system命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明以更正配置。

针对

以新登录类分配的用户名登录,并确认配置是否正常运行。

验证 Class1 配置

用途

验证 Class1 login 类中允许的权限是否正常工作。

行动

从 CLI 提示中检查可用权限。

从配置模式检查可用配置权限。

含义

User1 已配置 第一个输出中看到的用户权限,而且用户 1 允许的唯一配置访问是在接口层次结构级别中。所有其他配置将被拒绝,如第二次输出中所示。

验证 Class2 配置

用途

验证 Class2 配置是否正常工作。

行动

从配置模式访问接口配置。

从配置模式访问系统和协议配置层次结构。

含义

2层有权配置 R1 接口,但[edit system][edit protocols]层次结构级别拒绝访问,如输出中所示。