CentOS 6
Sponsored Link

パスワードポリシーを設定する
2011/07/11
 
企業のコンプライアンスが求められる中で、パスワードの設定は重要です。 簡易なパスワードを設定しないようにルールで定めてはいても、システムでの強制力がなければ なかなか守られません。パスワードのルールはシステム側の設定で対応しましょう。
※ 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    : 失敗ログイン履歴を記録する
   pam_cracklib.so  : パスワードポリシーの指定・チェック
   pam_limits.so    : CPU時間やプロセス数、ファイル数などを制限する

[1] パスワードの有効期限を設定する。ユーザーは設定した日数以内にパスワードを変更しなければならない。
ただし、この設定はアカウント新規作成時のみ有効。既存のアカウントには影響しない。
当設定がされていない既存ユーザーに設定する場合は「chage -M 日数 ユーザー」で設定。
[root@dlp ~]#
vi /etc/login.defs
# 17行目:パスワードの有効期限を60日に設定

PASS_MAX_DAYS
60
[2] パスワードの最短利用日数を設定する。ユーザーはパスワードを変更してからこの期間内はパスワードを変更できない。
ただし、この設定はアカウント新規作成時のみ有効。既存のアカウントには影響しない。
当設定がされていない既存ユーザーに設定する場合は「chage -m 日数 ユーザー」で設定。
[root@dlp ~]#
vi /etc/login.defs
# 18行目:パスワードの最短利用日数を2日に設定

PASS_MIN_DAYS
2
[3] パスワードの有効期限が来る前に警告を発する期間の日数を設定する。
ただし、この設定はアカウント新規作成時のみ有効。既存のアカウントには影響しない。
当設定がされていない既存ユーザーに設定する場合は「chage -W 日数 ユーザー」で設定。
[root@dlp ~]#
vi /etc/login.defs
# 20行目:パスワードの有効期限が来る前に警告を発する期間の日数を7日に設定

PASS_WARN_AGE
7
[4] 過去に使用したパスワードの使用を制限する。ユーザーは設定された世代以内に同じパスワードを再び設定することができない。
[root@dlp ~]#
vi /etc/pam.d/system-auth
# 16行目あたり:過去5世代のパスワードの再利用を禁止する

password
sufficient     pam_unix.so sha512 shadow nullok try_first_pass use_authtok \

 
remember=5
[5] パスワードの最低文字数を設定する。ユーザーは設定された文字数未満のパスワードは設定できない。
なお、以下では minlen=* が設定に相当しますが、その他の値(後述)も minlen と連動しているため、 設定しなくとも値を0にして指定しておく必要があります。
[root@dlp ~]#
vi /etc/pam.d/system-auth
# 15行目あたり:パスワードの最低文字数を8文字に設定する

password
requisite     pam_cracklib.so try_first_pass retry=3 type= \

 
minlen=8 dcredit=0 ucredit=0 lcredit=0 ocredit=0
[6] 5の設定に加えて、パスワードに数字がN文字以上含まれていなければならない。( dcredit=-N )
[root@dlp ~]#
vi /etc/pam.d/system-auth
# 15行目あたり:パスワードに数字が2文字以上含まれることを要求する

password
requisite     pam_cracklib.so try_first_pass retry=3 type= \

 
minlen=8 dcredit=-2 ucredit=0 lcredit=0 ocredit=0
[7] 5,6の設定に加えて、パスワードに大文字がN文字以上含まれていなければならない。( ucredit=-N )
[root@dlp ~]#
vi /etc/pam.d/system-auth
# 15行目あたり:パスワードに大文字が1文字以上含まれることを要求する

password
requisite     pam_cracklib.so try_first_pass retry=3 type= \

 
minlen=8 dcredit=-2 ucredit=-1 lcredit=0 ocredit=0
[8] 5,6,7の設定に加えて、パスワードに小文字がN文字以上含まれていなければならない。( lcredit=-N )
[root@dlp ~]#
vi /etc/pam.d/system-auth
# 15行目あたり:パスワードに小文字が1文字以上含まれることを要求する

password
requisite     pam_cracklib.so try_first_pass retry=3 type= \

 
minlen=8 dcredit=-2 ucredit=-1 lcredit=-1 ocredit=0
[9] 5,6,7,8の設定に加えて、パスワードに記号がN文字以上含まれていなければならない。( ocredit=-N )
[root@dlp ~]#
vi /etc/pam.d/system-auth
# 15行目あたり:パスワードに記号が1文字以上含まれることを要求する

password
requisite     pam_cracklib.so try_first_pass retry=3 type= \

 
minlen=8 dcredit=-2 ucredit=-1 lcredit=-1 ocredit=-1
[10] 変更後のパスワードが現在のパスワードとN文字以上異なることを要求する。( difok=N )
[root@dlp ~]#
vi /etc/pam.d/system-auth
# 15行目あたり:変更後のパスワードが現在のパスワードと3文字以上異なることを要求する

password
requisite     pam_cracklib.so try_first_pass retry=3 type=
difok=3
[11] ログインの失敗回数を設定する。ユーザーは設定された値の回数を超えて連続でログイン失敗するとアカウントがロックされる。
[root@dlp ~]#
vi /etc/pam.d/system-auth
# 以下のように2行追記する。失敗回数は「deny=*」で設定し、以下の例では5回連続失敗でロックする

#%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
required     pam_tally2.so deny=5

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
required     pam_tally2.so

account
sufficient     pam_localuser.so

account
sufficient     pam_succeed_if.so uid < 500 quiet

account
required     pam_permit.so
# あるユーザーの失敗回数を確認する

[root@dlp ~]#
pam_tally2 -u cent

Login
Failures     Latest failure     From

cent
7     04/27/11 13:10:26     ttyS0
# ロックされたユーザーを開放する

[root@dlp ~]#
pam_tally2 -r -u cent
※ sshd は「system-auth」ではなく「password-auth」を参照しているため、SSH経由の失敗もカウントする場合は「/etc/pam.d/password-auth」に上記と同じ設定をする

[12] パスワードの暗号化方式を変更する。
システムの設定値が変更されるのみで既存ユーザーには影響しないため、 暗号化方式変更後はユーザーにパスワード変更してアップデートしてもらう必要がある。 「chage -d 0 user」とすれば、次回ログイン時に強制的にパスワード変更させることができる。
# 現在の暗号化方式を調べる

[root@dlp ~]#
authconfig --test | grep hashing

password hashing algorithm is md5
# 暗号化方式を sha512 に変更

[root@dlp ~]#
authconfig --passalgo=sha512 --update
[root@dlp ~]#
authconfig --test | grep hashing

password hashing algorithm is sha512
 
Tweet