如何在创建 Linux 用户时设置指定加密哈希?

如何在创建 Linux 用户时设置指定加密哈希?

我想在我的计算机上创建几个 Linux 用户,以针对不同类型的密码(包括长度、字符集和加密哈希方法)测试 JohnTheRipper。如何在创建新用户时轻松指定要使用的哈希算法?我知道文件 /etc/login.defs 包含变量 ENCRYPT_METHOD,该变量在许多 Debian 系统上默认设置为 SHA512,但我想知道是否可以在不修改此文件的情况下使用其他加密哈希。

ps:我尝试修改此文件,重新启动并使用命令 adduser 创建一个新用户,但加密哈希方法用户始终是 SHA512

谢谢

答案1

使用非默认散列方法设置密码的最简单方法是先手动对密码进行散列,然后在设置用户时提供该密码:

 adduser --password HASHEDPASSWORD user

其中 HASHEDPASSWORD 必须遵循系统针对该crypt功能的标准(man 3 crypt):

如果 salt 是一个以字符“$id$”开头的字符串,后面跟着以 结尾的字符串"$"

         $id$salt$encrypted

然后,id 不再使用 DES 机器,而是识别所使用的加密方法,然后确定如何解释密码字符串的其余部分。支持以下 id 值:

          ID  | Method
          ---------------------------------------------------------
          1   | MD5
          2a  | Blowfish (not in mainline glibc; added in some
              | Linux distributions)
          5   | SHA-256 (since glibc 2.7)
          6   | SHA-512 (since glibc 2.7)

因此,这 $5$salt$encrypted 是一个 SHA-256 编码的密码,也是$6$salt$encrypted一个 SHA-512 编码的密码。

要从命令行生成正确的哈希值,你可以查看这里

答案2

经过一些测试,创建使用不同哈希算法的不同用户的最佳方法由 3 个步骤组成:

  1. 创建无密码的用户
  2. 使用指定参数(盐、密码、哈希算法)创建 UNIX 格式的密码
  3. 在 /etc/shadow 中设置生成的 UNIX 密码

以下是一个用户的示例测试1,使用密码1234md5作为散列函数。

sudo adduser test1 --disabled-password sudo mkpasswd --method=md5 --salt=coolsalt 1234 $1$coolsalt$qTXiZzGn08J.xYkV1ce1y1

现在,只需编辑/etc/shadow

编辑前 test1:*:16559:0:99999:7:::

编辑后 test1:$1$coolsalt$qTXiZzGn08J.xYkV1ce1y1:16559:0:99999:7:::

之后,您可以尝试以该用户登录来检查格式是否正确。

whoami root su test1 Password: 1234 whoami test1

谢谢您的帮助

相关内容