手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 SSSD による LDAP 連携

Ubuntu 26.04 認証・証明書の関連記事

Ubuntu 26.04 を LDAP 認証へ参加させる場合、現在は nslcd よりも SSSD を使う構成が扱いやすいです。SSSD は NSS と PAM の間に入り、LDAP のユーザー情報取得、認証、キャッシュをまとめて扱えます。

この記事では、Ubuntu 26.04 を LDAP クライアントとして構成する手順を整理します。実環境では構成管理で /etc/sssd/sssd.conf を配布していますが、ここでは手動で行う場合の流れとして、パッケージ導入、設定ファイル作成、構文確認、ユーザー解決確認までをまとめます。

この記事で整理すること
  • SSSD を使って Ubuntu 26.04 を LDAP 認証へ参加させる
  • sssd, sssd-tools, libnss-sss, libpam-sss を導入する
  • /etc/sssd/sssd.confroot:sssd0640 で配置する
  • sssctl config-check で設定を確認してから起動する
  • getent passwdid で LDAP ユーザー解決を確認する
対象 OSUbuntu 26.04
主要パッケージsssd, sssd-tools, libnss-sss, libpam-sss
設定ファイル/etc/sssd/sssd.conf
ファイル権限root:sssd, 0640
LDAP 接続ldaps://ldap.example.com
設定確認sudo sssctl config-check
  1. 1
    前提を確認する
    LDAPS 接続、CA 証明書、LDAP の base DN と bind DN を確認します。
  2. 2
    SSSD 関連パッケージを入れる
    NSS/PAM 連携に必要なパッケージを導入します。
  3. 3
    sssd.conf を配置する
    LDAP ドメインと bind 情報を設定します。
  4. 4
    設定を検証してサービスを起動する
    sssctl config-check 後に sssd.service を起動します。
  5. 5
    ユーザー解決と認証を確認する
    getent, id, sssctl で状態を確認します。
参考
書籍
参考書籍

Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server の認証、ユーザー管理、SSSD、TLS 周辺を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

SSSD と LDAP 連携の位置づけ

SSSD は LDAP サーバーそのものではなく、Linux ホストが外部ディレクトリを参照するためのクライアント側コンポーネントです。ユーザーやグループを LDAP から引き、PAM 認証と NSS 名前解決に接続します。

  • getent passwd で LDAP ユーザーが見える
  • id で LDAP グループが解決できる
  • PAM 経由でログイン認証できる
  • 認証情報や名前解決を一定範囲でキャッシュできる
LDAP は古い技術というより、Unix/Linux のアカウント情報を表現しやすいディレクトリです。SAML/OIDC と役割が違うため、Linux ログインや POSIX アカウント連携では今でも LDAP/SSSD が自然な場面があります。

前提を確認する

SSSD を設定する前に、LDAP サーバーへ LDAPS で到達できること、CA 証明書を信頼していること、bind DN と検索 base DN が決まっていることを確認します。

コマンド
getent hosts ldap.example.com

openssl s_client \
  -connect ldap.example.com:636 \
  -servername ldap.example.com \
  -brief

ldapsearch \
  -H ldaps://ldap.example.com \
  -D 'cn=bind-readonly,ou=system,dc=example,dc=com' \
  -W \
  -b 'ou=users,dc=example,dc=com' \
  '(uid=testuser)' dn
自己署名 CA を使っている場合は、先に CA 証明書を OS の trust store へ登録しておきます。LDAPS の証明書検証が通らない状態で SSSD を設定しても、原因の切り分けが難しくなります。

SSSD 関連パッケージをインストールする

Ubuntu 26.04 では、SSSD 本体、管理用コマンド、NSS/PAM 連携パッケージを入れます。

コマンド
sudo apt update
sudo apt install -y sssd sssd-tools libnss-sss libpam-sss ldap-utils

ldap-utils は SSSD の必須パッケージではありませんが、ldapsearch で接続確認を行うために入れておくと便利です。

sssd.conf を作成する

