Linux オペレーティング システムの /etc/shadow およびシャドウ キャッシュ ファイルの目的は何ですか?

Linux オペレーティング システムの /etc/shadow およびシャドウ キャッシュ ファイルの目的は何ですか?

Linux オペレーティング システムの /etc/shadow ファイルの目的は何ですか? また、SUSE クライアントでも同じですか? 1 つのシャドウ キャッシュ ファイルが維持されていますが、その目的は何ですか?

答え1

当初から、Unix および Unix スタイルのオペレーティング システム (Linux を含む) は、パスワードを暗号化ハッシュ (1) として保存してきました。これらのハッシュはもともと に保存されてい/etc/passwdましたが、情報を他の目的で利用できるようにするには、このファイルを誰でも読み取り可能にする必要がありました。各ファイル所有者の数値ユーザー ID をユーザー名に変換して表示するために、単純な でさえもls -l読み取る必要があります/etc/passwd。しかし、ハッシュ化されたパスワードを誰でも読み取り可能なファイルに保存すると、悪意のあるユーザーが簡単にハッシュを取得し、他のユーザーのアカウントに使用できるパスワード (2) を生成できるようになります。

これを防ぐために、ハッシュ化されたパスワードは最終的に、ルート(および場合によっては特権を持つ管理者グループ)のみが読み取り可能なファイルに移動されました。/etc/shadowこれにより、システムの通常のユーザーからはハッシュが隠され、ユーザー認証の目的ではハッシュを利用できる状態が維持されます。

ノート:

  1. 細かいことを言うのは分かっていますが、保存されたパスワードはない暗号化されています。これらは、暗号的に安全な (少なくとも執筆時点では) ハッシュ アルゴリズムを使用してハッシュ化されています。ここで関係する主な違いは、ハッシュが固定長 (暗号化されたテキストの長さは、暗号化されたテキストの長さに基づいて変化します) であり、非可逆的 (暗号化されたテキストは復号化できますが、ハッシュ化されたテキストは復号化できません) であることです。

  2. ハッシュは固定長であるため、任意のハッシュ表現に一致する入力は無限にあります。したがって、攻撃者は、必ずしも所有者のユーザーのパスワードと同じではない有効なパスワードを見つけることができますが、これは現代の暗号ハッシュのサイズを考えると非常に可能性が低いです。

答え2

この/etc/shadowファイルはセキュリティ上の理由から作成され、各ユーザーの暗号化されたパスワードが保存されます。

元々、暗号化されたパスワードは に保存されていました/etc/passwd/etc/passwdシステムがユーザー ID をユーザー名にマッピングできるように、またユーザーが互いの情報 (他のユーザーのホーム ディレクトリや電話番号など) を見つけられるように、 は誰でも読み取り可能である必要がありました。これらの情報は、従来は「gecos」フィールドに保存され、「finger」ユーティリティによって表示されていました。

しかし、人々はこれがセキュリティ上の問題であることに気づきました。十分な時間があれば誰でも、いわゆるブルートフォース攻撃telnet、考えられるすべてのパスワードに対して暗号化されたパスワードをプログラムで生成します。攻撃者が実際にまたは経由でログインを試みることなくこれを行った場合ssh、システムは攻撃を受けていることを認識できません。

そのため、暗号化されたパスワードは/etc/shadow、root だけが読み取り可能な新しく作成された に移動されました。

/etc/passwdまた、パスワードが最後に変更された日時や有効期限など、ファイルではサポートされていない、ユーザーのアカウントとパスワードに関連するその他の情報も含まれています。

見るman 5 shadowウェブ版ファイル形式の詳細については、(英語) を参照してください。


SUSE のどのバージョンを扱っているかがわからないため、SUSE でも同じかどうかはわかりません。たとえば、SUSE システムでは MD5 ではなく Blowfish が使用されている可能性があります。

/etc/shadowまた、別の Linux ディストリビューションを実行しているシステムとファイルを混在させていることを示唆しましたが、他のディストリビューションが何であるかは述べていません。

見るSuSE 9.3 から Ubuntu Server x86_64 へのシャドウ ファイルの移行に関する問題例えば。

確認するには、 を開いて/etc/shadow、暗号化されたパスワードフィールドが$1$またはで始まっているかどうかを確認します$2$。 が含まれている場合は$1$、MD5であり、他のほとんどのディストリビューションと互換性があります。 が含まれている場合は$2$、おそらくBlowfishです。Debian 上の Blowfish シャドウ ファイル

