pam_faillockとAD/CentOS 7.2

pam_faillockとAD/CentOS 7.2

だから私は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_unixpam_localuserデフォルト=4、ドメインログインが機能し続けます。 (default = 1の場合はスキップされますが、続行されます。これは明らかpam_faillockpam_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この場合)。行を追加するには、数を調整する必要があります。

おすすめ記事