2. Junos用户权限与登录类配置
为什么运营商场景必须做分权分域
一台承载城域网业务的 Juniper 路由器,日常会被多类角色同时操作:NOC 一线只做查看与告警确认,二线工程师需要改接口和路由策略,安全审计需要读日志但不能改配置,厂商远程支持需要临时高权限。如果所有人共用 root 或同一个超级账号,一次误操作就可能影响整台设备甚至整片业务。Junos 的分权机制由三层构成:login class 定义"能做什么",user 绑定"谁来做",认证方式 决定"如何证明身份"。
创建 login class 与用户账号
以下配置在一台 Juniper 路由器上创建四个权限级别,分别对应 NOC 一线、二线工程、安全审计和厂商支持。所有操作在 configure 模式下完成。
# 1. 定义 login class
set system login class noc-view permissions [ view trace ]
set system login class noc-view allow-commands "show .*"
set system login class noc-view deny-commands "configure|edit|set|delete|commit"
set system login class eng-config permissions [ configure interface routing ]
set system login class eng-config allow-commands "show .*|ping|traceroute"
set system login class eng-config deny-commands "request system reboot|request system halt"
set system login class audit-read permissions view
set system login class audit-read deny-commands "configure|edit|set|delete|commit|request"
set system login class vendor-super permissions all
set system login class vendor-super allow-configuration ".*"
# 2. 创建用户并绑定 class
set system login user noc01 uid 2001 class noc-view
set system login user noc01 authentication encrypted-password "$6$rounds=10000$..."
set system login user eng01 uid 2002 class eng-config
set system login user eng01 authentication encrypted-password "$6$rounds=10000$..."
set system login user audit01 uid 2003 class audit-read
set system login user audit01 authentication encrypted-password "$6$rounds=10000$..."
set system login user vendor01 uid 2004 class vendor-super
set system login user vendor01 authentication encrypted-password "$6$rounds=10000$..."
# 3. 配置认证顺序(RADIUS 优先,本地回退)
set system authentication-order [ radius password ]
set system radius-server 10.0.0.50 secret "Radius@2024"
set system radius-server 10.0.0.50 timeout 5
set system radius-server 10.0.0.50 retry 3
密码字段使用
encrypted-password 而非明文 plain-text-password,避免 show configuration 时泄露。实际部署中建议通过 RADIUS/TACACS+ 集中管理密码,Junos 本地只保留回退账号。验证分权效果
配置提交后,用不同账号登录并执行越权命令,确认权限边界生效。以下为预期行为对照:
| 账号 | class | 允许操作 | 被拒绝操作 | 预期提示 |
|---|---|---|---|---|
| noc01 | noc-view | show interfaces、show route | configure、set | permission denied |
| eng01 | eng-config | set interfaces、commit | request system reboot | permission denied |
| audit01 | audit-read | show log messages | configure、request | permission denied |
| vendor01 | vendor-super | 全部操作 | — | — |
验证命令示例:以 noc01 登录后执行 configure,应返回 permission denied;以 eng01 登录后执行 request system reboot,同样应被拒绝。若未被拒绝,检查 deny-commands 正则是否覆盖了对应命令,以及 class 是否被正确绑定到用户。
运营商环境常见问题:RADIUS 服务器不可达时,若
authentication-order 只配了 radius 而没有 password 回退,所有远程登录会失败。务必保留本地回退账号,并确保回退账号的 class 权限足够完成紧急操作。运维检查清单
- 每个 login class 的
permissions是否最小化,避免直接给all。 deny-commands是否覆盖了 reboot、halt、factory-default 等高风险命令。- 用户
uid是否唯一且不与系统保留 uid 冲突。 authentication-order是否包含本地回退,RADIUS 超时和重试参数是否合理。- 提交后用
show system login和show system login class复核配置。 - 定期审计
show log messages | match "login",确认无异常登录尝试。