パスワードとアカウント管理
アカウントの安全はパスワードの管理から始まります。passwd で自分や他ユーザのパスワードを変更し、推測されにくい長く複雑な文字列を設定します。さらに chage を使うと、パスワードの有効期限や次回変更を強制する設定ができ、古いパスワードが使われ続けるのを防げます。使われていないアカウントはロックまたは削除し、不要な入口を残さないことが大切です。
ファイアウォールを固め、SELinux を効かせ、奥の守りをどれだけ厚くしても、そこをすり抜ける穴がある。
たったひとつの推測しやすいパスワードや、退職者の残ったアカウントがあれば、そこから入られてしまう。
システムの安全は、結局のところ「正規の利用者だけが入れる」状態を保てるかどうかにかかっている。その入口を守る最初の鍵が、アカウントとパスワードの管理だ。
Linux のユーザ情報は /etc/passwd に保存される。パスワードのハッシュ(暗号化された形)は、一般ユーザから読めない /etc/shadow に保存される。
パスワードそのものが平文で保存されることはない。だが、弱いパスワードは総当たりや辞書攻撃で破られ得る。
だからこそ、強いパスワードを設定し、定期的に見直し、使われなくなったアカウントを残さない、という地道な管理が要る。これが最小権限の原則(必要な人だけが入れる)を入口で支えることになる。
まずは、そのパスワードをどう設定・変更するのかから見ていこう。
🔑 パスワードを変更する passwd
パスワードの変更には `passwd` コマンドを使う。
引数なしで `passwd` を実行すると自分のパスワードを変更できる。現在のパスワードを確認したうえで、新しいものを2回入力する。
管理者は `sudo passwd user01` のようにユーザ名を指定して、他ユーザのパスワードを設定・変更できる(この場合は現在のパスワードを問われない)。
では強いパスワードとは何か。基本は3つだ。十分に長いこと、英大小文字・数字・記号を混ぜること、辞書に載る単語や誕生日・名前のような推測されやすい要素を避けること。
RHEL/MiracleLinux系では pwquality という仕組みで品質チェックがかかり、短すぎたり単純すぎたりするパスワードは警告・拒否される。
なお passwd には `passwd -l user01`(ロック)や `passwd -S user01`(状態表示)といったオプションもある。アカウントの一時的な無効化や状態確認に使える。
だが、強いパスワードを一度決めれば終わり、というわけにはいかない。なぜか。
📅 有効期限を管理する chage
同じパスワードを何年も使い続けると、万一どこかで漏れていた場合に、長期間にわたって悪用される危険がある。
これを防ぐのが `chage`(change age)コマンドで、パスワードの有効期限や変更ルールを設定できる。
現在の設定は `chage -l user01` で一覧できる。最終変更日・次回変更可能日・有効期限・期限切れ後の猶予などが表示される。
たとえば `sudo chage -M 90 user01` とすると、そのユーザのパスワードは90日で期限切れとなり、変更を促される。
`chage -m 7 user01` は変更後7日間は再変更できないように、`chage -W 14 user01` は期限の14日前から警告を出すように設定する。
新規ユーザに初期パスワードを渡したあと、初回ログイン時に必ず本人に変更させたい場合は `sudo chage -d 0 user01` とする。すると次回ログイン時にパスワード変更が強制される。
これらは、古いパスワードが惰性で使われ続けるのを防ぐ実務的な定番設定だ。
パスワードの管理が分かったら、アカウントそのものの一生をどう扱うかへ進もう。
🔁 ユーザの作成・無効化・削除
アカウント自体の管理も押さえておこう。
新規ユーザは `useradd user01` で作成し、`passwd user01` で初期パスワードを設定する(RHEL/MiracleLinux系では useradd 時にホームディレクトリが作られる)。
所属グループの変更は `usermod -aG wheel user01` のように usermod で行う。前述のとおり、管理権限を与えるなら wheel グループへの追加が定番だ。
問題は、使われなくなったアカウントをどうするかである。退職者など使われなくなったアカウントは、放置せず速やかに対処する。
すぐ消すのが不安なら、まず `usermod -L user01`(または `passwd -l`)でロックしてログインを止め、しばらく様子を見てから `userdel user01` で削除する。ホームディレクトリごと消すなら `userdel -r user01` だ。
使わないアカウントを残さないことは、攻撃者にとっての「狙える入口」を減らす、最小権限の実践そのものになる。
ところで、こうした管理を怠ると、どんな隙が生まれるのか。
⚠ よくある失敗とセキュリティ上の注意
アカウント管理での失敗は、しばしば運用の隙となって表れる。
よくあるのが、共有アカウントの使い回しだ。複数人で同じアカウントとパスワードを使うと、誰が操作したか追えなくなり、ひとり退職しても全員のパスワード変更が必要になる。
人ごとにアカウントを分け、管理操作は sudo で行うのが正道だ。
また、初期パスワードを安易なものにして変更を強制し忘れる、退職者のアカウントを消し忘れる、root に直接パスワードログインを許したまま放置する、といった点も典型的な穴になる。
なお、パスワードの定期変更は有効な一方、頻繁すぎると安易な使い回し(末尾の数字だけ変える等)を招くという指摘もある。近年は「長く強いパスワード+漏えい時の即時変更」を重視する考え方も広がっている。
いずれにせよ、弱いパスワードと管理されないアカウントを放置しない、という原則は変わらない。
では、これらを日々どう抜けなく回すのか。
🛠 実務の使いどころ
実務では、アカウント管理を「入れるとき」と「外すとき」の両方で抜けなく回すことが肝心だ。
新規メンバーが来たら、専用アカウントを作り、強い初期パスワードを設定し、`chage -d 0` で初回変更を強制し、必要な権限だけを sudo で付与する。
メンバーが抜けたら、忘れずにアカウントをロックし、一定期間後に削除する。
定期的に `chage -l` や /etc/passwd を見直して、期限切れ間近のパスワードや、心当たりのないアカウントがないかを点検する。
こうした入退場の管理を、SSH の鍵管理やファイアウォールと同じ熱量で運用することが、システムを長く安全に保つ土台になる。入口の管理を疎かにすると、奥でどれだけ守りを固めても意味が薄れてしまうのだ。