用户账户

默认情况下,Cumulus Linux 有两个用户账户:cumulusroot

*cumulus* 账户

  • 使用默认密码 `cumulus`。首次登录 Cumulus Linux 时,必须更改默认密码。
  • 是 *sudo* 组中的用户账户,具有 sudo 权限。
  • 可以通过所有常用渠道登录系统,例如控制台和 SSH
  • 包括运行 NVUE `nv show`、`nv set`、`nv unset` 和 `nv apply` 命令的权限。

*root* 账户

  • 默认情况下禁用默认密码,并阻止您使用 SSH、telnet、FTP 等方式登录交换机。
  • 具有标准 Linux root 用户访问交换机上所有内容的权限。

添加新用户账户

您可以根据需要添加额外的用户账户。

  • 您可以通过更改用户的组成员身份(角色)来控制本地用户账户对 NVUE 命令的访问权限。与 *cumulus* 账户一样,这些账户必须属于 `sudo` 组或包含 NVUE `system-admin` 角色才能 执行特权命令
  • 您可以为本地用户账户设置明文密码或哈希密码。要在没有密码的情况下访问交换机,您需要 启动到单用户模式
  • 您可以为本地用户账户提供全名(可选)。

默认角色

Cumulus Linux 提供以下默认角色

角色
权限
system-admin允许用户使用 `sudo` 以特权用户身份运行命令,运行 `nv show` 命令,运行 `nv set` 和 `nv unset` 命令来暂存配置更改,以及运行 `nv apply` 命令来应用配置更改。
nvue-admin允许用户运行 `nv show` 命令,运行 `nv set` 和 `nv unset` 命令来暂存配置更改,以及运行 `nv apply` 命令来应用配置更改。
nvue-monitor仅允许用户运行 `nv show` 命令。
角色
权限
sudo允许用户使用 `sudo` 以特权用户身份运行命令。
nvshow仅允许用户运行 `nv show` 命令。
nvset允许用户运行 `nv show` 命令,以及运行 `nv set` 和 `nv unset` 命令来暂存配置更改。
nvapply允许用户运行 `nv show` 命令,运行 `nv set` 和 `nv unset` 命令来暂存配置更改,以及运行 `nv apply` 命令来应用配置更改。

添加新用户账户并为用户分配默认角色

以下示例

  • 创建一个名为 `admin2` 的新用户账户,并将角色设置为 `system-admin`。
  • 设置明文密码。NVUE 对明文密码进行哈希处理,并将该值存储为哈希密码。要设置哈希密码,请参阅下面的 哈希密码
  • 添加全名 `FIRST LAST`。如果全名包含多个名字,请使用连字符 ( `FIRST-LAST` ) 分隔名字,或将全名括在引号中 ( `"FIRST LAST"` )。
cumulus@switch:~$ nv set system aaa user admin2 role system-admin
cumulus@switch:~$ nv set system aaa user admin2 password
Enter new password:
Confirm password:
cumulus@switch:~$ nv set system aaa user admin2 full-name "FIRST LAST"
cumulus@switch:~$ nv config apply

您可以运行 `nv set system aaa user <user> password <plain-text-password>` 命令以内联方式指定明文密码。此命令绕过 `Enter new password` 和 `Confirm password` 提示,但在您键入时显示明文密码。

如果您是 NVUE 管理的用户,您可以使用 Linux `passwd` 命令更新自己的密码。

要为用户账户配置 SPIFFE ID 而不是密码,请运行 `nv set system aaa user cumulus spiffe-id <id>` 命令。

以下示例

  • 创建一个名为 `admin2` 的新用户账户,为用户创建主目录,并添加全名 `First Last`。
  • 使用 `passwd` 安全地设置用户密码。
  • 将组成员身份(角色)设置为 `sudo` 和 `nvapply`(使用 `sudo`、`nv show`、`nv set` 和 `nv apply` 的权限)。
