用户账户
默认情况下,Cumulus Linux 有两个用户账户:cumulus 和 root。
*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
- 在交换机或 Linux 主机上安装 `mkpasswd` 实用程序
cumulus@switch:~$ sudo -E apt-get update
cumulus@switch:~$ sudo -E apt-get install whois
要为 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 密码身份验证
运行以下命令
cumulus@switch:~$ sudo passwd root
在 `/etc/ssh/sshd_config` 文件中,将 `PermitRootLogin` 设置从 `without-password` 更改为 `yes`
cumulus@switch:~$ sudo nano /etc/ssh/sshd_config ... # Authentication: LoginGraceTime 120 PermitRootLogin yes StrictModes yes ...
重启 `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