LDAP – 設定・管理・プログラミング
LDAP / OpenLDAP の設定、管理、連携を確認したい場合の参考書籍です。古い書籍のため、価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
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:636sssd.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-checkNSS と PAM を確認する
Ubuntu では libnss-sss と libpam-sss により、ユーザー解決と認証に SSSD を使います。設定状態を確認します。
grep '^passwd:' /etc/nsswitch.conf
grep '^group:' /etc/nsswitch.conf
sudo pam-auth-update --enable mkhomedir
sudo pam-auth-update --enable sssSSSD を起動する
設定チェック後に SSSD を起動し、サービス状態とログを確認します。
sudo systemctl enable --now sssd.service
systemctl status sssd.service --no-pager
journalctl -u sssd.service -b --no-pagerLDAP ユーザーを解決する
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 ldapuserTLS と 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 passwdとidで LDAP ユーザーを解決できるか。- SSH ログイン、PAM、sudo のログを確認できるか。
- キャッシュ削除後も期待どおり解決できるか。
まとめ
Ubuntu 26.04 の SSSD LDAP 連携では、LDAP 接続、TLS 検証、sssd.conf、NSS / PAM、SSH、sudo、ログ確認を分けて確認します。認証系の障害は原因が重なりやすいため、DNS、TCP、TLS、LDAP bind、ユーザー検索、PAM の順に切り分けると追いやすくなります。

