パスワード

フリー百科事典ウィキペディアより
ナビゲーションにジャンプ 検索にジャンプ
パスワード
パスワードのスクリーンショット.png
原作者AT&T ベル研究所
開発者さまざまなオープンソースおよび商用開発者
オペレーティング·システムUnix , Unixライク, Plan 9 ,インフェルノ
プラットホームクロスプラットフォーム
タイプ指示

passwdは、UnixPlan 9Inferno、およびほとんどのUnix ライクなオペレーティング システムでユーザーのパスワードを変更するために使用されるコマンドですユーザーが入力したパスワードは、キー派生関数によって実行され、新しいパスワードのハッシュ バージョンが作成され、保存されます。ハッシュされたバージョンのみが保存されます。入力したパスワードはセキュリティ上の理由から保存されません。

ユーザーがログオンすると、ログオン プロセス中にユーザーが入力したパスワードが同じキー導出関数を介して実行され、結果のハッシュ バージョンが保存されたバージョンと比較されます。ハッシュが一致する場合、入力されたパスワードは正しいと見なされ、ユーザーは認証されます。理論的には、2 つの異なるパスワードが同じハッシュを生成する可能性があります。ただし、暗号化ハッシュ関数は、同じハッシュを生成するパスワードを見つけることが非常に難しく、実際には実行不可能であるように設計されているため、生成されたハッシュが保存されているものと一致する場合、ユーザーは認証されます。

passwd コマンドは、ローカル アカウントのパスワードを変更するために使用できます。ほとんどのシステムでは、NISKerberos、またはLDAPなどの分散認証メカニズムで管理されるパスワードを変更するためにも使用できます。

パスワードファイル

このファイルは、システムにログインする可能性のあるユーザー、または実行中のプロセスを所有する他のオペレーティング システムのユーザー ID /etc/passwdに関する情報のテキスト ベースのデータベースです。

多くのオペレーティング システムでは、このファイルは、より一般的なpasswd ネーム サービスの多くの可能なバックエンドの 1 つにすぎません

このファイルの名前は、ユーザー アカウントのパスワードを検証するために使用されるデータが含まれていたため、最初の機能の 1 つに由来しています。ただし、最近のUnixシステムでは、セキュリティ上重要なパスワード情報は、多くの場合、シャドウ パスワードまたはその他のデータベース実装を使用して別のファイルに保存されます。

/etc/passwd通常、ファイルにはシステムのすべてのユーザーが読み取ることができるファイル システム パーミッション( world-readable ) がありますが、変更できるのは、スーパーユーザーまたはいくつかの特別な目的の特権コマンドを使用する場合のみです。

この/etc/passwdファイルは、 1に1 レコードのテキスト ファイルで、それぞれにユーザー アカウントが記述されています。各レコードは、コロンで区切られた 7 つのフィールドで構成されます。通常、ファイル内のレコードの順序は重要ではありません。

レコードの例は次のとおりです。

jsmith:x:1001:1000:Joe Smith,Room 1007,(234)555-8910,(234)555-0044,email:/home/jsmith:/bin/sh

フィールドは、左から右の順に次のとおりです: [1]

  1. jsmith: ユーザー名: ユーザーがオペレーティング システムにログインするときに入力する文字列: logname . ファイルにリストされているユーザー全体で一意である必要があります。
  2. x: ユーザーのパスワードの検証に使用される情報。形式は、シャドウ パスワードファイルの類似フィールドの形式と同じですが、「x」に設定すると、実際のパスワードがシャドウ ファイルにあることを意味するという規則が追加されています。これは、最近のシステムではよくあることです。[2]
  3. 1001:オペレーティング システムが内部目的で使用するユーザー ID番号。一意である必要はありません。
  4. 1000:ユーザーの一次グループを識別するグループ識別番号。このユーザーによって作成されたすべてのファイルは、最初はこのグループにアクセスできます。
  5. Joe Smith,Room 1007...: Gecos フィールド、個人またはアカウントを説明する解説。通常、これは、ユーザーの氏名と連絡先の詳細を含むコンマ区切りの値のセットです。[3]
  1. /home/jsmith: ユーザーのホーム ディレクトリへのパス。
  2. /bin/sh: ユーザーがシステムにログインするたびに起動されるプログラム。インタラクティブなユーザーの場合、これは通常、システムのコマンド ライン インタープリター( shells ) の 1 つです。

シャドウファイル

