如何在 Linux 上将默认 root 算法设置为 sha512?

如何在 Linux 上将默认 root 算法设置为 sha512?

我可以在下面看到内容/etc/shadow。 root密码的哈希算法是md5,但测试用户的哈希算法是sha512:

root:$1$RjnJa1j6$.HbXUfxVzGSSAgSvz52Zm1:19251:0:99999:7:::
.
.
.
test:$6$6myiVypQtv/A31gF$totJgATLtEnHGHNuDdgRDVyhAOoI3s1xYQ5Cw1DqhjQ4UKC.brqRGSP/GMJ.KpZ079Rqm6KaPG6IhoiwocELY1:0:0:99999:7:::

我检查了以下设置/etc/login.defs

ENCRYPT_METHOD SHA512

/etc/pam.d/system-auth

password sufficient pam_unix.so nullok sha512 shadow try_first_pass try_authtok

两个文件中,算法都设置为sha512,那为什么是root的md5呢?

是否可以在不使用命令的情况下将 root 的默认密码哈希算法设置为 sha512 passwd

谢谢!

答案1

第一个问题的答案很有可能是——遗留系统。旧系统,更新过多次,原来使用md5,当前版本使用,sha所以更新过程不更改密码,因为(见下段)。

您无法将一种哈希值转换为另一种哈希值,因为根据定义,哈希值是一种加密方式。因此,您不知道纯文本(当使用加密密码时也使用盐),因此您无法(轻松)创建root密码的哈希值。

正如评论中提到的:使用passwd

答案2

是否可以在不使用 passwd 命令的情况下将 root 默认密码设置为算法 sha512?

理论上可以通过菊花链来“转换”哈希值。

因此,您将存储旧哈希值的新哈希值;但此时您将在不知道原始明文密码的情况下存储新的哈希值。因此,为了验证给定的密码,您必须首先计算旧哈希,然后根据新哈希检查旧哈希,而不是直接根据新哈希检查密码。

一些网络应用程序在不得不以任何方式迁移非加盐 md5 哈希值时使用了这种方法。考虑到他们有很多用户多年没有再次登录(如果有的话),并且也无法通过他们的(通常是过时的)邮件地址联系到他们。

因此,理论上可以对用户密码实现相同的功能,但是 - 我不知道它是否存在于任何地方。这有点深奥而且不值得。

只需设置一个新密码即可。每次设置哈希/盐时,即使明文密码保持不变,您也会得到一个新的哈希/盐。

答案3

如何在 Linux 上将默认 root 算法设置为 sha512?

一方面我相信这可能是特定于 Linux 发行版的,更重要的是版本。根据 google 的说法,SHA512 于 2001 年推出。我的问题是您使用的 Linux 发行版和版本是什么?因为在 RHEL 7.9 中我的 root 密码是SHA512'd就像我所有的用户帐户一样。

https://man7.org/linux/man-pages/man5/login.defs.5.html

ENCRYPT_METHOD - 这只影响组密码的生成。用户密码的生成由 PAM 完成并受 PAM 配置的约束。建议将此变量设置为与 PAM 配置一致。

MD5_CRYPT_ENAB - 该变量已弃用。您应该使用 ENCRYPT_METHOD。 如果您运行的是现代 Linux 发行版,则很可能已被弃用。

另一方面,如果您运行的是现代 Linux 发行版,并且您的 root 密码是根据$1$id进行 MD5 哈希处理/etc/shadow,而其他密码是根据 id 进行 SHA512加密$6,那么这是一个安全危险信号。

sha512in的设置pam.d告诉passwd命令要生成什么后续哈希值,这完全独立于当前存在于 中的哈希值/etc/shadow。任何有权这样做的人都可以使 root 密码或任何其他密码具有当前 pam 未指定的任何类型的哈希值,system-auth并且password-auth

您基本上应该确保您的login.defspam.d文件指定 SHA512 以及$6$/etc/shadow.

相关内容