回答:
ハッシュを元に戻すことはできませんが、一致するものが見つかるまで、考えられるすべてのパスワードのハッシュを試みることができます。また、適切なハードウェアとファイルへのローカルアクセスで毎秒数百万回試行できます。
ファイルに644
アクセス許可がある場合、ゲストセッションであってもシステムにログインしたユーザーは、このファイルをコンピューターから(USBスティックまたはリモート経由でscp
)コピーし、オフラインのブルートフォース攻撃を試みることができます。、あなたのコンピューターにこの証拠を残さずに。
Ubuntuのパーミッションは実際640
にはであることに注意してください600
。
$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1239 Jun 25 04:35 /etc/shadow
ただし、他のユーザーに対するアクセス許可はまだないため、これは重要ではありませんshadow
。デフォルトでは、グループに誰もいません。
もともとは、Linuxが作成されたときのように、ハッシュが格納されていたためです/etc/passwd
(これが呼ばれる理由ですpasswd
)。しかし、最終的には、少なくとも比較的弱いパスワードであるハッシュのクラッキングが実行可能になるまで処理能力が向上しました。
/etc/passwd
へのアクセス許可の変更640
または機能600
しない。/etc/passwd
通常のユーザーとして読み取ることができる正当な理由(UIDをユーザー名に変換する、ユーザーのフルネーム、電話番号などを取得する)が多数あるため、ハッシュがに移動したため/etc/shadow
、640
許可が与えられました。のx
ユーザーのパスワードハッシュフィールドの代わりに/etc/passwd
、そのユーザーのハッシュが/etc/shadow
代わりに格納されることを示すために使用されます。
ls
、uidから名前に変換するためにsetuid root などのユーティリティが必要ないことを意味します。
実際には、/ etc / shadowは、ユーザー名とパスワードの公開されている読み取り可能なリストから移動できるように作成されました。
ちょっと待ってください。実際の答えを得る前に、これは少し歴史の教訓になります。履歴を気にしない場合は、少し下にスクロールします。
昔は、Linuxを含むUnixライクなOSは、一般的にすべて/ etc / passwdにパスワードを保持していました。そのファイルは、たとえば数値ユーザーIDとユーザー名の間のマッピングを可能にする情報が含まれているため、誰でも読み取り可能です。その情報は、完全に正当な目的のために普通のユーザーにとっても非常に有用であるため、ファイルの世界を読み取り可能にすることは、使いやすさにとって非常に有益です。
当時でも、人々は、ログインできる人なら誰でも自由に読むことができる有名な場所のファイルにプレーンテキストでパスワードを入れるのは悪い考えだと気づきました。ある意味で、パスワードはハッシュされました。これは、古い「暗号化」パスワードハッシュメカニズムであり、現代のシステムではほとんど使用されませんが、多くの場合、レガシーの目的でサポートされています。
システムの/ etc / passwdを見てください。その2番目のフィールドを見てくださいx
。問題のアカウントのハッシュ化されたパスワードを保持するために使用されていました。
問題は、人々が/ etc / passwdをダウンロードしたり、ダウンロードすることさえできず、パスワードの解読に取り組むことができるということでした。コンピューターは特に強力ではなかったが、これは大きな問題ではなかった(The Cuckoo's Eggの Clifford Stollは、1980年代半ばにIBM PCクラスシステムで1つのパスワードを約1秒ハッシュする時間を与えた)が、処理能力が向上するにつれて問題になりました。ある時点で、まともな単語リストを使用して、これらのパスワードを解読するのが簡単になりました。技術的な理由から、このスキームは8バイトより長いパスワードもサポートできませんでした。
これを解決するために2つのことが行われました。
そのファイルは/ etc / shadowです。
/ etc / shadowで動作するソフトウェアは、一般的に非常に小さく、高度に焦点を合わせており、問題が発生する可能性があるため、レビューで追加の精査を受ける傾向があります。また、特別な権限で実行されるため、/ etc / shadowの読み取りと変更が可能になり、通常のユーザーはそのファイルを見ることができなくなります。
つまり、/ etc / shadowのアクセス許可は制限されています(ただし、既に指摘したように、あなたが述べているほど厳密ではありません)。そのファイルの目的は機密データへのアクセスを制限することです。
パスワードハッシュは強力であると想定されていますが、パスワードがインターネットリストの上位500個のパスワードに含まれている場合、ハッシュにアクセスできるユーザーは誰でもパスワードをすばやく見つけることができます。ハッシュを保護することで、その単純な攻撃を防ぎ、単純なピークからホストのシステム管理者であるか、または権限昇格攻撃を最初に受けることを要求するまで、攻撃の成功の水準を上げます。特に、正しく管理されたマルチユーザーシステムでは、両方とも、世界で読み取り可能なファイルを見るよりもはるかに困難です。
/etc/shadow
「シャドウパスワード」を保持しません(それは問題ではないため)。ファイル全体はの影です/etc/passwd
。専門用語がで使用されている方法を参照してくださいLinuxのシャドウパスワードのHOWTO:あなたのpasswdファイルをシャドウはなぜ?。コンピューティングでの「シャドウ」という用語の他の使用法とは異なり、シャドウコピーではありません(BIOSコードをROMから実行する代わりにRAMにシャドウイングするなど)。/ etc / passwdのフィールドはプレースホルダーで、「実際のパスワードハッシュは/ etc / shadowにあります」という意味の特殊文字を含んでいます。
/ etc / shadowファイルの許可が600に設定されているのはなぜですか?
誰があなたにそれを言ったの?
$ls -l /etc/shadow
-rw-r----- 1 root shadow 1407 mei 18 10:05 /etc/shadow
簡単な答え:Linuxの許可は真剣に受け止められます。「他の人」がで何かをする理由はありません/etc/shadow
。そして、グループ「シャドウ」がそれに書き込む理由はありません。そして、実行は順不同です。
ただし、内部のすべてのパスワードはクリアテキストではなくハッシュとして保存されるため(ハッシュから元のパスワードを計算することは不可能です)、なぜ誰もが読み取れないのでしょうか?
その理由は1つだけではないからです。
ハッシュは一方向です。誰かに読み取りアクセスを許可すると、スクリプトを使用してこの一方向を悪用することができます。想像できる任意の単語をリストし、ハッシュを作成するだけです。ある時点で、パスワードと一致する場合があります。ただし、しばらく時間がかかる場合もあります。
この答え は興味深いものであり、ブルートフォーシングに関する推定値があります。
重要な背景:/etc/shadow
パスワードハッシュを非表示にするためだけに存在します。Unixの初期の頃、パスワードハッシュはに保存されていました/etc/passwd
。コンピュータがより強力になり、ネットワーク接続がより永続的になり、セキュリティの悪用がより洗練されたため、パスワードハッシュを単語が読める状態に保つことが問題を求めていることに気付きました。(エクスプロイトの詳細は説明しません。これについては十分な答えが既にあります。)
しかし/etc/passwd
、読み取り保護することはできませんでした:数値のユーザーIDをユーザー名にマップし、ホームディレクトリ、デフォルトのシェル、ユーザーのフルネーム(およびオフィス番号などman finger
)を検索するために、あらゆる種類のプログラムで使用されます-check out ) 。そのため、機密部分であるパスワードハッシュはに移動され/etc/shadow
、残りはそのまま残りました。そのため/etc/passwd
、名前を軽deし、(ハッシュ化された)パスワード以外のすべてを含みます。
/etc/shadow
していますか600
?