どうも、Tです。
vcsaのrootユーザーのパスワード要件が厳しく検証環境でもう少し緩くできないかなぁと試した備忘録です。
目次
やりたいこと
「https://<vcsaのIPアドレス or ホスト名>:5480/」で接続する下記の画面のパスワード要件を緩くしたいと思い検証しました。
vcsaの管理画面でパスワード要件が確認できますが、結構厳しい要件になっています。変更ボタンはありますが、パスワード変更のみでパスワード要件の変更はアプライアンス管理画面からはできません。
環境
試した環境は下記のvcsaバージョンです。
設定は、vcsaにSSHログインした後「shellモード」で行っています。
設定
設定箇所
vcsaのパスワード要件が設定されているのは、「/etc/pam.d/system-password」です。以下のようになっています。
root@k-vc [ ~ ]# cat /etc/pam.d/system-password # Begin /etc/pam.d/system-password # use sha512 hash for encryption, use shadow, and try to use any previously # defined authentication token (chosen password) set by any prior module password requisite pam_cracklib.so dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 minlen=6 difok=4 enforce_for_root password required pam_pwhistory.so debug use_authtok enforce_for_root remember=5 password required pam_unix.so sha512 use_authtok shadow try_first_pass # End /etc/pam.d/system-password
このPAMファイルのはLinuxに則っているので以下のようになっています。
1列目の「password」は。パスワードの変更に使用されてされます。
2列目はフラグです。「requisite」はモジュール結果が成功する必要があり、失敗した場合はすぐにユーザーに通知され以降の「required」が実行されません。「required」はモジュール結果が成功する必要があり、失敗した場合は以降のモジュール結果が完了するまでユーザーには通知されません。
3列目は認証に使用するモジュールです。
4列目はモジュールの引数です。後述しますが「pam_cracklib.so」と「 pam_pwhistory.so」の引数の内容を変更する必要があります。
pam_cracklib.soモジュール
パスワードを辞書の単語と照合してチェックするPAMモジュールです。
以下の値が設定されています。
設定値 | 意味 |
dcredit=-1 | パスワードに数字が含まれる最大文字数。マイナスの場合は、パスワードを満たすための最小文字数。 |
ucredit=-1 | パスワードに大文字が含まれる最大文字数。マイナスの場合は、パスワードを満たすための最小文字数。 |
lcredit=-1 | パスワードに小文字が含まれる最大文字数。マイナスの場合は、パスワードを満たすための最小文字数。 |
ocredit=-1 | パスワードに英数字以外が含まれる最大文字数。マイナスの場合は、パスワードを満たすための最小文字数。 |
minlen=6 | パスワードの最小文字数。 |
difok=4 | 古いパスワードと区別するための新しいパスワードの文字変更数。 |
enforce_for_root | rootユーザーにもモジュールを有効化する。 |
簡易にするためには、各引数を0にするか「enforce_for_root」を削除して、rootはこの引数の制約を受けないようにする方法がなります。
pam_pwhistory.soモジュール
最後のパスワードを記憶するPAMモジュールです。
設定値 | 意味 |
debug | syslogデバッグの有効化 |
debug use_authtok | 以前にスタックされたモジュールによって提供されたパスワードを使用する。 |
enforce_for_root | rootユーザーにもモジュールを有効化する。 |
remember=5 | 最後のN個のパスワードを保存する。 |
簡易にするためには、各引数を0にするか「enforce_for_root」を削除して、rootはこの引数の制約を受けないようにするか、rememberを0などにする方法になります。
どうしたか?
今回は、直近と同じパスワードを設定したかったため、pam_pwhistory.soのrememberを0にしました。
# Begin /etc/pam.d/system-password # use sha512 hash for encryption, use shadow, and try to use any previously # defined authentication token (chosen password) set by any prior module password requisite pam_cracklib.so dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 minlen=6 difok=4 enforce_for_root password required pam_pwhistory.so debug use_authtok enforce_for_root remember=0 password required pam_unix.so sha512 use_authtok shadow try_first_pass # End /etc/pam.d/system-password
設定後のサービス再起動などは必要ありません。
また、ここを変更してもvcsaの管理画面の表示は変わりません。
参考
まとめ
本番環境では使えないですが、検証環境では重宝しそうです。気を付けるのはアップグレードやバージョンアップで設定が初期値に戻されれそうなことでしょうか・・・。