だから私はCentOS 7.2システムを持っていて、realmdを使ってADドメインに参加します。 # id {username}@{domain} を実行すると、そのユーザーに関するすべての AD 情報が完全に一覧表示されます。素晴らしい!
ストック pam.d/system-auth および pam.d/password-auth ファイルを使用すると、ssh を介して AD ユーザーとしてログインできます。
ただし、強化されたシステム認証とパスワード認証を使用しようとすると、状況が厳しくなります。パスワード確認ファイル、特にpam_faillock認証部分の範囲を絞り込みました。
これは私の/etc/pam.d/password-authです。
auth required pam_env.so
auth [default=1 success=ok] pam_localuser.so debug
auth required pam_faillock.so preauth audit deny=5 unlock_time=900
auth sufficient pam_unix.so nullok try_first_pass audit
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900
auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=900
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 retry=3 authtok_type=
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 optional pam_oddjob_mkhomedir.so umask=0077
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
コンソールまたはSSHで認証しようとすると、次のメッセージが表示されます。
Oct 07 12:07:48 vmcentos72 sshd[8406]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=localhost user=user@domain
認証セクションから pam_faillock 行を削除すると正常に動作します。
システム認証は次のとおりです。
auth required pam_env.so
auth [default=1 success=ok] pam_localuser.so
auth required pam_faillock.so preauth audit silent deny=5 unlock_time=900
auth [success=done ignore=ignore default=die] pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900
auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=900
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 retry=3 authtok_type=
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 optional pam_oddjob_mkhomedir.so umask=0077
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
動作させるための提案がありますか? pam_faillockにデバッグオプションがあれば良いようです:(
答え1
問題は、PAMスタックを適切に調整しないことです。特に、角かっこ表記を使用する行の「スキップ」回数を調整しないことです。この表記法が慣れていない場合、RTFMpam.conf(5)、「必須」、「十分」などに対応する括弧記号もリストされています。
sssd が設定されている RHEL 7 の基本認証セクションは次のとおりです。
auth required pam_env.so
auth [default=1 success=ok] pam_localuser.so
auth [success=done ignore=ignore default=die] 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
このpam_localuser
行は、基本操作がモジュールをスキップすることを示します(pam_unix
この場合)。成功した場合(つまり、ユーザーがローカルの場合)、正常に続行します。これは、ドメイン(ローカルではない)ユーザーが失敗したログイン試行を作成せずにpam_unix
代わりにsssdに直接ジャンプするように行われます(pam_sss
事前にuid> = 1000チェックを使用)。
また参考にしてくださいデフォルト=死onに設定しますpam_unix
。つまり、ローカルログインが失敗した場合、認証スタックはすぐに中断されます(試みずにpam_sss
)。同様に、成功=完了ログインに成功したら、同じことを行います。
既に述べたように、pam_faillock
ドメインユーザーには機能しませんが、ローカルアカウントに使用し、周囲に3つの呼び出しを挿入する場合は、行を次に変更する必要がありますpam_unix
。pam_localuser
デフォルト=4、ドメインログインが機能し続けます。 (default = 1の場合はスキップされますが、続行されます。これは明らかpam_faillock
にpam_unix
ドメインアカウントで失敗し、default = dieのためにすぐに中断されます。default = 4に設定すると以前とpam_succeed_if
同様にスキップされます。)
私はpam_faillock
それに慣れていないので、後でもう一度呼び出すのが正しいかどうかはわかりませんが、pam_unix
これが正しい場合はSuccess = doneとdefault = dieで何かをする必要があります。そうしないと、決してロック/ロック解除されませpam_unix
ん。pam_faillock
アカウント。
これは、サンプル構成を参照できる複雑なPAMスタックです。pam_faillock(8)。誤ってすべての人をインデントしていないことを確認し(pam_deny
この問題は最終的に修正されるようにしてください)、すべての項目を調整する必要があります。デフォルト=N後続の行が追加または削除されると計算されます。
簡単に言うと: [default=1]
後で1行をスキップすることを意味します(pam_unix
この場合)。行を追加するには、数を調整する必要があります。
答え2
私のパスワード確認ファイルは次のとおりです。正常に動作しているようです。
# Setup PAM Env
auth required pam_env.so
auth required pam_faildelay.so delay=4000000
# Check if Local User, if fail skip to SSSD part
auth [success=ok default=4] pam_localuser.so
# Local User - Load pre-auth, if fail end
auth [success=ok default=2] pam_faillock.so preauth deny=3 unlock_time=604800 fail_interval=900
# Local User - Attempt Auth, if fail end
auth [success=ok default=1] pam_unix.so
# Lcaol User - Sucess, clear lock tally, end
auth [default=done] pam_faillock.so authsucc
# Local User - Fail, update lock tally, end
auth [default=die] pam_faillock.so authfail deny=3 unlock_time=604800 fail_interval=900
# SSSD User - Ensure uid is not system uid
auth requisite pam_succeed_if.so debug uid >= 1000
# SSSD User - Attempt Auth
auth sufficient pam_sss.so
# Catchall - Default result if nothin passes
auth required pam_deny.so
account required pam_faillock.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 retry=3 authtok_type=
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 optional pam_oddjob_mkhomedir.so umask=0077
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
ログインに失敗した後、AD ユーザーはエラーロック出力に表示されませんが、ローカルユーザーは表示されます。
アップデート:PAM設定の重要な手順を説明するためにいくつかの説明を追加しました。お役に立てば幸いです。