cumulus@switch:~$ sudo useradd admin2 -m -c "First Last"
cumulus@switch:~$ sudo passwd admin2
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
cumulus@switch:~$ sudo adduser admin2 sudo
cumulus@switch:~$ sudo adduser admin2 nvapply

  • 当您运行 Linux 命令添加新用户时,必须使用 `-m` 选项为用户创建主目录。NVUE 命令会自动创建主目录。
  • 如果您运行 Linux 命令配置少于 6 个字符的用户密码,Cumulus Linux 会记录消息 `BAD PASSWORD: The password is shorter than 6 characters`。如果密码安全已禁用,这只是一个警告,并且密码已设置。如果密码安全已启用,则不会设置短密码。

只有以下用户账户可以创建、修改和删除其他 `system-admin` 账户

  • 具有 `system-admin` 角色的 NVUE 管理用户。
  • root 用户。
  • 属于 `sudo` 组的非 NVUE 管理用户。

您还可以创建自定义角色并为用户分配自定义角色。请参阅 基于角色的访问控制

哈希密码

除了明文密码外,您还可以为本地用户提供哈希密码。

您必须以 Linux `crypt` 格式指定哈希密码;密码长度必须至少为 15 到 20 个字符,并且必须包含特殊字符、数字、小写字母等。通常,密码格式设置为 `$id$salt$hashed`,其中 `$id` 是哈希算法。在 GNU 或 Linux 中

  • `$1$` 是 MD5
  • `$2a$` 是 Blowfish
  • `$2y$` 是 Blowfish
  • `$5$` 是 SHA-256
  • `$6$` 是 SHA-512

要在交换机上生成哈希密码,您可以运行 `python3` 命令,或者安装并使用 `mkpasswd` 实用程序

在交换机或 Linux 主机上运行以下命令。出现提示时,输入要哈希的明文密码

cumulus@switch:~$ python3 -c "import crypt; import getpass; print(crypt.crypt(getpass.getpass(), salt=crypt.METHOD_SHA512))"                    
Password:                                                                                                                                                                 
$6$MIDE.sdxwxuAMGHd$XFXSpHV4NRJymUpeCKz.SYEMUfGGEtLbcqK0fBw3d96ZzegP3sw6ppl5Atx9xLS3UHLLTWS/BOwjkeBJJaRx10
  1. 在交换机或 Linux 主机上安装 `mkpasswd` 实用程序
cumulus@switch:~$ sudo -E apt-get update
cumulus@switch:~$ sudo -E apt-get install whois
  1. 要为 SHA-512、SHA256 或 MD5 加密生成哈希密码,请运行以下命令。出现提示时,输入要哈希的明文密码

    SHA-512 加密

    cumulus@switch:~$ mkpasswd -m SHA-512
    Password:
    $6$bQcjKuWgKC0vdwT5$.ZlRgmS44geDH/HsCIttldsaxJ7Y/NidicXwR0FarwXq74uA/yJHxQXGHZwNviY/cG412i7Grzl6Wk8mStJwD0
    

    SHA256 加密

    cumulus@switch:~$ mkpasswd -m SHA-256
    Password:
    $5$SJsPU8bjl2F$.fzRpTGxwGw82RDdFPwhIermSSh6g2ZCYzPeNpeDrgC
    

    MD5 加密

    cumulus@switch:~$ mkpasswd -m MD5
    Password:
    $1$/ETjhZMJ$P73qhBZEYP20mKnRkhBol0
    

设置本地用户的哈希密码

运行 `nv set system aaa user <username> hashed-password <password>` 命令

cumulus@switch:~$ nv set system aaa user admin2 hashed-password '$1$/ETjhZMJ$P73qhBZEYP20mKnRkhBol0'
cumulus@switch:~$ nv config apply
cumulus@switch:~$ sudo useradd admin2 -c "First Last" -p '$1$/ETjhZMJ$P73qhBZEYP20mKnRkhBol0'

