🐧 Linux 総合学習プラットフォーム
セキュリティ/権限強化 ・ 中級

パスワードとアカウント管理

アカウントの安全はパスワードの管理から始まります。passwd で自分や他ユーザのパスワードを変更し、推測されにくい長く複雑な文字列を設定します。さらに chage を使うと、パスワードの有効期限や次回変更を強制する設定ができ、古いパスワードが使われ続けるのを防げます。使われていないアカウントはロックまたは削除し、不要な入口を残さないことが大切です。

ファイアウォールを固め、SELinux を効かせ、奥の守りをどれだけ厚くしても、そこをすり抜ける穴がある。

たったひとつの推測しやすいパスワードや、退職者の残ったアカウントがあれば、そこから入られてしまう。

システムの安全は、結局のところ「正規の利用者だけが入れる」状態を保てるかどうかにかかっている。その入口を守る最初の鍵が、アカウントとパスワードの管理だ。

💡
ポイントユーザ情報は /etc/passwd に、パスワードのハッシュは一般ユーザから読めない /etc/shadow に保存される。平文では保存されない。

Linux のユーザ情報は /etc/passwd に保存される。パスワードのハッシュ(暗号化された形)は、一般ユーザから読めない /etc/shadow に保存される。

/etc/passwdユーザ名・ID など誰でも読める/etc/shadowパスワードのハッシュ一般ユーザは読めないパスワードは平文で保存されない(ハッシュ化して shadow へ)

パスワードそのものが平文で保存されることはない。だが、弱いパスワードは総当たりや辞書攻撃で破られ得る。

だからこそ、強いパスワードを設定し、定期的に見直し、使われなくなったアカウントを残さない、という地道な管理が要る。これが最小権限の原則(必要な人だけが入れる)を入口で支えることになる。

まずは、そのパスワードをどう設定・変更するのかから見ていこう。

🔑 パスワードを変更する passwd

パスワードの変更には `passwd` コマンドを使う。

引数なしで `passwd` を実行すると自分のパスワードを変更できる。現在のパスワードを確認したうえで、新しいものを2回入力する。

sudo passwd user01 ……管理者はユーザ名を指定して他ユーザのパスワードを設定・変更できる(現在のパスワードは問われない)。

管理者は `sudo passwd user01` のようにユーザ名を指定して、他ユーザのパスワードを設定・変更できる(この場合は現在のパスワードを問われない)。

コツ強いパスワードの基本は3つ。十分に長い・英大小文字や数字や記号を混ぜる・辞書語や誕生日など推測されやすい要素を避ける。

では強いパスワードとは何か。基本は3つだ。十分に長いこと、英大小文字・数字・記号を混ぜること、辞書に載る単語や誕生日・名前のような推測されやすい要素を避けること。

RHEL/MiracleLinux系では pwquality という仕組みで品質チェックがかかり、短すぎたり単純すぎたりするパスワードは警告・拒否される。

なお passwd には `passwd -l user01`(ロック)や `passwd -S user01`(状態表示)といったオプションもある。アカウントの一時的な無効化や状態確認に使える。

だが、強いパスワードを一度決めれば終わり、というわけにはいかない。なぜか。

📅 有効期限を管理する chage

同じパスワードを何年も使い続けると、万一どこかで漏れていた場合に、長期間にわたって悪用される危険がある。

これを防ぐのが `chage`(change age)コマンドで、パスワードの有効期限や変更ルールを設定できる。

chage -l user01 で現在の設定を一覧。最終変更日・次回変更可能日・有効期限・猶予などが表示される。

現在の設定は `chage -l user01` で一覧できる。最終変更日・次回変更可能日・有効期限・期限切れ後の猶予などが表示される。

sudo chage -M 90 user01 ……パスワードを90日で期限切れにする。-m 7 は7日間再変更不可、-W 14 は期限14日前から警告。

たとえば `sudo chage -M 90 user01` とすると、そのユーザのパスワードは90日で期限切れとなり、変更を促される。

`chage -m 7 user01` は変更後7日間は再変更できないように、`chage -W 14 user01` は期限の14日前から警告を出すように設定する。

コツ初回ログイン時にパスワード変更を強制したいときは sudo chage -d 0 user01。初期パスワードの渡しっぱなしを防げる。

