/etc/shadow は、保護されたローカルのパスワードハッシュとパスワード有効期限フィールドを保存します。一般に読み取り可能な /etc/passwd データベースからこれらの値を分離することで、オフラインのパスワード推測攻撃にさらされる危険を減らします。
ユーザー管理 · レッスン 4
/etc/shadow
機密データを公開せず、ローカルの shadow レコードがパスワードハッシュと有効期限ポリシーを表す仕組みを学びます。
Shadow データを保護する
パスワードは、後で表示するために可逆的に「暗号化」されて保存されるのではありません。ローカルのパスワード項目には通常、アルゴリズム識別子、ソルト、パラメーターとともに符号化された一方向パスワードハッシュが入ります。ハッシュを入手した攻撃者は候補パスワードをオフラインで試せるため、データベースへのアクセスは制限しなければなりません。
正確な所有者と権限は異なりますが、通常は root と、限定的に認可されたシステムコンポーネントだけがアクセスできます。アカウント状態を調べるためだけに、shadow の内容を表示、コピー、ログ記録、共有してはいけません。
ローカルの shadow データが通常、一般ユーザーから読み取れないよう保護されるのはなぜですか?
9フィールド形式を読む
ローカルの shadow レコードには、コロンで区切られた9個のフィールドがあります。次の模式例では、ハッシュを意図的に省略しています。
alice:<password-field>:20000:0:90:7:14:20500:
各フィールドは次のとおりです。
- ログイン名。
- パスワードハッシュまたは特別なパスワードマーカー。
- 最終パスワード変更日。1970-01-01からの日数。一般的なツールでは
0により、次回のパスワード認証ログイン時の変更を要求します。 - パスワードの最小使用日数。
- パスワードの最大使用日数。
- パスワード期限前の警告日数。
- パスワード期限後の非活動日数。
- アカウント失効日。1970-01-01からの日数。
- 予約フィールド。
空のフィールドや特別な数値には定義された意味があり、フィールドやツールによって異なる場合があります。見た目で値を編集せず、アカウント管理コマンドを使ってください。
1970-01-01からの日数としてアカウント失効日を保存する shadow フィールドはどれですか?
パスワードフィールドを慎重に解釈する
第2フィールドの有効なハッシュは、ローカルの Unix パスワード検証を可能にします。! で始まる値は一般にそのパスワードハッシュをロックし、* などの無効なハッシュマーカーは、このフィールドを使うパスワード検証の成功を防ぎます。空の値はセキュリティ上重要であり、PAM ポリシーによってはパスワードなしの動作を許す場合があります。
これらのマーカーが表すのはローカルのパスワード経路であり、すべての認証方法ではありません。SSH 公開鍵、証明書、トークン、アプリケーション固有の資格情報は、別途制限しない限り利用できる場合があります。第8フィールドのアカウント失効も、パスワードのロックとは別です。
! で始まる shadow のパスワードフィールドから、安全に結論付けられることは何ですか?
パスワードの日付とアカウントの日付を区別する
第3から第7フィールドは、最終変更日、次の変更が許可される時期、失効時期、警告開始時期、失効後にパスワードログインできる期間というパスワード有効期限に関係します。第8フィールドは、パスワードの使用日数に関係なく、絶対日付でアカウントを失効させます。
たとえば、パスワードの最大使用日数90日は、アカウント失効日とは異なります。前者は最終パスワード変更日に対して相対的に動き、後者は管理者が変更するまで固定日です。
shadow の第5フィールドと第8フィールドの違いは何ですか?
ツールでポリシーを確認・変更する
管理者は、作業に必要な情報だけを問い合わせるべきです。
$ sudo passwd -S alice
$ sudo chage -l alice
passwd -S はローカルのパスワード状態を要約し、chage -l は有効期限情報を読みやすく一覧表示します。出力形式と必要な認可はディストリビューションによって異なる場合があります。
変更には passwd、chage、usermod などのアカウントツールを使います。ローカル shadow データベースの手動修復が避けられない場合は、vipw -s でロックし、pwck でアカウントデータベースを検証します。リモートの認証設定を変更する前に復旧用セッションを維持してください。
ローカルアカウント alice のパスワード有効期限情報を読みやすく一覧表示するためのコマンドはどれですか?
PAM と NSS は、ローカル shadow ファイル以外の認証・識別情報源を統合できます。そのため、システムアカウントにローカル shadow レコードがなかったり、追加サービスを通じて認証したりする場合があります。
管理された環境でアカウント状態と有効期限ポリシーを練習するには、次のハンズオンラボを利用できます。
- useradd、usermod、userdel で Linux ユーザーアカウントを管理する -
useraddとpasswdによる新規アカウントの作成と保護から、変更、削除までを練習します。 - Linux でユーザーアカウントと sudo 権限を設定する - パスワードポリシーの適用とアカウントの保護を含む、ユーザーアカウントと sudo 権限の管理方法を学びます。
レッスン完了
/etc/shadow を完了しました
パスワードデータベース全体を公開せずに、shadow ポリシーを解釈できるようになりました。
パスワードハッシュを制限対象の認証情報として扱う。
9個の shadow フィールドを用途別に読む。
パスワードのロックと、全ログイン方法の無効化を区別する。
パスワード有効期限と、絶対的なアカウント失効日を分ける。
範囲を絞ったアカウントツールでポリシーを確認・変更する。