最初から、Unix および Unix スタイルのオペレーティング システム (Linux を含む) は常にパスワードを暗号化ハッシュとして保存してきました (1)。これらのハッシュは元々 /etc/passwd
に保存されていました 、しかし、このファイルは他の目的で情報を利用できるようにするために誰でも読み取り可能である必要がありました - たとえ単純な ls -l
/etc/passwd
を読む必要があります 各ファイル所有者の数値ユーザー ID をユーザー名に変換して表示するため。しかし、ハッシュ化されたパスワードを誰でも読めるファイルに保存すると、悪意のあるユーザーがそれらのハッシュを簡単に取得して、他のユーザーのアカウント用に使用可能なパスワード (2) を生成しようとする可能性があります。
これを防ぐために、ハッシュ化されたパスワードは、最終的に root (場合によっては管理者の特権グループ) のみが読み取り可能なファイルに移動されました (/etc/shadow
)。 .これにより、ハッシュをシステムの通常のユーザーから隠し、ユーザー認証の目的でハッシュを利用できるようにします。
メモ :
<オール>衒学的なことですが、保存されたパスワードはそうではありません。 暗号化されています。それらは、暗号学的に安全な (少なくともそれが作成された時点では) ハッシュ アルゴリズムを使用してハッシュされます。ここでの主な違いは、ハッシュが固定長 (暗号化されたテキストの長さは、暗号化されたテキストの長さに応じて異なります) であり、元に戻せない (暗号化されたテキストは解読できますが、ハッシュされたテキストは解読できません) ことです。
ハッシュは固定長であるため、特定のハッシュ表現に一致する入力は無数にあります。したがって、攻撃者は、所有しているユーザーのパスワードと必ずしも同じではない有効なパスワードを見つける可能性がありますが、最新の暗号ハッシュのサイズを考えると、これはほとんどありません.
/etc/shadow
ファイルはセキュリティ上の理由で作成され、各ユーザーの暗号化されたパスワードを保持します。
元々、暗号化されたパスワードは /etc/passwd
に保存されていました . /etc/passwd
システムがユーザー ID をユーザー名にマップできるように、またユーザーがお互いに関する情報を見つけられるように、誰でも読み取り可能である必要がありました。従来、「gecos」フィールドに保存され、「finger」ユーティリティによって表示されていた、他のユーザーのホーム ディレクトリまたは電話番号。
しかしその後、人々はこれがセキュリティ上の問題であることに気付きました。十分な時間があれば、考えられるすべてのパスワードに対して暗号化されたパスワードをプログラムで生成することにより、ブルートフォース攻撃と呼ばれるものを実行できます。攻撃者が実際に telnet
経由でログインしようとせずにそれを行った場合 または ssh
、システムは攻撃されていることを認識できませんでした.
したがって、暗号化されたパスワードは、新しく作成された /etc/shadow
に移動されました 、root のみが読み取り可能です。
/etc/passwd
の他の情報も含まれています。 ファイルは、ユーザーのアカウントとパスワードに関連するものをサポートしていませんでした。パスワードが最後に変更された日時と有効期限が切れる日時。
man 5 shadow
を参照 (Web バージョン) でファイル形式の詳細を確認してください。
あなたが扱っている SUSE のバージョンが分からなければ、SUSE でも同じかどうかはわかりません。たとえば、SUSE システムでは MD5 ではなく Blowfish を使用している場合があります。
また、あなたは /etc/shadow
を混ぜていたことをほのめかしました 別の Linux ディストリビューションを実行しているシステムのファイルですが、他のディストリビューションが何であるかは述べていません。
たとえば、シャドウ ファイルを SuSE 9.3 から Ubuntu Server x86_64 に移行する際の問題を参照してください。
それを理解するには、/etc/shadow
を開いてください 暗号化されたパスワード フィールドが $1$
で始まるかどうかを確認します または $2$
. $1$
が含まれている場合 、次に MD5 であり、他のほとんどのディストリビューションと互換性があります。 $2$
が含まれている場合 の場合、Debian の Blowfish シャドウ ファイルによると、おそらく Blowfish です。
Ubuntu を使用している場合、Ubuntu フグの最初の Google 検索結果が出発点として適している可能性があります。
ユーザーは /etc/passwd
にリストされます ファイル。このファイルには、ユーザーのログインを許可するだけでなく、システムによって使用される多くの情報が含まれています。
各行はユーザー エントリに対応し、異なるフィールドはコロンで区切られます。最初のフィールドはログインで、その後に対応するパスワードが続きます。
暗号化されたパスワードは、このフィールドに保存されていました。ただし、/etc/passwd
ファイルはシステム上の全員が読み取れる必要があるため、@Mikel が述べているように、暗号化はブルート フォース攻撃を防ぎません。解決策は、これらの暗号化されたパスワードをルート専用の読み取り可能なファイルに移動することでした:/etc/shadow
.
したがって、/etc/shadow
システムのユーザーの暗号化されたパスワードが含まれています。システムは、パスワード フィールドが /etc/passwd
の場合、このファイルのパスワードをチェックする必要があることを認識しています。 x だけを含む (「クロス」を意味する) /etc/shadow")