この記事を読むと・・・ |
---|
パスワード要件を満たすパスワードポリシーを設定する方法が理解できる |
セキュリティ的にパスワード条件はどうするべきか?
安全なパスワードとIPAが発表しているパスワード条件は以下の通りです。
①最低でも10文字以上の文字数で構成されている。
IPA 独立行政法人 情報処理推進機構
②パスワードの中に数字や、「@」、「%」、「”」などの記号も混ぜている。
③パスワード内のアルファベットに大文字と小文字の両方を入れている。
④サービスごとに違うパスワードを設定している。
④はどう運用していくかの問題なので①、②、③を満たすパスワード条件を設定することが、
安全にパスワードを利用していくうえで、最低限必要だと思われます。
パスワードポリシーのデフォルト値
パスワードポリシーは/etc/security/pwquality.conf
で定義されています。
# cat /etc/security/pwquality.conf
# Configuration for systemwide password quality limits
# Defaults:
#
# Number of characters in the new password that must not be present in the
# old password.
# difok = 1
#
# Minimum acceptable size for the new password (plus one if
# credits are not disabled which is the default). (See pam_cracklib manual.)
# Cannot be set to lower value than 6.
# minlen = 8
#
# The maximum credit for having digits in the new password. If less than 0
# it is the minimum number of digits in the new password.
# dcredit = 0
#
# The maximum credit for having uppercase characters in the new password.
# If less than 0 it is the minimum number of uppercase characters in the new
# password.
# ucredit = 0
#
# The maximum credit for having lowercase characters in the new password.
# If less than 0 it is the minimum number of lowercase characters in the new
# password.
# lcredit = 0
#
# The maximum credit for having other characters in the new password.
# If less than 0 it is the minimum number of other characters in the new
# password.
# ocredit = 0
#
# The minimum number of required classes of characters for the new
# password (digits, uppercase, lowercase, others).
# minclass = 0
#
# The maximum number of allowed consecutive same characters in the new password.
# The check is disabled if the value is 0.
# maxrepeat = 0
#
# The maximum number of allowed consecutive characters of the same class in the
# new password.
# The check is disabled if the value is 0.
# maxclassrepeat = 0
#
# Whether to check for the words from the passwd entry GECOS string of the user.
# The check is enabled if the value is not 0.
# gecoscheck = 0
#
# Whether to check for the words from the cracklib dictionary.
# The check is enabled if the value is not 0.
# dictcheck = 1
#
# Whether to check if it contains the user name in some form.
# The check is enabled if the value is not 0.
# usercheck = 1
#
# Length of substrings from the username to check for in the password
# The check is enabled if the value is greater than 0 and usercheck is enabled.
# usersubstr = 0
#
# Whether the check is enforced by the PAM module and possibly other
# applications.
# The new password is rejected if it fails the check and the value is not 0.
# enforcing = 1
#
# Path to the cracklib dictionaries. Default is to use the cracklib default.
# dictpath =
#
# Prompt user at most N times before returning with error. The default is 1.
# retry = 3
#
# Enforces pwquality checks on the root user password.
# Enabled if the option is present.
# enforce_for_root
#
# Skip testing the password quality for users that are not present in the
# /etc/passwd file.
# Enabled if the option is present.
# local_users_only
また、似たような設定ファイルで/etc/login.defs
や/etc/pam.d/system-auth
があります。
これらの設定ファイルでは、/etc/security/pwquality.conf
では設定できないパスワード有効期限や同じように設定できるポリシーもありますが、基本的には/etc/security/pwquality.conf
を変更し、変更できないものは他の設定ファイルで変更する方針でよいかと思います。
パスワードポリシーを設定する手順
以下の条件でパスワードポリシーを設定していきます。
①パスワードが10文字以上であること
②パスワードに数字が1文字以上含まれていること
③パスワードに記号が1文字以上含まれていること
④パスワードにアルファベットの大文字が1文字以上含まれていること
⑤パスワードにアルファベットの小文字が1文字以上含まれていること
vi /etc/security/pwquality.conf
コマンドにて条件を満たすように設定します。
条件を満たすように以下の表の通りに設定します。
※ややこしいのですが「-1」とすることで1文字以上は確実に含めるという意味になります。
「1」を設定した場合、minlenで設定している数値が実質「-1」されて最大の最低文字数が減ってしまうためです。
パラメータ名 | 説明 | 今回の設定 |
---|---|---|
minlen | 新しいパスワードの最低文字数 ※6文字未満には設定できません | minlen = 10 |
dcredit | 新しいパスワードに必要とする数字の数 | dcredit = -1 |
ocredit | 新しいパスワードに必要とする記号の数 | ocredit = -1 |
ucredit | 新しいパスワードに必要とするアルファベットの大文字の数 | ucredit = -1 |
lcredit | 新しいパスワードに必要とするアルファベットの小文字の数 | lcredit = -1 |
# vi /etc/security/pwquality.conf
# Configuration for systemwide password quality limits
# Defaults:
#
# Number of characters in the new password that must not be present in the
# old password.
# difok = 1
#
# Minimum acceptable size for the new password (plus one if
# credits are not disabled which is the default). (See pam_cracklib manual.)
# Cannot be set to lower value than 6.
minlen = 10
#
# The maximum credit for having digits in the new password. If less than 0
# it is the minimum number of digits in the new password.
dcredit = -1
#
# The maximum credit for having uppercase characters in the new password.
# If less than 0 it is the minimum number of uppercase characters in the new
# password.
ucredit = -1
#
# The maximum credit for having lowercase characters in the new password.
# If less than 0 it is the minimum number of lowercase characters in the new
# password.
lcredit = -1
#
# The maximum credit for having other characters in the new password.
# If less than 0 it is the minimum number of other characters in the new
# password.
ocredit = -1
#
# The minimum number of required classes of characters for the new
# password (digits, uppercase, lowercase, others).
# minclass = 0
#
# The maximum number of allowed consecutive same characters in the new password.
# The check is disabled if the value is 0.
# maxrepeat = 0
#
# The maximum number of allowed consecutive characters of the same class in the
# new password.
# The check is disabled if the value is 0.
# maxclassrepeat = 0
#
# Whether to check for the words from the passwd entry GECOS string of the user.
# The check is enabled if the value is not 0.
# gecoscheck = 0
#
# Whether to check for the words from the cracklib dictionary.
# The check is enabled if the value is not 0.
# dictcheck = 1
#
# Whether to check if it contains the user name in some form.
# The check is enabled if the value is not 0.
# usercheck = 1
#
# Length of substrings from the username to check for in the password
# The check is enabled if the value is greater than 0 and usercheck is enabled.
# usersubstr = 0
#
# Whether the check is enforced by the PAM module and possibly other
# applications.
# The new password is rejected if it fails the check and the value is not 0.
# enforcing = 1
#
# Path to the cracklib dictionaries. Default is to use the cracklib default.
# dictpath =
#
# Prompt user at most N times before returning with error. The default is 1.
# retry = 3
#
# Enforces pwquality checks on the root user password.
# Enabled if the option is present.
# enforce_for_root
#
# Skip testing the password quality for users that are not present in the
# /etc/passwd file.
# Enabled if the option is present.
# local_users_only
root ユーザーにてパスワード変更コマンドを実行し、パスワードポリシーを満たしていないと警告メッセージが表示されますが、root ユーザー自身または通常のユーザーに対して任意のパスワードを設定できます。