SSSDプロセスは終了しない

SSSDプロセスは終了しない

私の問題を調べるために時間を割いていただきありがとうございます。

現在、これまで一度だけ発生した問題に取り組んでいます。1 月 3 日にこの問題が初めて発生したときは、サーバーを再起動することができ、すべて正常に見えましたが、現在は再発しています。これは実稼働データベース システムであるため、再起動のタイミングを見つけるのが難しい場合があります。数日後に再度再起動して問題の一時的な修正を行う前に、今回は実際に何が起きているのかをしっかりと把握したいと考えています。さあ、始めましょう...

問題のシステムのユーザー認証は、Red Hat Directory Server 9 を介して LDAP で処理されます。以下に説明する問題は、この 1 つのサーバーでのみ発生し、データベースを共有するサーバーでも同じ症状は発生しません。現時点では、LDAP アカウントは認証してサーバーにログインできません。LDAP 認証は SSSD によって処理されていますが、現在停止または再起動できません。どちらかを実行しようとすると、SSH コンソールが応答しなくなります。(ctrl-c では発行されたコマンドを終了できません)

PS では通常の sssd 関連プロセスが実行中であることが示されていますが、kill -9それらを停止しようとしても、いずれも正常に停止されないようです。

ps aux | grep sss | grep -v grep
root      1150  0.0  0.0 150828  2908 ?        D    09:05   0:00 /usr/libexec/sssd/sssd_nss -d 0 --debug-to-files
root      7025  0.0  0.0  93616  2504 pts/2    D    16:18   0:00 /usr/sbin/sssd -f -D
root     11148  0.0  0.0 179436  5672 ?        D    Jan08  16:22 /usr/libexec/sssd/sssd_be -d 0 --debug-to-files --domain default
root     32700  0.0  0.0 150784  2908 ?        D    10:10   0:00 /usr/libexec/sssd/sssd_pam -d 0 --debug-to-files

使用するとstrace getent -s sss passwd、一部の接続試行が拒否されていることがわかりますが、それに対して何をすべきかよくわかりません。

connect(3, {sa_family=AF_FILE, path="/var/lib/sss/pipes/nss"...}, 110) = -1 ECONNREFUSED (Connection refused)
close(3)                                = 0
socket(PF_FILE, SOCK_STREAM, 0)         = 3
fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
fcntl(3, F_GETFD)                       = 0
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
connect(3, {sa_family=AF_FILE, path="/var/lib/sss/pipes/nss"...}, 110) = -1 ECONNREFUSED     (Connection refused)
close(3)                                = 0
socket(PF_FILE, SOCK_STREAM, 0)         = 3
fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
fcntl(3, F_GETFD)                       = 0
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
connect(3, {sa_family=AF_FILE, path="/var/lib/sss/pipes/nss"...}, 110) = -1 ECONNREFUSED (Connection refused)

確認すると、lsof | head -n1; lsof | grep /var/lib/sss/pipes/正常なシステムと不良システムの間に開いているパイプがはるかに少ないことがわかります。これらのパイプの PID は から報告されたものと同じなのでps auxkill -9これらに対しても試行しても無駄でした。

不良SSD

lsof | head -n1; lsof | grep /var/lib/sss/pipes/
COMMAND     PID         USER   FD      TYPE             DEVICE    SIZE/OFF       NODE NAME
sssd_be   11148         root   15u     unix 0xffff8806635911c0         0t0   31817638 /var/lib/sss/pipes/private/sbus-dp_default.11148
sssd_be   11148         root   16u     unix 0xffff880d443d6180         0t0   31783555 /var/lib/sss/pipes/private/sbus-dp_default.11148
sssd_be   11148         root   17u     unix 0xffff880c536d94c0         0t0   31783560 /var/lib/sss/pipes/private/sbus-dp_default.11148

良いSSSD