/etc/sssd/sssd.conf を作成します。次の例では、mainservices の 2 つの検索領域をドメインとして分けています。単一の LDAP 領域だけを見る場合は、ドメインを 1 つにして構いません。

設定ファイル例
sudo tee /etc/sssd/sssd.conf >/dev/null <<'EOF'
[sssd]
services = nss, pam
domains = main, services

[domain/main]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = permit
ldap_uri = ldaps://ldap.example.com
ldap_search_base = ou=users,dc=example,dc=com
ldap_default_bind_dn = cn=bind-readonly,ou=system,dc=example,dc=com
ldap_default_authtok = CHANGE_ME_BIND_PASSWORD
cache_credentials = true

[domain/services]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = permit
ldap_uri = ldaps://ldap.example.com
ldap_search_base = ou=services,dc=example,dc=com
ldap_default_bind_dn = cn=bind-readonly,ou=system,dc=example,dc=com
ldap_default_authtok = CHANGE_ME_BIND_PASSWORD
cache_credentials = true
EOF

sudo chown root:sssd /etc/sssd/sssd.conf
sudo chmod 0640 /etc/sssd/sssd.conf
例では bind password を直接書いています。実運用では構成管理や secret 管理で扱い、記事やリポジトリに実パスワードを残さないようにします。

設定を検証する

SSSD は設定ファイルの権限に厳しいため、内容だけでなく所有者と権限も確認します。そのうえで sssctl config-check を実行します。

コマンド
sudo ls -l /etc/sssd/sssd.conf
sudo sssctl config-check

SSSD を起動する

設定確認が通ったら、SSSD を有効化して起動します。

コマンド
sudo systemctl enable --now sssd.service
systemctl status sssd.service --no-pager

設定を変更した場合は、サービスを再起動します。キャッシュが原因で古い状態が見える場合は、確認目的でキャッシュ削除を検討します。

コマンド
sudo systemctl restart sssd.service
sudo sss_cache -E

LDAP ユーザー解決を確認する

SSSD が動作したら、LDAP ユーザーやグループが OS から見えるか確認します。

コマンド
getent passwd testuser
id testuser
sssctl user-checks testuser

getent passwd でユーザーが見えない場合、LDAP 検索 base DN、bind DN、CA 証明書、ネットワーク到達性、SSSD のログを順に確認します。

ログを確認する

切り分けでは、まず systemd のログと SSSD のドメイン別ログを見ます。

コマンド
journalctl -u sssd.service --no-pager -n 100

sudo ls -l /var/log/sssd/
sudo tail -n 100 /var/log/sssd/sssd_main.log

ドメイン別ログがある場合は、/var/log/sssd/sssd_<domain>.log も確認します。認証失敗、証明書検証失敗、bind 失敗、検索 base の誤りはログに出ることが多いです。

よくある確認ポイント

  • LDAPS の証明書検証が通っているか
  • ldap_search_base が実際のユーザー DN を含んでいるか
  • bind DN とパスワードが正しいか
  • /etc/sssd/sssd.conf0640 になっているか
  • PAM/NSS 連携パッケージが入っているか
  • キャッシュに古い結果が残っていないか

nsswitch.conf について

通常、libnss-sss の導入により NSS 側の連携が入ります。もしユーザー解決ができない場合は、/etc/nsswitch.confpasswd, group, shadowsss が含まれているか確認します。

コマンド
grep -E '^(passwd|group|shadow):' /etc/nsswitch.conf

まとめ

Ubuntu 26.04 の LDAP クライアント設定では、SSSD を使って NSS と PAM を LDAP へ接続します。重要なのは、LDAPS の証明書検証、/etc/sssd/sssd.conf の権限、sssctl config-check による検証、getentid によるユーザー解決確認です。

LDAP 連携は、単に認証方式を増やす話ではなく、Linux ホスト上で POSIX ユーザーをどう表現し、どの範囲でキャッシュし、どの経路でログインさせるかを設計する話です。SSSD を使うと、その境界を比較的整理しやすくなります。

Ubuntu 26.04 認証・証明書の関連記事
Ubuntu 26.04 SSSD による LDAP 連携

コメントを残す

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

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

トップへ戻る