パスワードの文字列に対し、長さや英字大文字小文字、記号などを含めるなどの制限を設定する方法を以下に記します。
動作確認したディストリビューションはCentOS5になります。
他のバージョンでも同様の設定で動作すると思います。
PAMに関する記事です。
PAMのpam_cracklib.soの設定を変更することにより、パスワードに関する制限事項を設定することができます。
CentOS5では、以下のファイルになります。
/etc/pam.d/system-auth
上記のファイル内の以下の設定が、パスワード制限を設定する行になります。
password requisite pam_cracklib.so try_first_pass retry=3
実際にはpasswordファイルが以下のようになっています。
# cat passwd #%PAM-1.0 auth include system-auth account include system-auth password include system-auth
includeでsystem-authになっているので、system-authファイルが設定ファイルの実態になります。
pam_cracklibのオプションを以下に記します。
使用例は別途記述してあります。
オプション | 説明 | 例 |
type=文字列 | passwdコマンドを実行したときのプロンプトに表示する文字列を指定 | type=hello |
retry=数値 | パスワード変更時の試行回数を指定 | retry=3 |
difok=数値 | 現在のパスワードと指定した数字以上異なれば変更を許可する | difok=3 |
difignore=数値 | difokが無効になる長さを設定する | difignore=23 |
minlen=数値 | パスワードとして認める採用文字数を指定~厳密にminlenの値が以上のパスワード文字列にしたい場合は、 以下のオプションを設定すること。 理由は、デフォルト値では、dcredit=1, ucredit=1, lcredit=1, ocredit=1となっており、 minlenに指定した値より少ないパスワード文字数でも通ってしまいます。*1 | minlen=8 |
dcredit=-数値 | パスワード内に必要とする数字の数を指定する(値はマイナス値となり、minlenから引き算されます。) | dcredit=-2 |
ucredit=-数値 | パスワード内に必要とする英大文字の数を指定する(値はマイナス値となり、minlenから引き算されます。) | ucredit=-2 |
lcredit=-数値 | パスワード内に必要とする英小文字の数を指定する(値はマイナス値となり、minlenから引き算されます。) | lcredit=-2 |
ocredit=-数値 | パスワード内に必要とする記号の数を指定する(値はマイナス値となり、minlenから引き算されます。) | ocredit=-1 |
*1 minlenの値ですが、dcreditなどがプラスの値の場合、以下のような解釈になります。
dcredit=1の場合、パスワードに1つの数字を含む時はminlenからdcreditを引いた値が最低文字数となります。
dcreditの意味である、数字が含まれない場合はminlenが最低文字数となります。
他のオプションや詳細はman pam_cracklibで確認してみてください。
typeにHELLOを設定してpasswdコマンドを実行してみます。
設定は以下の通りです。
password requisite pam_cracklib.so try_first_pass retry=3 type=HELLO
実行結果
HELLOが出力されていのが確認できます。
[sakura@centos ~]$ passwd Changing password for user sakura. Changing password for sakura (current) UNIX password: New HELLO password:
minlen=12を設定した場合の例。 設定例は以下の通りです。
password requisite pam_cracklib.so try_first_pass retry=3 minlen=9
上記の例だと、デフォルト値であるdcredit=1, ucredit=1, lcredit=1, ocredit=1が設定されているため、
9文字以下でもパスワードが設定できてしまいます。
詳細は「pam_cracklibのオプション」の*1を参照してください。
設定例は以下の通りです。
password requisite pam_cracklib.so try_first_pass retry=3 minlen=9 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1
パスワード文字数は9文字以上で、
数字が1文字以上、英大文字が1文字以上、英小文字が1文字以上、記号が1文字以上を含むパスワードが設定できます。
たとえば数字が不要の場合は、dcredit=0のように0を指定します。
以上、pam_cracklibの設定方法をいくつか紹介しました。
以下に今回使用した設定値の説明を記します。
今回、requisiteはpam_cracklib.soの処理が失敗すると処理を中断します。
他には、required、required、requiredがあります。
pam_cracklib
try_first_passの説明は以下の通りです。
SourceForge.JP Magazine
http://sourceforge.jp/magazine/08/11/11/0153210/2