Ubuntuを使用している場合は、Ubuntu blowfish の最初の Google 検索結果良い出発点になるかもしれません。

答え3

ユーザーはファイルにリストされます/etc/passwd。このファイルには、ユーザーのログインを許可するだけでなく、システムによって使用される多くの情報が含まれています。

各行はユーザーエントリに対応し、異なるフィールドはコロンで区切られます。最初のフィールドはログインで、その後に対応するパスワードが続きます。

暗号化されたパスワードは、このフィールドに保存されていました。ただし、/etc/passwdファイルはシステム上のすべてのユーザーが読み取り可能である必要があるため、@Mikel が述べたように、暗号化ではブルート フォース攻撃を防ぐことはできません。解決策は、これらの暗号化されたパスワードをルートのみが読み取り可能なファイルに移動することでした/etc/shadow

したがって、に/etc/shadowはシステムユーザーの暗号化されたパスワードが含まれています。パスワードフィールドに/etc/passwdxのみが含まれている場合(「クロス/etc/shadow へ転送します)

答え4

1987 年に Linux Shadow Password Suite となるものを書いたので、世界中の賛成票をすべて集められるかどうか試してみましょう ;)

元の/etc/passwdファイルには、クリアテキスト パスワードの修正された DES ベースのハッシュが含まれていました。crypt()関数が作成された時点では、パスワードの可能な数と 12 ビット (4,096 個の可能な値) の「ソルト」の使用により、パスワード ハッシュに対する攻撃は実行不可能であると考えられていました (UNIX オペレーティング システムの作成者によってこれが表明されました)。各クリアテキスト パスワードには 4,096 個の可能なハッシュ値があり、64 ビットのハッシュ結果と合わせて、合計 2^72 個の可能なパスワード ハッシュが生成されました。

別の投稿者が述べたように、/etc/passwdユーザー名と UID 値間のマッピングにさまざまなユーティリティによっても使用され (ファイルは/etc/groupグループに対して同様の機能を提供します)、そのためには世界中で読み取り可能であることが必要でした。

1980 年代には、/etc/passwdファイルに保存されているパスワード ハッシュに対する辞書攻撃が実行可能になりつつあることが明らかになり、/etc/shadowSystem V の初期リリースで AT&T UNIX に導入されました。オリジナルの Shadow ライブラリを作成するために使用したマニュアル ページを文書化しましたが、それ以降は忘れてしまいましたが、それは間違いなく System V の初期のリリース、おそらく SVR3.2 でした。

AT&T が行ったこと、そして私が SCO Xenix (オリジナルの SCO Xenix であり、後の悪名高い SCO Xenix ではない) 用に 1987 年に実装し、最終的に Linux で使用されるようになったことは、ハッシュ化されたパスワードを に移動するだけのことでした/etc/shadow。これにより、権限のないユーザーが のコピーを取得して攻撃を実行するドライブバイ攻撃を防止できました/etc/passwd。私が Shadow を最初に作成した理由をご存知であれば、/etc/passwd当時ほとんどすべての用途で UUCP を使用していたときに、ユーザーに UUCP 経由でファイルをダウンロードさせたことがあることをご存じでしょう。

Linuxが開発され、広く普及する頃には、パスワードハッシュを攻撃するためのツールが数多く存在していた。の高性能な再実装がcrypt()一つの手段であり、次のようなツールによる辞書ベースの攻撃もあった。割れ目そしてlibクラック他にもいました。最初の移植は Nate Holloway と Floria La Roche によって行われました (私は彼らに功績を認めましたが、彼らより前に誰かが作業を行ったかどうかはわかりません)。

crypt()最終的には、保護されたファイルであっても、 ベースのハッシュの使用は安全ではなくなり、元のMD5ベースのハッシュが変更されました。MD5最終的には、 は弱すぎると判断され、新しいハッシュが使用されました。

理論上は、十分に強力なハッシュを に保存できます/etc/passwd。運用上のセキュリティが不十分なため、多くのシステムでは、/etc/shadowさまざまな攻撃ベクトルを通じてファイルが利用可能になっています。おそらく、「バックアップ ファイルを盗んだ」というのが最も簡単です。

関連情報