Linux
セキュリティ
パスワード
VMware_ESXi
pam_passwdqc.so

pam_passwdqcを使ってパスワード要件を設定する

More than 1 year has passed since last update.

■目的

VMware ESXi 6のデフォルトパスワード要件を知りたかったし、何なら要件をいじりたかったんです。ちなみにLinuxパッケージでも提供されている内容なので、利活用は可能です。

■やりかた

以下ファイルが設定ファイルになります。
catして中身を確認してみましょう。

/etc/pam.d/passwd
password requisite /lib/security/$ISA/pam_passwdqc.so retry=3
 min=disabled,disabled,disabled,7,7

スペースで区分けされていますが、意味は大体こんな感じです。

password 
 ⇒パスワード要件の設定をやりまっせ
requisite 
 ⇒後ろの文の指定通りやなかったら、この下の処理にはいきまへんで
/lib/security/$ISA/pam_passwdqc.so 
 ⇒このモジュール使ってパスワードの要件を決めまっせ
retry=3 min=disabled,disabled,disabled,7,7
 ⇒モジュールの引数になりまっせ

こんな調子になるので、後ろのモジュール引数となるところをいじればいいわけです。たとえば、こんな指定ができます。

min=N0,N1,N2,N3,N4

N0: 1文字クラス(※)パスワードの場合の最低パスワード長。0指定で無制限、disableで1文字クラスパスワードを使用不可。
N1: 2文字クラスパスワードの場合の最低パスワード長。0指定で無制限、disableで2文字クラスパスワードを使用不可。
N2: passphraseオプション有効時の最低パスワード長。0指定で無制限、disableで使用不可。
N3: 3文字クラスパスワードの場合の最低パスワード長。0指定で無制限、disableで3文字クラスパスワードを使用不可。
N4: 4文字クラスパスワードの場合の最低パスワード長。0指定で無制限、disableで4文字クラスパスワードを使用不可。

※文字クラス…文字の種類のこと。大文字英語、小文字英語、数字、特殊文字の組み合わせが文字列にいくら入っているかにてN文字クラスと呼称する(2文字クラス-> TKG8282 4文字クラス-> Tkg8@8@ )。

max=N

N:パスワードの最大長。

passphrase=N

N:パスワードに必要な文字クラス数を固定します。0で非固定になります。

retry=N

N:パスワード変更に失敗した際のリトライ回数。

enforce=N

N:強いパスワードの強制。noneを指定すればどのユーザに対しても強制しない。usersを指定すれば、root以外のユーザには強制する。everyoneだとすべてのユーザに強制する。

…ということで、デフォルト設定は1~2文字クラスのパスワードは受け付けず、3~4文字クラスの7文字以上の文字を受け付けます。なお、パスワード変更に失敗しても、3回は再変更の機会が与えられます。

よって、このモジュール箇所を適当なオプションにて記載すれば、思い通りのパスワード設定要件になります。その他オプションは「■参考」内のman等にて確認ください。

#なお、その他にもこのモジュールでは特定文字列(admin,root,administrator等)は受け付けてくれません。何が該当するかは公開されていないようですが…(たぶんパッケージの中身をちゃんと読めばわかると思うけど大変)

■もうちょい詳しく(ドツボ)

ここまでは、/etc/pam.d/passwd のモジュールの引数だけの話をしましたが、じゃあ他のパラメータって何?と思ったことがドツボの始まりでした。

本当に簡単に書きますが、そもそもこの /etc/pam.d/ で始まるディレクトリ配下のものは、ユーザー認証のため用意されたPAM(Pluggable Authentication Modules)と呼ばれるモジュールにて実現されています。

そのPAMモジュールでは、以下記述ルールがあり、それにこの /etc/pam.d/passwd も乗っかってるというわけです。

/etc/pam.d/配下のファイルの記載例
module_interface  control_flag  module_name  module_arguments

今回はあくまでこの「module_arguments」部分のみを議論しましたが、例えば「module_name」を今回の /lib/security/$ISA/pam_passwdqc.so から変更することも出来、その際にはまた別のオプション等で別の使い方ができるようになります。

詳しくはwebで。
#これ以上の説明は勘弁してください

■参考

man pam_passwdqc
https://linux.die.net/man/8/pam_passwdqc
http://www.yosbits.com/opensonar/rest/man/freebsd/man/ja/man8/pam_passwdqc.8.html

[RHEL]10.2. PAM 設定ファイルについて
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system-level_authentication_guide/pam_configuration_files

今週のお題 - PAM の設定を理解する
http://www.usupi.org/sysad/105.html