はじめに
パスワード管理は、Linux 環境におけるシステムセキュリティの維持において重要な側面です。システム管理者は、ユーザーアカウントと機密データを不正アクセスから保護するために、安全なパスワードポリシーを作成して適用する方法を理解する必要があります。
この実験では、passwd コマンドを使用してユーザーパスワードを変更し、基本的なパスワードポリシーを実装する方法を学びます。これらの基本的なスキルは、Linux システムを扱うすべての人にとって、特にユーザーアカウント管理とシステムセキュリティに関わる役割において不可欠です。
passwd コマンドの理解
Linux システムでは、passwd コマンドはユーザーパスワードを変更するために使用されます。このコマンドを使うと、ユーザーは自分自身のパスワードを変更でき、システム管理者はシステム上の任意のアカウントのパスワードを変更することができます。
新しいユーザーの作成
まず、パスワード管理の練習に使用できる新しいユーザーを作成しましょう。ターミナルを開き、デフォルトの作業ディレクトリにいることを確認します。
cd ~/project
次に、useradd コマンドを使用して cyberuser という名前の新しいユーザーを作成します。
sudo useradd cyberuser
このコマンドは新しいユーザーアカウントを作成しますが、パスワードは設定されません。パスワードを指定せずにユーザーを作成すると、アカウントは通常デフォルトでロックされます。
id コマンドを使用してユーザーが作成されたことを確認できます。
id cyberuser
次のような出力が表示されるはずです。
uid=1001(cyberuser) gid=1001(cyberuser) groups=1001(cyberuser)
新しいユーザーのパスワード設定
新しいユーザーを作成したので、passwd コマンドを使用してこのアカウントにパスワードを設定しましょう。
sudo passwd cyberuser
このコマンドを実行すると、新しいパスワードを確認のために 2 回入力するように促されます。
New password:
Retype new password:
passwd: password updated successfully
促されたら、好きなパスワードを入力します。セキュリティ上の理由から、入力したパスワードは画面に表示されません。
passwd コマンドは指定されたユーザーアカウントのパスワードを更新します。sudo 権限で実行すると、システム上の任意のユーザーのパスワードを変更できます。
パスワード情報の表示
ユーザーのパスワードに関する情報(最後に変更された日など)を表示するには、chage -l コマンドの後にユーザー名を指定します。
sudo chage -l cyberuser
このコマンドは、ユーザーのパスワードの有効期限や失効ポリシーに関する情報を表示します。出力は次のようになります。
Last password change : Jul 15, 2023
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
この情報は、ユーザーアカウントに適用されている現在のパスワードポリシーを理解するのに役立ちます。
Linux におけるパスワードファイルの理解
Linux では、パスワード情報はいくつかの重要なシステムファイルに保存されています。これらのファイルを理解することで、管理者はユーザーアカウントを効果的に管理することができます。
パスワード関連ファイルの探索
プロジェクトディレクトリに移動します。
cd ~/project
パスワードとユーザーアカウント情報を保存している主要なファイルを調べてみましょう。
- まず、基本的なユーザーアカウント情報を含む
/etc/passwdファイルを見てみましょう。
grep cyberuser /etc/passwd
次のような出力が表示されるはずです。
cyberuser:x:1001:1001::/home/cyberuser:/bin/sh
この行はコロンで区切られたいくつかのフィールドを含んでいます。
- ユーザー名:
cyberuser - パスワードプレースホルダ:
x(実際のパスワードは/etc/shadowに保存されています) - ユーザーID (UID):
1001 - グループ ID (GID):
1001 - ユーザー情報フィールド:(この場合は空)
- ホームディレクトリ:
/home/cyberuser - デフォルトシェル:
/bin/sh
- 次に、暗号化されたパスワード情報を含むシャドウパスワードファイルを調べてみましょう。
sudo grep cyberuser /etc/shadow
出力には暗号化されたパスワードと関連情報が表示されます。
cyberuser:$6$xxxxxxxxxxxxxxxxxxx:19189:0:99999:7:::
この行のフィールドには以下のものが含まれます。
- ユーザー名
- 暗号化されたパスワード
- パスワードが最後に変更された日 (1970 年 1 月 1 日からの日数)
- パスワードを変更できるまでの日数
- パスワードを変更しなければならない日数
- パスワードの有効期限が切れる前にユーザーに警告する日数
- パスワードの有効期限が切れてからアカウントが無効になるまでの日数
- アカウントが無効になった日 (1970 年 1 月 1 日からの日数)
- 予約済みフィールド
この情報は、Linux システムでパスワードセキュリティがどのように実装されているかを理解するために重要です。
ポリシーの施行
Linux には、パスワードポリシーを適用するためのいくつかのツールが用意されています。これらのツールは、ユーザーが強力なパスワードを選択することを保証することで、システムのセキュリティを維持するのに役立ちます。このステップでは、基本的なパスワードポリシーを実装する方法を学びます。
パスワードの有効期限の設定
chage コマンドを使用すると、管理者はパスワードの有効期限ポリシーを設定できます。プロジェクトディレクトリに移動します。
cd ~/project
cyberuser アカウントのパスワードの最大有効期限を 90 日に設定しましょう。
sudo chage -M 90 cyberuser
このコマンドは、ユーザーがパスワードを変更する必要があるまでの最大日数を設定します。
また、パスワードの最小有効期限を設定することもできます。これにより、ユーザーがパスワードを頻繁に変更することを防ぎます。
sudo chage -m 7 cyberuser
このコマンドは、ユーザーが再度パスワードを変更する前に少なくとも 7 日間待つことを要求します。
行った変更を確認します。
sudo chage -l cyberuser
更新されたパスワードポリシー情報が表示されるはずです。
Last password change : Jul 15, 2023
Password expires : Oct 13, 2023
Password inactive : never
Account expires : never
Minimum number of days between password change : 7
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
パスワードポリシースクリプトの作成
次に、より高度なパスワードポリシーを実装するスクリプトを作成しましょう。cyberpolicy.sh という名前の新しいファイルを作成します。
nano ~/project/cyberpolicy.sh
ファイルに以下の内容を追加します。
#!/bin/bash
## Enforce password complexity
echo "password requisite pam_pwquality.so retry=3 minlen=8 difok=3" | sudo tee -a /etc/pam.d/common-password
## Set password expiration policy for all new users
echo "PASS_MAX_DAYS 90" | sudo tee -a /etc/login.defs
echo "PASS_MIN_DAYS 7" | sudo tee -a /etc/login.defs
echo "PASS_WARN_AGE 7" | sudo tee -a /etc/login.defs
echo "Password policy has been updated successfully."
Ctrl+O を押してから Enter を押してファイルを保存し、Ctrl+X で nano を終了します。
スクリプトを実行可能にします。
chmod +x ~/project/cyberpolicy.sh
このスクリプトは以下のパスワードポリシーを設定します。
- パスワードの複雑性:最小 8 文字、前のパスワードと少なくとも 3 文字異なり、3 回の再試行が許可される
- パスワードの有効期限:最大 90 日
- パスワード変更制限:最小 7 日
- パスワード警告:パスワードの有効期限が切れる 7 日前
本番環境では、このスクリプトを実行してこれらのポリシーを適用します。ただし、この実験では、パスワードポリシーがどのように実装されるかを理解するために、内容を確認するだけにします。
まとめ
この実験では、Linux システムにおけるパスワード管理の基本的なスキルを学びました。以下のことを練習しました。
useraddコマンドを使用して新しいユーザーアカウントを作成するpasswdコマンドを使用してパスワードを設定および変更する/etc/passwdや/etc/shadowなどのシステムファイルでパスワード情報を表示するchageコマンドを使用してパスワードの有効期限ポリシーを設定する- パスワードの複雑性と有効期限ポリシーを適用するスクリプトを作成する
これらのスキルは、適切なパスワード管理手法を実施してセキュアなシステムを維持する必要があるシステム管理者にとって基本的なものです。強力なパスワードポリシーを適用する方法を理解することで、Linux システムのセキュリティを大幅に向上させ、不正アクセスから保護することができます。
学習を続けるにあたって、PAM (Pluggable Authentication Modules) の設定、多要素認証の実装、企業環境におけるユーザーアカウント管理の自動化などのトピックを探索することを検討してください。