新規ユーザに初期パスワードを渡したあと、初回ログイン時に必ず本人に変更させたい場合は `sudo chage -d 0 user01` とする。すると次回ログイン時にパスワード変更が強制される。

これらは、古いパスワードが惰性で使われ続けるのを防ぐ実務的な定番設定だ。

パスワードの管理が分かったら、アカウントそのものの一生をどう扱うかへ進もう。

🔁 ユーザの作成・無効化・削除

アカウント自体の管理も押さえておこう。

useradd user01 で作成し passwd user01 で初期パスワードを設定(RHEL/MiracleLinux系では useradd 時にホームが作られる)。

新規ユーザは `useradd user01` で作成し、`passwd user01` で初期パスワードを設定する(RHEL/MiracleLinux系では useradd 時にホームディレクトリが作られる)。

所属グループの変更は `usermod -aG wheel user01` のように usermod で行う。前述のとおり、管理権限を与えるなら wheel グループへの追加が定番だ。

問題は、使われなくなったアカウントをどうするかである。退職者など使われなくなったアカウントは、放置せず速やかに対処する。

usermod -L user01(または passwd -l)でロック→様子見→userdel user01 で削除。ホームごとなら userdel -r user01。

すぐ消すのが不安なら、まず `usermod -L user01`(または `passwd -l`)でロックしてログインを止め、しばらく様子を見てから `userdel user01` で削除する。ホームディレクトリごと消すなら `userdel -r user01` だ。

💡
ポイント使わないアカウントを残さないことは、攻撃者にとっての「狙える入口」を減らす最小権限の実践そのものだ。

使わないアカウントを残さないことは、攻撃者にとっての「狙える入口」を減らす、最小権限の実践そのものになる。

ところで、こうした管理を怠ると、どんな隙が生まれるのか。

⚠ よくある失敗とセキュリティ上の注意

アカウント管理での失敗は、しばしば運用の隙となって表れる。

つまずき共有アカウントの使い回しは危険。誰が操作したか追えず、ひとり退職しても全員のパスワード変更が必要になる。

よくあるのが、共有アカウントの使い回しだ。複数人で同じアカウントとパスワードを使うと、誰が操作したか追えなくなり、ひとり退職しても全員のパスワード変更が必要になる。

人ごとにアカウントを分け、管理操作は sudo で行うのが正道だ。

また、初期パスワードを安易なものにして変更を強制し忘れる、退職者のアカウントを消し忘れる、root に直接パスワードログインを許したまま放置する、といった点も典型的な穴になる。

つまずきパスワードの頻繁すぎる変更は安易な使い回し(末尾の数字だけ変える等)を招く。近年は「長く強い+漏えい時に即変更」が重視される。

なお、パスワードの定期変更は有効な一方、頻繁すぎると安易な使い回し(末尾の数字だけ変える等)を招くという指摘もある。近年は「長く強いパスワード+漏えい時の即時変更」を重視する考え方も広がっている。

いずれにせよ、弱いパスワードと管理されないアカウントを放置しない、という原則は変わらない。

では、これらを日々どう抜けなく回すのか。

🛠 実務の使いどころ

実務では、アカウント管理を「入れるとき」と「外すとき」の両方で抜けなく回すことが肝心だ。

新規メンバーが来たら、専用アカウントを作り、強い初期パスワードを設定し、`chage -d 0` で初回変更を強制し、必要な権限だけを sudo で付与する。

メンバーが抜けたら、忘れずにアカウントをロックし、一定期間後に削除する。

コツ定期的に chage -l や /etc/passwd を見直し、期限切れ間近のパスワードや心当たりのないアカウントがないか点検する。

定期的に `chage -l` や /etc/passwd を見直して、期限切れ間近のパスワードや、心当たりのないアカウントがないかを点検する。

こうした入退場の管理を、SSH の鍵管理やファイアウォールと同じ熱量で運用することが、システムを長く安全に保つ土台になる。入口の管理を疎かにすると、奥でどれだけ守りを固めても意味が薄れてしまうのだ。

この項目に出てくる用語

最小権限さいしょうけんげん
必要な人に必要な分だけ権限を与え、それ以外は与えない設計原則。

関連コマンド

passwdchage

▶ 学習アプリでこの続きを学ぶ・演習する