lsof | head -n1; lsof | grep /var/lib/sss/pipes/
COMMAND     PID         USER   FD      TYPE             DEVICE    SIZE/OFF       NODE NAME
sssd      26793         root   13u     unix 0xffff88030b5d8c40         0t0 3248762734 /var/lib/sss/pipes/private/sbus-monitor
sssd      26793         root   14u     unix 0xffff8808cc064bc0         0t0 3248762735 /var/lib/sss/pipes/private/sbus-monitor
sssd      26793         root   15u     unix 0xffff880a9d9bc840         0t0 3248768164 /var/lib/sss/pipes/private/sbus-monitor
sssd      26793         root   16u     unix 0xffff880040a32f00         0t0 3248768165 /var/lib/sss/pipes/private/sbus-monitor
sssd_be   26794         root   15u     unix 0xffff8808cc064200         0t0 3248767368 /var/lib/sss/pipes/private/sbus-dp_default.26794
sssd_be   26794         root   16u     unix 0xffff880a9d9bd880         0t0 3248763661 /var/lib/sss/pipes/private/sbus-dp_default.26794
sssd_be   26794         root   17u     unix 0xffff8809841b4480         0t0 3248763662 /var/lib/sss/pipes/private/sbus-dp_default.26794
sssd_nss  26795         root   16u     unix 0xffff880a9d9bd200         0t0 3248751954 /var/lib/sss/pipes/nss
sssd_pam  26796         root   16u     unix 0xffff880859e26180         0t0 3248774325 /var/lib/sss/pipes/pam
sssd_pam  26796         root   17u     unix 0xffff880859e27b80         0t0 3248774326 /var/lib/sss/pipes/private/pam

また、/var/log/secureには複数のエントリが含まれています

sshd[9177]: pam_succeed_if(sshd:auth): error retrieving information about user
su: pam_sss(su-l:session): Request to sssd failed. Connection refuse
crond[29568]: pam_sss(crond:session): Request to sssd failed. Connection refused

さらに、最初に気付いたことの 1 つは、/var/log/messages ファイルにデータが含まれていないことでした。このファイルと /var/log/sssd/ ログの両方が今朝 9:03 頃に収集を停止したようですが、/var/log/secure は問題なくデータを蓄積し続けました。syslog を再起動するとメッセージの問題は解決しましたが、sssd ログはまだ機能していません。

audit: backlog limit exceeded audit: audit_backlog=322 > audit_backlog_limit=320最後に気づいたのは、dmesg がや のようなメッセージでいっぱいになっていることですaudit_log_start: 122 callbacks suppressed。これらは syslog が正しく動作していなかったときに発生したものだと思いましたが、まだ確認していません。

私はまだこの件について調査中で、何か見つかるといいのですが、皆さんが提供してくださる提案やフィードバックを大歓迎します。

どうもありがとう!

-オムニ

答え1

同じシステムで pam_ldap と sssd を実行すると問題が発生しました。pam で sssd の使用を停止したい場合は、以下を実行する必要があります。

pam-config -a --ldap

これにより、LDAP が pam に追加され、次が実行されます。

pam-config -d --sss

/etc/pam.d/ 内の pam 関連の設定ファイルから sssd 設定を削除します。

sss が使用されていないことを確認するには、nsswitch.conf に ldap が正しい場所にあること (または少なくとも sss がないこと) も確認する必要があります。以下は sss が有効になっている /etc/nsswitch.conf です。

#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry. 
#  
# Legal entries are:
#
#       compat                  Use compatibility setup
#       nisplus                 Use NIS+ (NIS version 3)
#       nis                     Use NIS (NIS version 2), also called YP
#       dns                     Use DNS (Domain Name Service)
#       files                   Use the local files
#       [NOTFOUND=return]       Stop searching if not found so far  
#
# For more information, please read the nsswitch.conf.5 manual page.
#

passwd: compat sss
group:  compat sss

hosts:  files mdns_minimal [NOTFOUND=return] dns
networks:   files dns

services:   files
protocols:  files
rpc:    files
ethers: files
netmasks:   files
netgroup:   files
publickey:  files

bootparams: files
automount:  files
aliases:    files
passwd_compat:  files
group_compat:   files

このファイルでは sss が無効になっており、ldap が有効になっています。

passwd: compat ldap
group:  compat ldap

hosts:  files mdns_minimal [NOTFOUND=return] dns
networks:   files dns

services:   files
protocols:  files
rpc:    files
ethers: files
netmasks:   files
netgroup:   files
publickey:  files

bootparams: files
automount:  files
aliases:    files
passwd_compat:  files
group_compat:   files

関連情報