Linuxでユーザーパスワードをクリアテキストとして表示する方法


28

ユーザーのパスワードはに保存されますが/etc/passwd、暗号化された方法で保存されるため、ルートでもパスワードを見ることができません。

jane:x:501:501::/home/jane:/bin/bash
fred:x:502:502::/home/fred:/bin/bash

上記のように:x:、パスワードを表します。

パスワード/etc/passwdをクリアテキストで保存し、ルートがそれらを見ることができるようにする方法(可能な構成)はありますか?


10
いいえ。それは機能です。また、rootアカウントはファイルにアクセスするためにユーザーのパスワードを必要としないため、実際の理由もありません。どのような状況でこれを望みますか?
HalosGhost 14

1
私はこれに興味がありますが、システムの管理者(ルート)が他のユーザーのパスワードを見ることができないのはなぜですか?
user78050 14

5
@ user78050は、rootユーザーが他のユーザーのパスワードを知る理由がないため、他のユーザーのパスワードを知ることは大きなセキュリティリスクになるためです。
デビッドZ 14

16
それは、ビジネスで最も単純なセキュリティ原則に違反しているためです。「パスワードをプレーンテキストで保存しないでください」。セキュリティがうまくいけば、ユーザーだけがパスワードを知って、他の誰も知らないはずです。さらに、これを行う理由はまったくありません。rootユーザーが別のユーザーのパスワードを知るのに役立つ単一の管理状況を考えることはできません。
HalosGhost 14

3
MD5「暗号化方式」を使用してから、レインボーテーブルを使用してパスワードを解読します。
クリスティアンシウピトゥ14

回答:


58

他の2つの答えは、これがバッドアイデア™であるということをあなたに教えました。しかし、彼らはあなたに難しいことを伝えており、たくさんのプログラムを変更する必要があります。

それは真実ではない。それは超簡単。変更する必要があるのは1つまたは2つの構成ファイルのみです。これを指摘することは重要だと思います。なぜなら、あなたがコントロールしていないシステムにログインするとき、あなたはそれを知っているべきだからです。これらは実際にプレーンテキストのパスワードをに入れたり、に入れ/etc/passwdたり/etc/shadowすることはなく、別のファイルに入れられます。注:パスワードをプレーンテキストで保持したくないので、これらをテストしていません。

  1. 編集/etc/pam.d/common-password(パスワードの変更をキャッチする)または/etc/pam.d/common-auth(ログインをキャッチする)と追加… pam_exec expose_authtok log=/root/passwords /bin/cat

  2. 両方を編集し、でpam_unixからpam_userdbに切り替えcrypt=noneます。あるいは、パスワードが変更されたときに記録するために、それをcommon-passwordのみに入れることもできます(pam_unixも同様に残します)。

  3. shadow(強力なハッシュオプションと同様に)pam_unixからオプションを削除してシャドウファイルを無効にし、従来の暗号化パスワードに戻すことができます。プレーンテキストではありませんが、John the Ripperがそれを修正します。

詳細については、PAM System Admin Guideを確認してください。

PAMのソースコードを編集したり、独自のモジュールを作成することもできます。PAM(またはモジュール)をコンパイルするだけで、それ以外は何も必要ありません。


1
プレーンテキストパスワードはに書き込まれると思います/root/passwords
ファヒムミタ14

ところで いかに簡単か、また、システムが危うくなった場合にどこを調べなければならないかを知ることは非常に良いことです。
エリック14

8
@erik受け入れられた回答として最も役立つと思われる回答を選択するのは、質問者の特権です。OPが「そうしないで!」最も役立つ…また、明確にするために、これは侵害または悪意を持って管理されたシステムでパスワードを盗む唯一の方法ではありません。したがって、PAM configを見て、安全であると判断することはできません。
デロバート14

3
これはむしろ、ディストリビューションがPAMを使用していることを前提としていますが、PAMのすべてが使用しているわけではありません。
バリティ14

