パスワードポリシーを設定する2013/05/29 |
企業のコンプライアンスが求められる中で、パスワードの設定は重要です。
簡易なパスワードを設定しないようにルールで定めてはいても、システムでの強制力がなければ
なかなか守られません。パスワードのルールはシステム側の設定で対応しましょう。
※ PAM の設定ファイルの意味 【第一フィールド】 auth : 認証の確認 account : アカウントの有効性チェック password : 認証方法を変更を提供(パスワード設定/変更等) session : 認証前/認証後の処理を管理 【第二フィールド】 required : 成功を要求する。失敗しても他モジュールを最後まで呼び出す requisite : 成功を要求する。失敗した場合は認証を即時終了する sufficient : 成功時は即時アクセスを許可する optional : オプショナル。結果は関係しない 【第三フィールド】 pam_unix.so : UNIX認証する pam_env.so : 環境変数を初期設定する pam_securetty.so : rootログインを制限する pam_stack.so : 他のPAMを呼び出す pam_nologin.so : /etc/nologinがあればroot以外のログインを拒否する pam_deny.so : 全てを拒否する pam_permit.so : 全てを許可する pam_tally2.so : 失敗ログイン履歴を/var/log/faillogに保存する pam_cracklib.so : パスワードポリシーの指定・チェック pam_limits.so : CPU時間やプロセス数、ファイル数などを制限する |
|
[1] | まずは cracklib モジュールをインストールしておきます。 |
root@dlp:~# aptitude -y install libpam-cracklib
|
[2] | パスワードの有効期限を設定する。ユーザーは設定した日数以内にパスワードを変更しなければならない。 ただし、この設定はアカウント新規作成時のみ有効。既存のアカウントには影響しない。 当設定がされていない既存ユーザーに設定する場合は「chage -M 日数 ユーザー」で設定。 |
root@dlp:~#
vi /etc/login.defs # 155行目:パスワードの有効期限を60日に設定 PASS_MAX_DAYS 60
|
[3] | パスワードの最短利用日数を設定する。ユーザーはパスワードを変更してからこの期間内はパスワードを変更できない。 ただし、この設定はアカウント新規作成時のみ有効。既存のアカウントには影響しない。 当設定がされていない既存ユーザーに設定する場合は「chage -m 日数 ユーザー」で設定。 |
root@dlp:~#
vi /etc/login.defs # 156行目:パスワードの最短利用日数を2日に設定 PASS_MIN_DAYS 2
|
[4] | パスワードの有効期限が来る前に警告を発する期間の日数を設定する。 ただし、この設定はアカウント新規作成時のみ有効。既存のアカウントには影響しない。 当設定がされていない既存ユーザーに設定する場合は「chage -W 日数 ユーザー」で設定。 |
root@dlp:~#
vi /etc/login.defs # 157行目:パスワードの有効期限が来る前に警告を発する期間の日数を7日に設定 PASS_WARN_AGE 7
|
[5] | 過去に使用したパスワードの使用を制限する。ユーザーは設定された世代以内に同じパスワードを再び設定することができない。 |
root@dlp:~#
vi /etc/pam.d/common-password # 26行目あたり:過去5世代のパスワードの再利用を禁止する password [success=1 default=ignore] pam_unix.so obscure sha512 \ remember=5 |
[6] | パスワードの最低文字数を設定する。ユーザーは設定された文字数未満のパスワードは設定できない。 |
root@dlp:~#
vi /etc/pam.d/common-password # 25行目あたり:パスワードの最低文字数を8文字に設定する password requisite pam_cracklib.so retry=3 \ minlen=8 |
[7] | パスワードに数字がN文字以上含まれていなければならない。( dcredit=-N ) その他の値(後述)も連動しているため、設定しなくとも値を0にして指定しておいてください。 |
root@dlp:~#
vi /etc/pam.d/common-password # 25行目あたり:パスワードに数字が2文字以上含まれることを要求する password requisite pam_cracklib.so retry=3 minlen=8 \ dcredit=-2 ucredit=0 lcredit=0 ocredit=0 |
[8] | パスワードに大文字がN文字以上含まれていなければならない。( ucredit=-N ) |
root@dlp:~#
vi /etc/pam.d/common-password # 25行目あたり:パスワードに大文字が1文字以上含まれることを要求する password requisite pam_cracklib.so retry=3 minlen=8 \ dcredit=-2 ucredit=-1 lcredit=0 ocredit=0 |
[9] | パスワードに小文字がN文字以上含まれていなければならない。( lcredit=-N ) |
root@dlp:~#
vi /etc/pam.d/common-password # 25行目あたり:パスワードに小文字が1文字以上含まれることを要求する password requisite pam_cracklib.so retry=3 minlen=8 \ minlen=8 dcredit=-2 ucredit=-1 lcredit=-1 ocredit=0 |
[10] | パスワードに記号がN文字以上含まれていなければならない。( ocredit=-N ) |
root@dlp:~#
vi /etc/pam.d/common-password # 25行目あたり:パスワードに記号が1文字以上含まれることを要求する password requisite pam_cracklib.so retry=3 minlen=8 \ dcredit=-2 ucredit=-1 lcredit=-1 ocredit=-1 |
[11] | 変更後のパスワードが現在のパスワードとN文字以上異なることを要求する。( difok=N ) |
root@dlp:~#
vi /etc/pam.d/common-password # 25行目あたり:変更後のパスワードが現在のパスワードと3文字以上異なることを要求する password requisite pam_cracklib.so retry=3 minlen=8 \ dcredit=-2 ucredit=-1 lcredit=-1 ocredit=-1 difok=3 |
[12] | ログインの失敗回数を設定する。ユーザーは設定された値の回数を超えて連続でログイン失敗するとアカウントがロックされる。 |
root@dlp:~#
vi /etc/pam.d/common-auth # 15行目あたりに追記。以下の例では5回連続失敗でロックする。 auth required pam_tally2.so deny=2
root@dlp:~#
vi /etc/pam.d/common-account # 15行目あたりに追記 account required pam_tally2.so # あるユーザーの失敗回数を確認する root@dlp:~# pam_tally2 -u fedora Login Failures Latest failure From fedora 3 05/30/13 15:44:30 # ロックされたユーザーを開放する root@dlp:~# pam_tally2 -r -u fedora |