【Linux】パスワード要件を満たすようにパスワードポリシーを設定する方法

パスワード要件を満たすようにパスワードポリシーを設定する方法
この記事を読むと・・・
パスワード要件を満たすパスワードポリシーを設定する方法が理解できる

OSのバージョンによって出力結果に若干の違いがある可能性があります。

目次

セキュリティ的にパスワード条件はどうするべきか?

安全なパスワードと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文字以上含まれていること

STEP
パスワードポリシー設定ファイルを変更する

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 ユーザー自身または通常のユーザーに対して任意のパスワードを設定できます。

よかったらシェアしてね!
  • URLをコピーしました!
目次