web-dev-qa-db-ja.com

/ etc / shadowのファイル許可が600に設定されているのはなぜですか?

/etc/shadowのアクセス許可は600です。つまり、root以外のユーザーは読み取ることができません。

ただし、内部のすべてのパスワードはクリアテキストではなくハッシュとして保存されるため(ハッシュから元のパスワードを計算することは不可能です)、なぜ誰もが読み取れないのでしょうか?

オフラインの総当たり攻撃を防ぐため。

ハッシュを元に戻すことはできませんが、一致するものが見つかるまで、考えられるすべてのパスワードのハッシュを試みることができます。また、適切なハードウェアとファイルへのローカルアクセスで毎秒数百万回試行できます。

ファイルに644権限がある場合、ゲストセッションでもシステムにログインした人はだれでもこのファイルをコンピュータからコピーできます(USBスティックにまたはscpを介してリモートで、コンピューターにこの証拠を残さずにオフラインの総当たり攻撃を試みます


Ubuntuの権限は実際には640ではなく600であることに注意してください。

$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1239 Jun 25 04:35 /etc/shadow

ただし、他のユーザーへのアクセス許可はまだないため、これは重要ではありません。また、デフォルトでは、shadowグループには誰もいません。


もともと、ハッシュは/etc/passwdpasswdと呼ばれる理由)に格納されていました。Linuxが作成されたとき、ハッシュがクラッキングされ、当時使用されていた弱い型も事実上不可能でした。しかし、最終的には、少なくとも比較的弱いパスワードであるハッシュのクラッキングが実行可能になるまで、処理能力が向上しました。

/etc/passwdの許可を640または600に変更しても、通常のユーザーとして/etc/passwdを読み取ることができる正当な理由があるため、機能しません(UIDをユーザー名、ユーザーのフルネーム、電話番号などを取得するため)、ハッシュは/etc/shadowに移動され、640パーミッションが付与されました。 /etc/passwdのユーザーのパスワードハッシュフィールドの代わりにxを使用して、そのユーザーのハッシュが/etc/shadowに保存されていることを示します。

60

実際、/ etc/shadowは、fromからユーザー名とパスワードの一般に読み取り可能なリストを移動できるように作成されました。

実際に答えを得る前に、これはちょっとした歴史の教訓になります。履歴を気にしない場合は、少し下にスクロールします。

昔、Linuxを含むUnixライクなOSは、一般的にすべて/ etc/passwdにパスワードを保持していました。このファイルには、たとえば数値のユーザーIDとユーザー名の間のマッピングを可能にする情報が含まれているため、誰でも読み取り可能です。その情報は、完全に合法的な目的のために普通のユーザーにとっても非常に有用であるため、ファイルの世界を読み取り可能にすることは、ユーザビリティにとって非常に有益です。

当時も、ログインできる人なら誰でも自由に読むことができる有名な場所にあるファイルにパスワードをプレーンテキストで保存するのは悪い考えであることに気づきました。ある意味で、パスワードはハッシュ化されました。これは古い「暗号化」パスワードハッシュメカニズムであり、現代のシステムではほとんど使用されませんが、レガシーの目的でサポートされることがよくあります。

システムの/ etc/passwdを見てください。どこでもxと書かれている2番目のフィールドを参照してください。問題のアカウントのハッシュ化されたパスワードを保持するために使用されていました。