1
@mswクリアテキストのパスワードを使用してLinuxボックスを実行するのは明らかに一般的だと考えているため、私は答えました(ボビーは彼の功績により、答えを修正しました。パスワードの再利用を促すため、これは危険な信念です。「実際には簡単なので、ファイルを1つまたは2つ編集するだけで、あなたには伝えません」という答えを投稿した場合、誰もそれを信じなかったでしょう。(当時)はるかに高い投票数で、より徹底的な答えを聞いてください。ポイントを作るには、それを行う方法を言う必要があります。(ただし、それらは例のコピーと貼り付けではありません。使用するために考えが必要です。)
デロバート14

34

親愛なる、大丈夫、最初から始めましょう...

ユーザーのパスワードは/ etc / passwdに保存されますが、暗号化された方法で保存されます

いいえ、それらはに保存さています/etc/passwd、それはかなり前のことです。現在、ほとんどの場合、パスワードはいわゆるシャドウファイルに保存さてい/etc/shadowます。

しかし、暗号化された方法で、ルートでさえそれらを見ることができません:

私はそれが時々交換可能に使用されることを知っていますが、ハッシュ暗号化ではありません。暗号化はまさにその定義により可逆です。つまり、暗号化されたものをクリアテキスト形式に変換することができます。ハッシュは、いかなる方法でも可逆的ではないように設計されています(ブルートフォースを除く)。ハッシュされたものの元のクリアテキスト形式は、回復可能であるとは想定されていません。

シャドウファイルのパスワードはハッシュとして保存されます。

上記のように:x:パスワードを表します

xこのケースでは、従来のパスワードフィールドのプレースホルダです。これxは、パスワードがシャドウファイルで見つかることを意味します。

/ etc / passwdにパスワードをクリアテキストで保存し、ルートがそれらを見ることができるようにする方法(可能な構成)はありますか?

はい、これは確かに可能ですが、いくつかの理由で良い考えではありません。Derobertの答えは、それを行う簡単な方法を説明しています。

しかし、なぜそれは良い考えではないのですか?さて、シンプルだが非常に重要な理由のために:セキュリティ。これらの質問を読むことをお勧めします。

しかし、要約すると、次のことを前提としています。会社にサーバーがあり、すべてのユーザーアカウントがパスワードで保護されており、これらのユーザーアカウントのデータが同じパスワードで暗号化されています。外部からのクラッカーはサーバーにアクセスできますが、重要なデータはユーザーアカウントで暗号化されているためアクセスできません。

ここで、パスワードがプレーンテキストで保存されると仮定します。パスワードが読み取れるため、クラッカーは突然すべてにアクセスできます。しかし、ハッシュ値として保存されている場合、ブルートフォース攻撃を行うためのリソースを大量に持っている人を除き、ほとんど役に立たないでしょう。


2
暗号化とハッシュに関するOPの防衛では、暗号manページのglibcからは言う:«塩である場合は、文字で始まる文字列が"$id$"で終了した文字列が続く"$"$id$salt$encrypted その後、代わりにDES機を用いての、id識別暗号化、次に使用される方法と、この文字列の残りの解釈方法を決定します»
クリスティアン・Ciupitu 14

1
興味深いが、デロバートの答えがそうであるように、主要な質問には答えない。
エリック14

6
@erik質問に対する正しい答えは、技術的に可能な場合でも「やらない」です。これはそれらの時間の1つです。
ジル「SO-悪であるのをやめる」14

1
この行を変更することをお勧めします:「いいえ、多くのアプリケーションとその動作方法を変更する以外に方法はありません。」それは簡単ではないという印象を残します(または少なくとも機能的に同等なことをするのは簡単です)。
デロバート14

2
@Bobbyこれは優れた応答ですが、優れた回答ではありません。それを優れた答えにするためには、derobertの答えに示されているように、「簡単に不可能」であるという部分を変更する必要があります。
マイケルドースト14

10

まず、暗号化されたパスワードは入っていませんが/etc/passwd、入っています/etc/shadow。この理由の1つは、/etc/passwd一般に読み取り可能であるためです(たとえば、別のユーザーのGECOSフィールド情報を見つけることができます)。特に、古い暗号化スキームでは、暗号化されたパスワードに対するブルートフォース攻撃が可能です。

パスワードをプレーンテキストで保存するだけでは必要ありません/etc/shadow。有効なパスワードを確認するために情報を読み取るパスワードプログラムとライブラリの更新が必要になります。そして、すべてのユーティリティが、プレーンテキストのパスワードストレージを理解しないものに対して静的にリンクされるのではなく、共有ライブラリを使用してその情報にアクセスすることを期待する必要があります。

これがセットアップの構成のオプションである場合、不適切にスイッチをオンにする愚かな人々が常に存在します。そして、彼らはまだCRT画面で作業しており、情報を見ている間、建物の外から簡単に取り出せるようにこれを放送しています。

それとは別に、人々は複数のシステムで同じまたは類似のパスワードを使用する傾向があるため、パスワードを人間が読めるようにすることはお勧めできません。一部のシステム管理者は他のシステムでシステム管理者を再試行できるため、ユーザーがアカウントを持っていることを知っています。

もっと面白いことがあるに違いありません。その動作はシステムで調査できます。


3
/etc/shadow暗号化されたパスワードは保存せず、パスワードハッシュを保存します。はい、関数が呼び出されcrypt、manページには「暗号化されています」と表示されますが、魚を自転車と呼ぶと、車輪は与えられません。/etc/shadowプログラムを再コンパイルせずに、異なる形式でストアパスワードを作成することができることに注意してください(少なくともLinuxおよびSolarisで):認証方法は常に動的にリンクされます。パスワードをプレーンテキストとして保存するのはひどい考えです、ちょっとした作業で可能です。
ジル 'SO-悪であるのをやめる' 14

@gilles OPの用語を再利用しましたが、ハッシュがより適切な用語であることは正しいです。
アントン14

3

基本的な理由(これが悪い考えである理由)は、他のユーザー(root、adminまたはその他)が他のユーザーのパスワードにアクセスしてはならないことです。

単にパスワードが認証の手段だからです。他のユーザーのパスワードを知っている場合、その資格情報(ユーザー名+パスワード)を知っているので、そのユーザーとしてログインできます。(または彼女またはそれ)になりすます。

そのユーザーとしてログインしたときに私が行うアクションは、他のユーザーが責任を負います。そして、それは認証の仕組みではありません。

大量の重要なファイルを削除する、ハードディスクを消去する、バックアップを消去する、原子力発電計画をシャットダウンするなど、アクションは悲惨なものになる可能性があります。

または単に違法。私(管理者)がすべてのパスワードにアクセスできる銀行機関を想像してください。レジ係のパスワードを使用して、大統領の銀行口座からウィンドウクリーナーの銀行口座への100万ドルの移動を注文できます。次に、レジの優れたパスワードを使用してトランザクションを承認します。次に、ウィンドウクリーナーの口座から自分のオフショア銀行口座への小切手を承認します。

それから私はバハマで長期休暇に行きます...


そのビューでは、パスワードのハッシュと個別のシャドウファイルの使用は、このルールを実施する手段と見なすことができます(ユーザーが別のユーザーになりすますことはできません)。

また、@ Miralがコメントしたように*su偽装を許可している間(および上記の引数からのスローの種類)、その使用のログも保持している例外があります(したがって、「ログが保持されます」)。

*銀行の例はおそらく最良ではなかった。セキュリティが重要な環境では、通常、1つのパスワードよりも多くの認証および許可の手段が必要です。


この引数の欠点の1つは、rootユーザーがパスワードを知らなくてもシステム上の他のユーザーになりすますことができることです。と同じくらい簡単su otheruser
ミラル14

@Miralあなたは正しいです、私はこれを考慮しませんでした。の使用suはログに記録されますが、suはユーザーが別のユーザーになりすましている間に実際に行われたことの記録を保持しません。また、悪意のあるルートは常にログを変更して、将来の調査員からアクションを隠すことができます。
ypercubeᵀᴹ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.