/etc/shadow高度な特権を持つユーザー以外のすべてのユーザーのハッシュ化されたパスワード データへのアクセスを制限することにより、パスワードのセキュリティ レベルを高めるために使用されます。通常、そのデータはスーパーユーザーが所有し、スーパーユーザーのみがアクセスできるファイルに保存されます。

システム管理者は、権限のないユーザーがハッシュ化されたパスワードのリストを読み取れないようにすることで、ブルート フォース攻撃の可能性を減らすことができます。これを行うための明白な方法は、passwdデータベース自体を root ユーザーだけが読み取れるようにすることです。ただし、これにより、ユーザー名からユーザー ID へのマッピングなど、ファイル内の他のデータへのアクセスが制限され、多くの既存のユーティリティや規定が機能しなくなります。1 つの解決策は、誰でも読み取り可能なpasswdファイル内の他のデータとは別にパスワード ハッシュを保持する「シャドウ」パスワード ファイルです。ローカル ファイルの場合、これは通常/etc/shadowLinuxおよび Unix システム、またはBSDシステム/etc/master.passwdにあります。それぞれはルートによってのみ読み取り可能です. (従来の「全能のルート」セキュリティ モデルを使用するシステムでは、ルート ユーザーはどのような場合でも他の方法で情報を取得できるため、データへのルート アクセスは許容されると見なされます)。ほぼすべての最近のUnix ライクなオペレーティング システムは、シャドー パスワードを使用しています。

シャドウ パスワード ファイルは、攻撃者がハッシュされたパスワードにアクセスする問題を完全に解決するわけではありません。一部のネットワーク認証スキームは、ハッシュ化されたパスワードをネットワーク経由で (場合によってはTelnet [4]などのクリアテキスト) 送信することによって動作し、傍受されやすくなっています。テープや光メディアに書き込まれたシステム バックアップなどのシステム データのコピーも、ハッシュ化されたパスワードを不正に取得する手段になる可能性があります。さらに、正規のパスワード チェック プログラムが使用する関数は、悪意のあるプログラムが大量の認証チェックを高速で実行できないように作成する必要があります。

特定のシステムでパスワード シャドウイングが有効かどうかに関係なく、すべてのユーザーが passwd ファイルを読み取ることができるため、さまざまなシステム ユーティリティ ( grepなど) が機能します (たとえば、システムに存在するユーザー名をファイル)、root ユーザーのみがそれに書き込むことができます。パスワード シャドーイングを使用しない場合、これは、システムへの特権のないアクセス権を持つ攻撃者が、すべてのユーザーのパスワードのハッシュ化された形式を取得できることを意味します。これらの値を使用してオフラインでブルート フォース攻撃を開始し、異常な数のログイン失敗を検出するように設計されたシステム セキュリティの仕組みに警告することなく、ハッシュ化されたパスワードに対して考えられるパスワードを比較的迅速にテストできます。試み。特に、ハッシュがソルト化されていない場合、これらのハッシュされたパスワードをレインボー テーブル(一意のハッシュのパスワードを返すために特別に作成されたデータベース) で検索することもできます。

シャドウ パスワード スキームが使用されている場合、/etc/passwdファイルは通常、ハッシュされたパスワードではなく、各ユーザーのパスワード フィールドに' '*や ' 'などの文字を表示し、通常は次のユーザー情報 を含みます。x/etc/shadow

  • ユーザーのログイン名
  • ソルトとハッシュ化されたパスワードまたはステータス例外値 例:
    • $id$salt$hashed、 crypt (C)によって生成されるパスワード ハッシュの印刷可能な形式で、$id使用されるアルゴリズムです。他の Unix ライクなシステムでは、 NetBSDのように異なる値を持つ場合がありますデフォルトでは、変更された MD5 の 1000 ラウンド、[5] Blowfish の 64 ラウンド、SHA-256 または SHA-512 の 5000 ラウンドを使用して、パスワード クラッキングの難易度を高めるためにキー ストレッチングが使用されます。[6] Blowfishの場合、または を使用して SHA-256 および SHA-512 の場合、ラウンド数を変更できます。ここで、「A」と「X」はアルゴリズム ID とラウンド数です。一般的な ID 値は次のとおりです: [7]$A$rounds=X$
    • 空の文字列 – パスワードなし、アカウントにはパスワードがありません (Solaris では passwd によって「NP」で報告されます)。[8]
    • "!", "*" – アカウントはパスワードでロックされています。ユーザーはパスワード認証でログインできませんが、他の方法 (ssh キー、root としてのログインなど) は引き続き許可される場合があります。
    • "*LK*" – アカウント自体がロックされているため、ユーザーはログインできません。
    • 「*NP*」、「!!」– パスワードが設定されたことがない[9]
  • 最後のパスワード変更のエポックからの日数
  • 変更可能までの日数
  • 変更前日までに必要
  • 有効期限の警告日数
  • アカウントがロックされるまでのログインなしの日数
  • アカウントが期限切れになるエポックからの日数
  • 予約済みおよび未使用