問題は、人々が/ etc/passwdをダウンロードしたり、ダウンロードすることさえできず、パスワードの解読に取り組むことができるということでした。コンピューターが特に強力ではなかったので、これは大きな問題ではありませんでした(Clifford Stoll、The Cuckoo's Eggで、1つのパスワードをハッシュする時間を与えます) 1980年代半ばには約1秒でIBM PCクラスシステム)が、処理能力が向上するにつれて問題になりました。ある時点で、まともなWordリストを使用して、これらのパスワードのクラッキングが容易になりました。技術的な理由から、このスキームでは8バイトを超えるパスワードもサポートできませんでした。

これを解決するために2つのことが行われました。

  • より強力なハッシュ関数への移行。古いcrypt()はその耐用年数よりも長持ちしており、将来的に保証され、計算的に強力な、より現代的なスキームが考案されました。
  • ハッシュされたパスワードを、誰にも読めないファイルに移動します。この方法では、パスワードハッシュ関数が予想よりも弱いことが判明した場合、または誰かが最初から弱いパスワードを持っている場合でも、攻撃者が最初からハッシュ値にアクセスするための別の障害がありました。もはや無料ではありませんでした。

そのファイルは/ etc/shadowです。

/ etc/shadowで動作するソフトウェアは、一般的に非常に小さく、高度に焦点を合わせており、問題が発生する可能性があるため、レビューで追加の精査を受ける傾向があります。また、特別な権限で実行されます。これにより、/ etc/shadow、の読み取りと変更が可能になり、通常のユーザーはそのファイルを見ることができなくなります。

/ etc/shadowのアクセス許可は制限されています(ただし、既に指摘したように、あなたが述べているほど厳密ではありません))。そのファイルの目的は機密データへのアクセスを制限することです。

パスワードハッシュは強力であるはずですが、パスワードがインターネット上のトップ500パスワードリストにある場合、ハッシュにアクセスできる人は誰でも見つけることができます。パスワードをすばやく。ハッシュを保護することで、その単純な攻撃を防ぎ、単純なピークから、すでにホストのシステム管理者であるか、または権限昇格攻撃を最初に行うことを要求するまで、成功した攻撃の水準を上げます。特に、正しく管理されたマルチユーザーシステムでは、両方ともsignificantlyは、誰でも読み取り可能なファイルを見るよりも困難です。

13
a CVn

/ etc/shadowファイルの許可が600に設定されているのはなぜですか?

誰があなたにそれを言ったの?

$ls -l /etc/shadow
-rw-r----- 1 root shadow 1407 mei 18 10:05 /etc/shadow
  • 640です。

簡単な答え:Linuxの許可は真剣に受け止められます。 「他の人」が/etc/shadowで何かをする理由はありません。そして、グループ「シャドウ」がそれに書き込む理由はありません。そして、実行は順不同です。

ただし、内部のすべてのパスワードはクリアテキストではなくハッシュとして保存されるため(ハッシュから元のパスワードを計算することは不可能です)、なぜ誰もが読み取れないのでしょうか?

その理由は1つだけではないからです。

ハッシュは一方向です。誰かに読み取りアクセス権を与えると、スクリプトを使用してこの一方向を悪用することができます。想像できるWordをリストし、ハッシュを作成するだけです。ある時点で、パスワードと一致する場合があります。ただし、しばらく時間がかかる場合もあります。

この answer は興味深いものであり、ブルートフォーシングに関する推定値があります。

10
Rinzwind

重要な背景:/etc/shadowは、パスワードハッシュを非表示に保つためだけに存在します。 Unixの初期の時代、パスワードハッシュは/etc/passwdに保存されていました。コンピューターがより強力になり、ネットワーク接続がより永続的になり、セキュリティのエクスプロイトがより洗練されたため、パスワードハッシュをWordで読み取り可能な状態に保つことが問題を求めていることに気付きました。 (エクスプロイトの詳細は説明しません。これについては十分な答えが既にあります。)

しかし、/etc/passwdは読み取り保護できませんでした。あらゆる種類のプログラムで、数値のユーザーIDをユーザー名にマッピングし、ホームディレクトリ、デフォルトのシェル、ユーザーのフルネーム(およびオフィス番号など)を検索するために使用されます-man finger)を確認してください。そのため、機密部分であるパスワードハッシュは/etc/shadowに移動され、残りはそのまま残りました。そのため、/etc/passwd(名前を軽deする)にすべてが含まれています除く(ハッシュされた)パスワード。

2
alexis