手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 SSSD LDAP 連携 – LDAP ユーザー認証と TLS を設定する

関連する記事

Ubuntu 26.04 で LDAP ユーザー認証を使う場合、SSSD を使うと NSS、PAM、キャッシュ、TLS 検証をまとめて扱えます。LDAP サーバー側の設定だけでなく、クライアント側で CA 証明書、sssd.conf、PAM / NSS、ログ確認まで行うことが重要です。

この記事では、SSSD の導入、LDAP 接続確認、TLS 検証、/etc/sssd/sssd.conf 作成、権限設定、サービス起動、ユーザー解決、ログイン確認、キャッシュ削除を扱います。

前提を確認する

まず LDAP サーバー名、ベース DN、TLS 証明書、管理ユーザー、DNS 名前解決を確認します。

getent hosts ldap.example.com
openssl s_client -connect ldap.example.com:636 -servername ldap.example.com -verify_return_error
ldapsearch -x -H ldaps://ldap.example.com:636 -b dc=example,dc=com -s base dn

必要なパッケージを導入する

SSSD、LDAP クライアント、PAM ホームディレクトリ作成用パッケージを導入します。

sudo apt update
sudo apt install sssd sssd-ldap libnss-sss libpam-sss libpam-mkhomedir ldap-utils
sssd --version
dpkg -l 'sssd*' 'libnss-sss' 'libpam-sss' | awk '/^ii/{print $2, $3}'

内部 CA を確認する

LDAPS を使う場合は、LDAP サーバー証明書を検証できる CA が OS の信頼ストアに入っている必要があります。

update-ca-certificates --verbose
openssl s_client -connect ldap.example.com:636 -servername ldap.example.com -verify_return_error
ldapwhoami -x -H ldaps://ldap.example.com:636

sssd.conf を作成する

/etc/sssd/sssd.conf は権限が厳しく、通常は 0600 で管理します。環境に合わせて LDAP URI、search base、bind DN、証明書パスを変更します。

sudo tee /etc/sssd/sssd.conf >/dev/null <<'EOF'
[sssd]
services = nss, pam
config_file_version = 2
domains = example.com
[domain/example.com]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldaps://ldap.example.com:636
ldap_search_base = dc=example,dc=com
ldap_default_bind_dn = cn=readonly,dc=example,dc=com
ldap_default_authtok_type = password
ldap_default_authtok = readonly-password
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/ssl/certs/ca-certificates.crt
cache_credentials = true
enumerate = false
fallback_homedir = /home/%u
default_shell = /bin/bash
EOF
sudo chmod 0600 /etc/sssd/sssd.conf
sudo chown root:root /etc/sssd/sssd.conf
sudo sssctl config-check

NSS と PAM を確認する

Ubuntu では libnss-ssslibpam-sss により、ユーザー解決と認証に SSSD を使います。設定状態を確認します。

grep '^passwd:' /etc/nsswitch.conf
grep '^group:' /etc/nsswitch.conf
sudo pam-auth-update --enable mkhomedir
sudo pam-auth-update --enable sss

SSSD を起動する

設定チェック後に SSSD を起動し、サービス状態とログを確認します。

sudo systemctl enable --now sssd.service
systemctl status sssd.service --no-pager
journalctl -u sssd.service -b --no-pager

LDAP ユーザーを解決する

NSS 経由で LDAP ユーザーとグループを解決できるか確認します。

getent passwd ldapuser
id ldapuser
getent group ldapgroup
sssctl user-checks ldapuser

ログインと sudo を確認する

SSH ログイン、PAM、sudo の動作を確認します。LDAP ユーザーに sudo を許可する場合は、sudoers 側の設計も合わせて確認します。

ssh ldapuser@192.0.2.10 true
sudo -l -U ldapuser
journalctl _COMM=sshd --since '1 hour ago' --no-pager
journalctl _COMM=sudo --since '1 hour ago' --no-pager

キャッシュを確認する

SSSD は認証情報や解決結果をキャッシュします。テストやトラブル対応では、キャッシュ削除と再確認を行います。

sssctl domain-status example.com
sssctl cache-status
sudo sss_cache -E
getent passwd ldapuser

TLS と LDAP 接続を切り分ける

認証に失敗する場合は、DNS、TCP、TLS、bind、検索 base、PAM の順に切り分けます。

getent hosts ldap.example.com
nc -vz ldap.example.com 636
openssl s_client -connect ldap.example.com:636 -servername ldap.example.com -verify_return_error
ldapsearch -x -H ldaps://ldap.example.com:636 -D cn=readonly,dc=example,dc=com -W -b dc=example,dc=com '(uid=ldapuser)'

ログを詳しく確認する

SSSD の詳細ログは /var/log/sssd に出ます。必要な時だけ debug level を上げ、確認後は戻します。

sudo ls -l /var/log/sssd
sudo tail -n 120 /var/log/sssd/sssd_example.com.log
sudo tail -n 120 /var/log/sssd/sssd_nss.log
sudo tail -n 120 /var/log/sssd/sssd_pam.log

確認項目

  • LDAP サーバー名を DNS で解決できるか。
  • LDAPS の TLS 検証が成功しているか。
  • /etc/sssd/sssd.conf の権限が 0600 か。
  • sssctl config-check が通るか。
  • getent passwdid で LDAP ユーザーを解決できるか。
  • SSH ログイン、PAM、sudo のログを確認できるか。
  • キャッシュ削除後も期待どおり解決できるか。

まとめ

Ubuntu 26.04 の SSSD LDAP 連携では、LDAP 接続、TLS 検証、sssd.conf、NSS / PAM、SSH、sudo、ログ確認を分けて確認します。認証系の障害は原因が重なりやすいため、DNS、TCP、TLS、LDAP bind、ユーザー検索、PAM の順に切り分けると追いやすくなります。

関連する記事
Ubuntu 26.04 SSSD LDAP 連携 – LDAP ユーザー認証と TLS を設定する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る