AlmaLinux9 パスワード周りの設定確認
IT統制監査で確認することが多いAlmaLinux9のパスワード周りの設定の確認方法を整理しました。
参照資料→ CIS Benchmarks CIS_AlmaLinux_OS_9_Benchmark_v1.0.0.pdf
パスワードの最小文字数
確認には以下の2つのステップが必要です。
ステップ1でパスワードの文字数を設定するためのモジュール(pam_pwquality.so)が有効に設定されているか確認します。この設定が有効でない場合、ステップ2で最小文字数が設定されていても実際には最小文字数の制限は動作しません。
ステップ1: pam_pwquality.soが有効に設定されているか確認
以下の出力例では/etc/pam.d/system-authと/etc/pam.d/password-authのファイル上で有効に設定されていることが示されています(一般的には以下の出力例の設定がされていることが多いです)。
# 確認するために入力するコマンド
$ grep pam_pwquality.so /etc/pam.d/system-auth /etc/pam.d/password-auth
# 出力結果の例
/etc/pam.d/system-auth:password requisite pam_pwquality.so try_first_pass local_users_only enforce_for_root retry=3
/etc/pam.d/password-auth:password requisite pam_pwquality.so try_first_pass local_users_only enforce_for_root retry=3
ステップ2: パスワードの最小文字数の確認
/etc/security/pwquality.confのminlen =の後の値(単位は文字数)で定義されます。
# 確認するために入力するコマンド
$ grep ^minlen /etc/security/pwquality.conf
# 出力結果の例(最小文字数が14文字で設定されています)
minlen = 14
参考: CIS Benchmarks での記載箇所
ファイル: CIS_AlmaLinux_OS_9_Benchmark_v1.0.0.pdf
項番: 5.5.1 Ensure password creation requirements are configured
パスワードの複雑性
以下の確認方法1と2の記述方法があるので両方を確認するのがおすすめです。
パスワードの複雑性の確認方法 1 (minclass で記述の場合)
/etc/security/pwquality.confのminclassの値によって要求される複雑性が変わります。
# 確認するために入力するコマンド
$ grep ^minclass /etc/security/pwquality.conf
# 出力結果の例(4の場合、数字・英大文字・英小文字・記号の全てを利用する必要があります)
minclass = 4
パスワードの複雑性の確認方法 2 (その他)
以下のように各文字種類ごとに必要な文字数を指定できます。
dcredit=-1 の場合、数字(Digit)が最低1文字必要です。
ucredit=-1 -の場合、大文字(Uppercase)が最低1文字必要です。
ocredit=-1 -の場合、記号(special character)が最低1文字必要です。
lcredit=-1 の場合、小文字(lowercase)が最低1文字必要です。
# 確認するために入力するコマンド
$ grep -E "^\s*\Scredit\s*=" /etc/security/pwquality.conf
# 出力結果の例(以下の場合は数字・英大文字・英小文字・記号の全てを最低1文字は利用する必要があります)
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1
参考: CIS Benchmarks での記載箇所
ファイル: CIS_AlmaLinux_OS_9_Benchmark_v1.0.0.pdf
項番: 5.5.1 Ensure password creation requirements are configured
パスワードの有効期限
以下のように、まずサーバーの共通設定を確認し、その後に個別のユーザーがサーバーの共通設定と異なる有効期限に変更していないか確認します。
パスワードの有効期限の確認方法 1 (サーバーの共通設定)
/etc/login.defsのPASS_MAX_DAYSの値(単位はDAY)で定義されます。
# 確認するために入力するコマンド
$ grep PASS_MAX_DAYS /etc/login.defs
# 出力結果の例
PASS_MAX_DAYS 365
パスワードの有効期限の確認方法 2 (各ユーザーの現在の状態)
以下はrootユーザーに切り替え後に行う必要があります。以下を実行することでサーバーの各ユーザーアカウントに適用されているパスワードの有効期限を確認できます。たとえば、ユーザー個人で勝手にパスワードの有効期限を短くするケースなどが想定されます。
# 確認するために入力するコマンド(管理者権限が必要です)
$ sudo grep -E '^[^:]+:[^!*]' /etc/shadow | cut -d: -f1,5
# 出力結果の例 (例えばパスワードが無期限で設定されている場合は 99999 が出力されます)
root 365
userA 99999
参考: CIS Benchmarks での記載箇所
ファイル: CIS_AlmaLinux_OS_9_Benchmark_v1.0.0.pdf
項番: 5.6.1.1 Ensure password expiration is 365 days or less
パスワードの再利用制限
過去N世代までのパスワードを再利用させない設定の確認です。
パスワードの再利用制限の確認方法
/etc/pam.d/system-authのrememberの値(単位は世代)で定義されます。
例えば、5の場合は過去5世代のパスワードを記憶してそれらパスワードの再利用を制限します。
# 確認するために入力するコマンド
$ grep -P '^\h*password\h+(requisite|sufficient)\h+(pam_pwhistory\.so|pam_unix\.so)\h+([^#\n\r]+\h+)?remember=([5-9]|[1-9][0-9]+)\h*(\h+.*)?$' /etc/pam.d/system-auth
# 出力結果の例
password requisite pam_pwhistory.so try_first_pass local_users_only enforce_for_root retry=3 remember=5
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=5
参考: CIS Benchmarks での記載箇所
ファイル: CIS_AlmaLinux_OS_9_Benchmark_v1.0.0.pdf
項番: 5.5.3 Ensure password reuse is limited
参考:その他
過去のパスワードを保存する/etc/security/opasswdファイルの存在確認、ファイルのパーミッション(ファイルへのアクセス制限)の確認についてはCIS_AlmaLinux_OS_9_Benchmark_v1.0.0.pdfでは記載はありませんでした。
アカウントのロック
パスワードを何回間違えるとアカウントをロックする、何秒経つとロックを解除する設定の確認です。
アカウントロックの確認方法
ロックする設定と解除する設定のファイルは1つです。以下はロックする設定の確認方法です。/etc/security/faillock.confのdeny =の後の値(単位は回数)で定義されます。
# 確認するために入力するコマンド
$ grep -E '^\s*deny\s*=\s*[1-5]\b' /etc/security/faillock.conf
# 出力結果の例
deny = 5
以下はロックを解除する設定の確認方法です。ロック設定と同じ/etc/security/faillock.confのunlock_time =の後の値(単位は秒)で定義されます。
# 確認するために入力するコマンド
$ grep -E '^\s*unlock_time\s*=\s*(0|9[0-9][0-9]|[1-9][0-9][0-9][0-9]+)\b' /etc/security/faillock.conf
# 出力結果の例
unlock_time = 900
参考: CIS Benchmarks での記載箇所
ファイル: CIS_AlmaLinux_OS_9_Benchmark_v1.0.0.pdf
項番: 5.5.2 Ensure lockout for failed password attempts is configured