哈希密码字符串包含字符(例如 `$`),这些字符在 Linux shell 中具有特殊含义;您必须将哈希密码括在单引号 (') 中。

删除用户账户

删除用户账户

运行 `nv unset system aaa user <user>` 命令。以下示例删除名为 `admin2` 的用户账户。

cumulus@switch:~$ nv unset system aaa user admin2
cumulus@switch:~$ nv config apply

运行 `sudo userdel <user>` 命令。以下示例删除名为 `admin2` 的用户账户。

cumulus@switch:~$ sudo userdel admin2

断开用户账户活动终端

要断开用户账户的所有活动终端,请运行 `nv action disconnect system aaa user <user-account>` 命令。

cumulus@switch:~$ nv action disconnect system aaa user admin3

显示用户账户

要显示系统上配置的用户账户,请运行 NVUE `nv show system aaa` 命令或 linux `sudo cat /etc/passwd` 命令。

cumulus@switch:~$ nv show system aaa user
Username          Full-name                           Role     enable  Summary
----------------  ----------------------------------  -------  ------  -------
_apt                                                  Unknown  system         
_lldpd                                                Unknown  system         
backup            backup                              Unknown  system         
bin               bin                                 Unknown  system         
cumulus           cumulus,,,                          Unknown  on             
daemon            daemon                              Unknown  system         
dnsmasq           dnsmasq,,,                          Unknown  system         
frr               Frr routing suite,,,                Unknown  system         
games             games                               Unknown  system         
gnats             Gnats Bug-Reporting System (admin)  Unknown  system         
irc               ircd                                Unknown  system         
list              Mailing List Manager                Unknown  system         
lp                lp                                  Unknown  system         
mail              mail                                Unknown  system         
man               man                                 Unknown  system         
messagebus                                            Unknown  system         
news              news                                Unknown  system         
nobody            nobody                              Unknown  off            
ntp                                                   Unknown  system         
nvue              NVIDIA User Experience              Unknown  system         
proxy             proxy                               Unknown  system         
root              root                                Unknown  system         
snmp                                                  Unknown  system         
sshd                                                  Unknown  system         
sync              sync                                Unknown  system         
sys               sys                                 Unknown  system         
systemd-coredump  systemd Core Dumper                 Unknown  system         
systemd-network   systemd Network Management,,,       Unknown  system         
systemd-resolve   systemd Resolver,,,                 Unknown  system         
systemd-timesync  systemd Time Synchronization,,,     Unknown  system         
user1                                                 OSPF     on             
user2                                                 IFMgr    on             
uucp              uucp                                Unknown  system         
uuidd                                                 Unknown  system

要显示有关特定用户账户的信息,请运行 NVUE `nv show system aaa user <user>` 命令

cumulus@switch:~$ nv show system aaa user cumulus
                    operational  applied
------------------  -----------  -------
role                Unknown             
full-name           cumulus,,,          
hashed-password     *                   
ssh                                     
  [authorized-key]                      
state               enabled       enabled 

启用 root 用户

root 用户没有密码,无法使用 SSH 登录交换机。此默认账户行为与 Debian 一致。

启用控制台访问

要从控制台使用 root 登录交换机,您必须设置 root 账户的密码

cumulus@switch:~$ sudo passwd root
Enter new password:
...

启用 SSH 访问

要使用 SSH 以 root 身份登录交换机,请执行以下操作之一

  • 安装 SSH 授权密钥;请参阅 安装授权 SSH 密钥

  • 按照以下步骤设置密码并在 `sshd` 中启用 root 密码身份验证

    1. 运行以下命令

      cumulus@switch:~$ sudo passwd root 
      
    2. 在 `/etc/ssh/sshd_config` 文件中,将 `PermitRootLogin` 设置从 `without-password` 更改为 `yes`

      cumulus@switch:~$ sudo nano /etc/ssh/sshd_config
      ...
      # Authentication: 
      LoginGraceTime 120 
      PermitRootLogin yes 
      StrictModes yes
      ...
      
    3. 重启 `ssh` 服务

      cumulus@switch:~$ sudo systemctl reload ssh.service
      

密码安全

用户密码是验证用户访问交换机的关键凭据,也是保护交换机的第一道防线。密码的复杂性、更换能力和更改频率决定了交换机第一道防线的安全级别。为了进一步改进和加强交换机,Cumulus Linux 启用了一个密码安全选项,该选项强制执行适用于交换机上所有用户的密码策略;用户密码必须至少包含一个小写字符、一个大写字符、一个数字、一个特殊字符,并且不能是用户名。此外,密码长度必须至少为 8 个字符,在 365 天后过期,并在过期前 15 天发出警告。

您可以更改这些密码安全策略;请参阅下面的 配置密码策略

禁用密码安全

密码安全选项默认处于启用状态。要禁用密码安全,请运行 `nv set system security password-hardening state disabled` 命令

cumulus@switch:~$ nv set system security password-hardening state disabled
cumulus@switch:~$ nv config apply

要重新启用密码安全,请运行 `nv set system security password-hardening state enabled` 命令。

配置密码策略

下表描述了 Cumulus Linux 提供的密码策略,并显示了密码安全启用时的默认设置。您可以使用 NVUE 命令更改这些设置。

策略描述默认设置
小写密码必须至少包含一个小写字符。您可以指定 `enabled` 或 `disabled`。已启用
大写密码必须至少包含一个大写字符。您可以指定 `enabled` 或 `disabled`。已启用
数字密码必须至少包含一个数字。您可以指定 `enabled` 或 `disabled`。已启用
特殊字符密码必须至少包含一个特殊字符。您可以指定 `enabled` 或 `disabled`。已启用
密码长度最小密码长度。您可以指定介于 6 到 32 个字符之间的值。8 个字符
过期天数密码过期的持续天数。您可以设置介于 1 到 365 天之间的值。180 天
密码过期警告在密码过期前发送警告的天数。您可以设置介于 1 到 30 天之间的值。15 天
防止用户名作为密码密码不能是用户名。您可以指定 `enabled` 或 `disabled`。已启用
密码重用您可以重用同一密码的次数。您可以设置介于 1 到 100 之间的值。10

以下示例命令禁用强制执行小写和大写字符、数字和特殊字符

cumulus@switch:~$ nv set system security password-hardening lower-class disabled
cumulus@switch:~$ nv set system security password-hardening upper-class disabled
cumulus@switch:~$ nv set system security password-hardening digits-class disabled
cumulus@switch:~$ nv set system security password-hardening special-class disabled

特殊字符包括 ` ~ ! @ # $ % ^ & * ( ) - _ + = | [ { } ] ; : ' , < . > / ? 和空格。

以下示例命令将最小密码长度设置为 10 个字符,密码过期时间设置为 30 天,过期警告设置为过期前 5 天。

cumulus@switch:~$ nv set system security password-hardening len-min 10
cumulus@switch:~$ nv set system security password-hardening expiration 30
cumulus@switch:~$ nv set system security password-hardening expiration-warning 5

以下示例命令允许用户名作为密码,并将您可以重用密码的次数设置为 20

cumulus@switch:~$ nv set system security password-hardening reject-user-passw-match disabled
cumulus@switch:~$ nv set system security password-hardening history-cnt 20

显示密码策略

要显示当前配置的密码策略,请运行 `nv show system security password-hardening` 命令

cumulus@switch:~$ nv show system security password-hardening
                         operational  applied 
-----------------------  -----------  --------
state                    enabled      enabled 
reject-user-passw-match  disabled     disabled
lower-class              enabled      enabled 
upper-class              enabled      enabled 
digits-class             disabled     disabled
special-class            disabled     disabled
expiration-warning       15           15      
expiration               180          180     
history-cnt              20           20      
len-min                  8            8