創建Linux用戶時如何設定指定加密hash?

創建Linux用戶時如何設定指定加密hash?

我想在我的電腦上建立一些 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$encryptedSHA-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/影子

編輯前 test1:*:16559:0:99999:7:::

編輯後 test1:$1$coolsalt$qTXiZzGn08J.xYkV1ce1y1:16559:0:99999:7:::

之後,您可以嘗試使用該使用者登錄,檢查格式是否正確。

whoami root su test1 Password: 1234 whoami test1

謝謝您的協助

相關內容