解決策 1:
これは、DES ベースの暗号化 (AKA 'descrypt') がパスワードを 8 バイトで切り捨て、パスワード検証のために最初の 8 バイトのみをチェックするためです。
これがあなたの直接の質問に対する答えですが、あなたの文脈から示唆される一般的なアドバイスは次のとおりです:
-
幸いなことに、私の読書によると、
MD5
/etc/login.defs
で 実際には md5crypt ($1$) であり、少し時代遅れであり、作成者によって非推奨であると宣言されていますが、DES ベースの暗号よりもはるかに優れています (そして 間違いなく プレーンな MD5 のような生の無塩ハッシュよりもはるかに優れています!ほとんどのソルト化されていないハッシュは、コモディティ GPU で数十億の速度でクラックできます 毎秒) -
SHA256
のようです (実際には sha256crypt) とSHA512
(実際には sha512crypt) もあります。代わりにそれらの 1 つを選びます。 -
パスワードを
password
に設定した場合 または各スキームの下にあるもので、それらが -crypt バリアントであるという私の結論が正しいかどうかを視覚的に確認できます (ここでの例は、hashcat の例のハッシュから取得され、すべて「hashcat」であり、一部は読みやすくするためにラップされています):
推奨されません - ソルトなしまたは従来のハッシュ タイプ、パスワードの保存には「速すぎる」(クラッキング レート):
MD5 - 8743b52063cd84097a65d1633f5c74f5
SHA256 - 127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935
SHA512 - 82a9dda829eb7f8ffe9fbe49e45d47d2dad9664fbb7adf72492e3c81ebd3e2 \
9134d9bc12212bf83c6840f10e8246b9db54a4859b7ccd0123d86e5872c1e5082f
descrypt - 48c/R8JAv757A
OK - 無塩、切り捨てなしよりははるかに優れていますが、最新のハードウェアでのブルート フォースに対する耐性が十分ではありません:
md5crypt - $1$28772684$iEwNOgGugqO9.bIz5sk8k/
より良い - 大規模なソルトとワーク ファクターを備えた比較的最新のハッシュ:
sha256crypt - $5$rounds=5000$GX7BopJZJxPc/KEK$le16UF8I2Anb.rOrn22AUPWvzUETDGefUmAV8AZkGcD
sha512crypt - $6$52450745$k5ka2p8bFuSmoVT1tzOyyuaREkkKBcCNqoDKzYiJL9RaE8yMnPgh2XzzF0NDrUhgrcLwg78xs1w5pJiypEdFX/
これらのうち、復号化のみが 8 で切り捨てられます。最後の 2 つが最善の策です。
(補足:上記の md5crypt および sha512crypt の例の数字のみのソルトは、hashcat がサンプル ハッシュを作成する方法の副作用にすぎません。実際の健全なソルトは、通常、はるかに大きなキースペースから取得されます)。
また、このプラットフォームの /etc/login.defs でサポートされているハッシュ タイプのみをリストしていることにも注意してください。一般的な用途では、sha256crypt と sha512crypt でさえ置き換えられました。最初は bcrypt に、次に scrypt や Argon2 ファミリーのような、真に並列攻撃に耐性のあるハッシュに置き換えられました。 (ただし、1 秒以内に完了する必要がある対話型ログインの場合、bcrypt は実際には後者よりも攻撃に対して耐性があることに注意してください)
解決策 2:
/etc/login.defs
でこれを修正しました :
PASS_MAX_LEN 8
問題が修正されました。
重要な追加:
上記のパラメータを変更した後、8 桁を超えるパスワードを設定できるようになりましたが、実際のパスワードは最初の 8 桁しかないため、依然として無効です。これが私の問題かどうかはわかりません。
私の最終的な解決策は、
を設定することです# ENCRYPT_METHOD DES
へ
ENCRYPT_METHOD MD5
/etc/login.defs
で .
これで、8 より大きいルート パスワードを設定できるようになりました。