シャドウ ファイルの形式は単純で、基本的にはパスワード ファイルの形式と同じです。つまり、ユーザーごとに 1 行、各行に順序付けられたフィールド、コロンで区切られたフィールドがあります。多くの[ quantify ]システムでは、シャドウ ファイル内のユーザー行の順序が、パスワード ファイル内の対応するユーザーの順序と同じである必要があります。

歴史

パスワード シャドウイングの前は、Unix ユーザーのハッシュ化されたパスワードは、/etc/passwdファイル内のレコードの 2 番目のフィールドに格納されていました (上記の 7 フィールド形式内)。

パスワード シャドウイングは、1980 年代半ばにSunOSが開発され、 [10] 1988 年にSystem Vリリース 3.2 が、1990 年にBSD 4.3 Reno が開発されたときに、Unix システムに初めて登場しました。これらのシステムのユーザーは、パスワード ファイル攻撃にさらされたままになります。

システム管理者は、接続された各システムのファイルではなく、NISLDAPなどの分散データベースにパスワードを保存するように手配することもできます。NIS の場合、多くの場合、シャドウ パスワード メカニズムが NIS サーバーで引き続き使用されます。他の分散メカニズムでは、さまざまなユーザー認証コンポーネントへのアクセスの問題は、基礎となるデータ リポジトリのセキュリティ メカニズムによって処理されます。

1987 年、最初のShadow Password Suiteの作成者であるJulie Haugh は、コンピューターへの侵入を経験し、コマンドloginpasswdおよびsuコマンドを含む Shadow Suite の最初のリリースを作成しました。SCO Xenixオペレーティング システム用に作成された最初のリリースは、すぐに他のプラットフォームに移植されました。Shadow Suite は、Linux プロジェクトの最初の発表から 1 年後の 1992 年にLinuxに移植され、多くの初期のディストリビューションに含まれ、現在も多くのLinux ディストリビューションに含まれています。

以前は、異なる認証方式でパスワードを変更するには、異なるコマンドが必要でした。たとえば、NIS パスワードを変更するコマンドはyppasswd でした。これにより、ユーザーはシステムごとにパスワードを変更するさまざまな方法を認識する必要があり、同じ機能を異なるバックエンドで実行するさまざまなプログラムでコードが無駄に重複することにもなりました。現在、ほとんどの実装では単一の passwd コマンドがあり、パスワードが実際に変更される場所の制御は、プラグ可能な認証モジュール(PAM) を介してユーザーに対して透過的に処理されます。たとえば、使用されるハッシュのタイプは、pam_unix.soモジュールの構成によって決まります。デフォルトでは、MD5hash が使用されていますが、現在のモジュールは、 blowfishSHA256、およびSHA512などのより強力なハッシュも使用できます

も参照

参考文献

  1. ^ ファイル形式について/etc/passwd
  2. ^ "passwd(5) - Linux マニュアル ページ" . Man7.org 2014 年 8 月25 日閲覧
  3. ^ アダムス、デビッド. 「Linux で /etc/passwd ファイルを表示して理解する方法」 .
  4. ^ RFC 2877: 5250 Telnet 拡張
  5. ^ 「MD5 に関連する MD5-crypt を使用したパスワード ハッシング – Vidar のブログ」 .
  6. ^ 「SHA512-crypt と MD5-crypt の実装 – Vidar のブログ」 .
  7. ^ "モジュラー クリプト フォーマット" . 2022-01-07にオリジナルからアーカイブされました2022 年1 月 29 日閲覧
  8. ^ "solaris - passwd (1)" . cs.bgu.ac.il . 2013-12-17にオリジナルからアーカイブ。
  9. ^ 「6.3. Red Hat Enterprise Linux 固有の情報」 . Access.redhat.com . 2014 年 8 月25 日閲覧
  10. ^ "SunOS-4.1.3 の passwd.adjunt(5)" . Modman.unixdev.net 2016 年1 月 3 日閲覧

外部リンク