ユーザーポリシーの設定
OSユーザーの定義
ユーザーを作成するときに利用するuseradd
コマンドではデフォルトで設定されるユーザー情報がある
# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
デフォルトではユーザーID、グループIDはシステムで予約されているものがあり、/usr/share/doc/setup/uidgid
にて定義されている
新規で作成するユーザーやグループはが500番から始まるようになっている
SKEL
にはデフォルトでユーザーホームに配置されるファイルテンプレートが設定されている
ユーザーデフォルトの変更
ユーザー作成時のホームディレクトリを変更したい場合、下記定義ファイルを変更する
# vim /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home/users
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
パスワードポリシー
パスワード文字数、文字種の定義
# vi /etc/login.defs
PASS_MIN_LEN 9
またパスワード設定時に「英語大文字」「英語小文字」「数字」「記号」などを利用するように制限
# vim /etc/security/pwquality.conf
minlen = 9
dcredit = -1
ucredit = -1
lcredit = -1
認証設定
8系より authconfig は非推奨とされ authselect ベースになっている
AuthselectRed Hat Enterprise Linuxホスト上のユーザー認証の設定を単純化するユーティリティです。Authselect現代のすべてのID管理システムで普遍的に使用できる2つの既製のプロファイルを提供します。
利用できるプロファイル
# authselect list
- nis Enable NIS for system authentication
- sssd Enable SSSD for system authentication (also for local users only)
- winbind Enable winbind for system authentication
現在設定さてているプロファイル
# authselect current
プロファイル ID: sssd
有効な機能: なし
定義ファイル
# vim /etc/nsswitch.conf
passwd: sss files systemd
group: sss files systemd
netgroup: sss files
automount: sss files
services: sss files
デフォルトで認証時に優先参照先として SSSD が設定されている
システムを特定のアクティブディレクトリや LDAP を利用していないのであれば SSSD とかは気にしなくてよい
上記のように認証時に SSSD がチェックされ、対象のレジストラがない場合は /etc/passwd
などの file が参照される
SSSD はデフォルトでサービスインストール、起動しているため利用しない場合は停止しておく
# systemctl stop sssd
# systemctl disable sssd
/etc/nsswitch.conf
ファイルを直接変更しない
PAMの設定
PAMの基本的な設定の管理が authconfig から authselect に変わり下記のようにファイル構成が変化している
# ls -l /etc/pam.d/
lrwxrwxrwx. 1 root root 32 5月 14 21:37 fingerprint-auth -> /etc/authselect/fingerprint-auth
lrwxrwxrwx. 1 root root 29 5月 14 21:37 password-auth -> /etc/authselect/password-auth
lrwxrwxrwx. 1 root root 25 5月 14 21:37 postlogin -> /etc/authselect/postlogin
lrwxrwxrwx. 1 root root 30 5月 14 21:37 smartcard-auth -> /etc/authselect/smartcard-auth
lrwxrwxrwx. 1 root root 27 5月 14 21:37 system-auth -> /etc/authselect/system-auth
システムを特定のアクティブディレクトリや LDAP を利用していないのであれば SSSD 等は気にしなくて良いが、PAM の管理も行っているため PAM を変更したい場合は対応が必要
authselect は管理ファイルを厳密に管理しており、手動で変更を行っても排他され設定は有効化されない
# ls -l /etc/authselect/
合計 40
-rw-r--r--. 1 root root 6 5月 14 21:37 authselect.conf
drwxr-xr-x. 2 root root 6 2月 26 07:27 custom
-rw-r--r--. 1 root root 231 5月 14 21:37 dconf-db
-rw-r--r--. 1 root root 205 5月 14 21:37 dconf-locks
-rw-r--r--. 1 root root 91 5月 14 21:37 fingerprint-auth
-rw-r--r--. 1 root root 2371 5月 14 21:37 nsswitch.conf
-rw-r--r--. 1 root root 1970 5月 14 21:37 password-auth
-rw-r--r--. 1 root root 399 5月 14 21:37 postlogin
-rw-r--r--. 1 root root 91 5月 14 21:37 smartcard-auth
-rw-r--r--. 1 root root 1970 5月 14 21:37 system-auth
-rw-r--r--. 1 root root 1516 5月 10 19:42 user-nsswitch.conf
PAM の中身にも下記変更点がある
# cat /etc/authselect/password-auth
# Generated by authselect on Tue May 14 21:37:13 2019
# Do not modify this file manually.
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet
auth [default=1 ignore=ignore success=ok] pam_localuser.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth sufficient pam_sss.so forward_pass
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
認証時のシステムユーザーと追加ユーザーとの認証処理区別。
下記のように UID が1000以上か以下かで処理される PAM が分かれるように定義されている
※恐らく SSSD を考慮してIDが1000番以上の任意追加ユーザーでローカルにユーザーが存在していない場合は SSSD を参照するようにしているのでは?
※上記認証フローを考慮した場合、サービスユーザーを追加する場合は 1000 番以内にすることを検討するなどが必要になるかもしれない?
auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet
auth [default=1 ignore=ignore success=ok] pam_localuser.so
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth sufficient pam_sss.so forward_pass
認証設定のみ変更したプロファイルの作成
PAM 設定のみを変更するようのカスタムプロファイルを作成する
# authselect create-profile nis-custom --base-on nis --symlink-dconf --symlink=REQUIREMENTS
閾値以上の認証失敗をした場合はアカウントをロックする
# vim /etc/authselect/custom/nis-custom/system-auth
auth required pam_faillock.so preauth silent deny=10 unlock_time=300 {include if "with-faillock"}
auth required pam_faillock.so authfail deny=10 unlock_time=300 {include if "with-faillock"}
# vim /etc/authselect/custom/nis-custom/password-auth
auth required pam_faillock.so preauth silent deny=10 unlock_time=300 {include if "with-faillock"}
auth required pam_faillock.so authfail deny=10 unlock_time=300 {include if "with-faillock"}
コンフィグ内になる {include if "with-faillock"}
は authselect が現在読み込んでいるモジュール等から判断され、動的にパラメータを変更、追加します
上記の様に pam_faillock
を定義しているにもかかわらず設定が有効化されない場合はモジュールを有効化する必要がある
# authselect enable-feature with-faillock
指紋認証モジュールの削除
# vim /etc/authselect/custom/nis-custom/system-auth
#auth sufficient pam_fprintd.so
# vim /etc/authselect/custom/nis-custom/password-auth
#auth sufficient pam_fprintd.so
パスワード認証、パスワード定義に pwquality
を利用するように設定
# vim /etc/authselect/custom/nis-custom/system-auth
password required pam_pwquality.so retry=3
# vim /etc/authselect/custom/nis-custom/password-auth
password required pam_pwquality.so retry=3
ポリシーの変更
# authselect list
- nis Enable NIS for system authentication
- sssd Enable SSSD for system authentication (also for local users only)
- winbind Enable winbind for system authentication
- custom/nis-custom Enable NIS for system authentication
# authselect select custom/nis-custom
プロファイル "custom/nis-custom" が設定されました。
以下の nsswitch マップはプロファイルで上書きされます:
- aliases
- automount
- ethers
- group
- hosts
- initgroups
- netgroup
- networks
- passwd
- protocols
- publickey
- rpc
- services
- shadow
構文チェック
# authselect check
現在の設定は有効です。
設定の反映
# authselect apply-changes
変更は正常に適用されました。
authselect コマンドについては下記を参照する
アカウントロック制御
ロックの確認
# faillock
ロックの解除
# faillock --user {username} --reset