• 締切済み

PAM認証(pam_cracklib.soで複雑なパスワードチェッ

はじめまして。よろしくお願いします。 Red Hat Enterprise Linux 5.3で、/etc/pam.d/system-authに定義されているpam_cracklib.soを使用し、ユーザーに対してパスワード制限を行いたいと考えております。 ここで、「英字大文字(ucredit)2文字、あるいは、英字小文字(lcredit)2文字以上を含む」といったパスワード制限を指定することは可能でしょうか? 「かつ」といった論理演算であれば、以下のようにただ引数をつなげるだけでよいのでしょうが。 ============================================ password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 ucredit=-2 lcredit=-2 ============================================ 上記制限が難しい場合、 /etc/pam.d/system-authを編集する以外に上記のパスワード制限ができる方法があれば、ご教授いただけるとありがたいです。

みんなの回答

noname#101947
noname#101947
回答No.2

No.1の補足です。 私の環境はfedora11ですが、pam_cracklib.soの引数を次のように(マイナスNではなくてプラスN)設定して試すと、今回のケースの場合はOKです。 password requisite pam_cracklib.so try_first_pass retry=3 ucredit=2 lcredit=2 以下の場合のテストケースはすべて適格でした。 ABCDEFGH すべて大文字(大文字が2つ存在する。ucredit=2に該当) abcdefgh すべて小文字(小文字が2つ存在する。lcredit=2に該当) ABcdefgh 連続した大文字(大文字が2つ存在する。ucredit=2に該当) abCDEFGH 連続した小文字(小文字が2つ存在する。lcredit=2に該当) abcDeFgh 連続していない大文字(大文字が2つ存在する。ucredit=2に該当) ABCdEfGH 連続していない小文字(小文字が2つ存在する。lcredit=2に該当) ※引数は『あるいは』とか『かつ』とかの組み合わせではなく、それぞれが単独で条件を満たせばいいようです。 ※上記を試したsystem-authを添付しておきます。 (system-authのpam_cracklib.soの引数以外は何もいじっていません) $ cat /etc/pam.d/system-auth #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 ucredit=2 lcredit=2 password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so -----以上です

sio_forest
質問者

お礼

ありがとうございました。 上記の通りと確認いたしました。

noname#101947
noname#101947
回答No.1

例示の設定でOKでしょう。 引数は次の通りです。 retry=N N回まで失敗が許されます。 type=XXX プロンプトに使われる文字列。 difok=N 現在のパスワードと N文字以上異なれば許可。 minlen=N パスワードが N文字以上だと許可。 dcredit=-N 数字が N文字以上含まれていれば許可。 ucredit=-N 大文字が N文字以上含まれていれば許可。 lcredit=-N 小文字が N文字以上含まれていれば許可。 ocredit=-N その他の文字が N文字以上含まれていれば許可。

sio_forest
質問者

お礼

ご回答ありがとうございます。 引数については、例示していただいた通りだと認識していますが、 ここで不明なのは、「英字大文字(ucredit)2文字、『あるいは』、英字小文字(lcredit)2文字以上を含む」という点です。 パスワードとして、「ABCDEFGH」「abCDEFGH」を設定した場合、どちらとも適格としたいのです(※)。 ============================================ password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 ucredit=-2 lcredit=-2 ============================================ 上記、設定であれば、「英字大文字(ucredit)2文字、『かつ』、英字小文字(lcredit)2文字以上を含む」といった設定になると認識しています。 この場合であれば、「ABCDEFGH」はパスワードとして不適格であり、「abCDEFGH」は適格であるという設定になります。 ※実際に上のようなパスワードを指定すると、「BAD PASSWORD: it is too simplistic/systematic」というエラーが発生しますが、ここでは無視してください。

関連するQ&A