| パスワード | |
|---|---|
| 原作者 | AT&Tベル研究所 |
| 開発者 | さまざまなオープンソースおよび商用開発者 |
| オペレーティング·システム | Unix、Unixライク、Plan 9、Inferno |
| プラットフォーム | クロスプラットフォーム |
| タイプ | 指示 |
passwd は、 Unix、Plan 9、Inferno、およびほとんどのUnix系オペレーティングシステムにおいて、ユーザーのパスワードを変更するために使用されるコマンドです。ユーザーが入力したパスワードは、鍵導出関数に渡され、新しいパスワードのハッシュ版が作成され、保存されます。セキュリティ上の理由から、ハッシュ版のみが保存され、入力されたパスワードは保存されません。
ユーザーがログオンすると、ログオン時に入力したパスワードが同じ鍵導出関数にかけられ、生成されたハッシュ値が保存されているバージョンと比較されます。ハッシュ値が一致した場合、入力されたパスワードは正しいとみなされ、ユーザーは認証されます。理論上は、異なる2つのパスワードから同じハッシュ値が生成される可能性があります。しかし、暗号学的ハッシュ関数は、同じハッシュ値を生成するパスワードを見つけることが非常に困難で、事実上不可能になるように設計されているため、生成されたハッシュ値が保存されているハッシュ値と一致する場合、ユーザーは認証されます。[ 1 ]
passwd コマンドは、ローカル アカウントのパスワードを変更するために使用できます。また、ほとんどのシステムでは、 NIS、Kerberos、LDAPなどの分散認証メカニズムで管理されているパスワードの変更にも使用できます。
このファイルは、システム にログインする可能性のあるユーザー/etc/passwdや、実行中のプロセスを所有する他のオペレーティング システムのユーザー IDに関する情報のテキスト ベースのデータベースです。
多くのオペレーティング システムでは、このファイルは、より一般的なpasswd 名サービスで使用可能な多くのバックエンドのうちの 1 つにすぎません。
このファイルの名前は、ユーザーアカウントのパスワード検証に使用されるデータが含まれていたという、その初期の機能の一つに由来しています。しかし、現代のUnixシステムでは、セキュリティ上重要なパスワード情報は、シャドウパスワードやその他のデータベース実装を使用して別のファイルに保存されることがよくあります。
/etc/passwd通常、ファイルには、システムのすべてのユーザーが読み取り可能なファイル システム権限 (world-readable) がありますが、変更できるのはスーパーユーザーまたはいくつかの特別な目的の特権コマンドを使用した場合のみです。
この/etc/passwdファイルはテキストファイルで、1行に1レコードずつあり、各レコードはユーザーアカウントを記述します。各レコードはコロンで区切られた7つのフィールドで構成されます。ファイル内のレコードの順序は、通常、重要ではありません。
レコードの例は次のようになります。
jdoe : x : 1001 : 1000 : John Doe、1007号室、(234)555-8910、(234)555-0044、メールアドレス: /home/jdoe : /bin/sh各分野は、左から右の順に以下の通りである。[ 2 ]
jdoeユーザー名: ユーザーがオペレーティングシステムにログインする際に入力する文字列(ログ名)。ファイルにリストされているユーザー間で一意である必要があります。x: ユーザーのパスワードを検証するために使用される情報。フォーマットはシャドウパスワードファイルの類似フィールドと同じですが、これを「x」に設定すると実際のパスワードがシャドウファイル内に存在するという追加の規則が追加されます。これは最近のシステムでは一般的です。[ 3 ]1001:ユーザー識別番号。オペレーティングシステムが内部的に使用します。ユーザーを一意に識別するため、一意である必要があります。1000:グループ識別番号。ユーザーのプライマリ グループを識別します。このユーザーによって作成されたすべてのファイルは、最初はこのグループがアクセスできます。John Doe,Room 1007...: Gecosフィールド。個人またはアカウントを説明するコメント。通常、これはユーザーのフルネームと連絡先情報を含む、コンマ区切りの値のセットです。[ 4 ]/home/jdoe: ユーザーのホームディレクトリへのパス。/bin/sh: ユーザーがシステムにログインするたびに起動されるプログラム。対話型ユーザーの場合、これは通常、システムのコマンドラインインタープリタ(シェル)のいずれかです。/etc/shadowハッシュ化されたパスワードデータへのアクセスを、高い権限を持つユーザー以外に制限することで、パスワードのセキュリティレベルを高めるために使用されます。通常、そのデータはスーパーユーザーのみが所有し、アクセスできるファイルに保存されます。[ 5 ]
システム管理者は、ハッシュ化されたパスワードのリストを権限のないユーザーが読み取れないようにすることで、ブルートフォース攻撃の可能性を低減できます。最も明白な方法は、passwdデータベース自体をrootユーザーのみが読み取れるようにすることです。しかし、そうすると、ユーザー名とユーザーIDのマッピングなど、ファイル内の他のデータへのアクセスが制限され、多くの既存のユーティリティや規定が機能しなくなります。解決策の一つは、「シャドウ」パスワードファイルを作成し、パスワードハッシュを誰でも読み取り可能なpasswdファイル内の他のデータとは別に保持することです。ローカルファイルの場合、これは通常、LinuxおよびUnixシステム、またはBSDシステムで/etc/shadow使用され、各ファイルはrootのみが読み取り可能です。(従来の「全能のroot」セキュリティモデルを採用したシステムでは、rootユーザーはいずれにしても他の方法で情報を取得できるため、データへのrootアクセスは許容されると考えられています。)最近のUnix系オペレーティングシステムのほぼすべては、シャドウパスワードを使用しています。 /etc/master.passwd
シャドウパスワードファイルは、ハッシュ化されたパスワードへの攻撃者によるアクセスの問題を完全に解決するものではありません。一部のネットワーク認証方式では、ハッシュ化されたパスワードをネットワーク経由で(場合によっては平文で、例えばTelnet [ 6 ])送信するため、傍受される危険性があります。テープや光学メディアに書き込まれたシステムバックアップなどのシステムデータのコピーも、ハッシュ化されたパスワードを不正に取得する手段となり得ます。さらに、正規のパスワードチェックプログラムが使用する関数は、悪意のあるプログラムが迅速に認証チェックを実行できないように記述されている必要があります。
パスワード シャドウイングが特定のシステムで有効になっているかどうかに関係なく、 passwd ファイルはすべてのユーザーが読み取り可能であるため、さまざまなシステム ユーティリティ (例: grep ) が機能します (例: システムに存在するユーザー名がファイル内に存在することを確認するため)。一方、書き込みができるのは root ユーザーだけです。パスワード シャドウイングがないと、システムに特権アクセスできない攻撃者が、各ユーザーのパスワードのハッシュ形式を取得できることになります。これらの値を使用すると、オフラインでブルート フォース攻撃を仕掛けることができ、異常な数のログイン試行の失敗を検出するように設計されたシステム セキュリティ構成に警告することなく、ハッシュされたパスワードに対して可能性のあるパスワードを比較的迅速にテストできます。特にハッシュにソルトが付いていない場合は、一意のハッシュに対してパスワードを返すために特別に作成されたデータベース であるレインボー テーブルでこれらのハッシュされたパスワードを検索することもできます。
シャドウ パスワード スキームが使用されている場合、ファイルでは通常、各ユーザーのパスワード フィールドにハッシュされたパスワードではなく、 「 」や「 」/etc/passwdなどの文字が表示され、通常、次のユーザー情報が含まれます。 *x/etc/shadow
$id$salt$hashedはcrypt (C)によって生成されるパスワードハッシュの印刷可能な形式であり、$id使用されるアルゴリズムです。NetBSD など、他のUnix系システムでは異なる値を持つ場合があります。キーストレッチングはパスワードクラッキングの難易度を高めるために使用され、デフォルトでは1000ラウンドの修正MD5、[ 7 ] 64ラウンドのBlowfish、5000ラウンドのSHA-256またはSHA-512が使用されます。[ 8 ]ラウンド数はBlowfish、またはSHA-256とSHA-512の場合は を使用することで変更できます$A$rounds=X$。ここで、「A」と「X」はアルゴリズムIDとラウンド数です。一般的なID値には以下が含まれます。[ 9 ]シャドウファイルのフォーマットはシンプルで、基本的にパスワードファイルと同じです。つまり、ユーザーごとに1行ずつ記述し、各行にフィールドを順序付け、フィールドをコロンで区切ります。多くのシステムでは、シャドウファイル内のユーザー行の順序が、パスワードファイル内の対応するユーザーの順序と一致している必要があります。
パスワード シャドウイングが導入される前は、Unix ユーザーのハッシュ化されたパスワードは、ファイル内のレコードの 2 番目のフィールド/etc/passwd(上記の 7 つのフィールド形式内) に保存されていました。
パスワードシャドウイングは、1980年代半ばのSunOSの開発とともに初めてUnixシステムに登場し、 [ 12 ] 1988年のSystem V Release 3.2、1990年のBSD 4.3 Renoにも登場しました。しかし、以前のUNIXリリースからの移植を行ったベンダーは、必ずしも新しいパスワードシャドウイング機能を自社のリリースに組み込んでいたわけではなく、それらのシステムのユーザーはパスワードファイル攻撃の危険にさらされていました。
システム管理者は、接続された各システムのファイルではなく、 NISやLDAPなどの分散データベースにパスワードを保存するように設定することもできます。NISの場合、シャドウパスワード機構はNISサーバー上で依然として使用されていることが多いですが、他の分散メカニズムでは、様々なユーザー認証コンポーネントへのアクセスの問題は、基盤となるデータリポジトリのセキュリティ機構によって処理されます。
1987年、オリジナルのShadow Password Suiteの作者であるJulie Haugh氏は、コンピュータ侵入に遭い、、コマンドを含むShadow Suiteの初期リリースを作成しました。SCO loginXenixオペレーティングシステム用に作成されたこのオリジナルリリースは、すぐに他のプラットフォームに移植されました。Shadow Suiteは、 Linuxプロジェクトの最初の発表から1年後の1992年にLinuxに移植され、初期の多くのディストリビューションに含まれ、現在も多くのLinuxディストリビューションに含まれています。 passwdsu
以前は、異なる認証方式でパスワードを変更するには、異なるコマンドが必要でした。たとえば、NIS パスワードを変更するコマンドはyppasswdでした。そのため、ユーザーは異なるシステムでパスワードを変更するさまざまな方法を意識する必要があり、また、異なるバックエンドで同じ機能を実行するさまざまなプログラムでコードの無駄な重複が発生していました。現在では、ほとんどの実装では 1 つの passwd コマンドがあり、パスワードが実際に変更される場所の制御は、プラグ可能な認証モジュール(PAM)を介してユーザーに透過的に処理されます。たとえば、使用するハッシュの種類は、pam_unix.soモジュールの設定によって決まります。デフォルトではMD5ハッシュが使用されていますが、現在のモジュールはblowfish、SHA256、SHA512などのより強力なハッシュも使用できます。
/etc/passwd