手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 LDAP サーバーの基本設定 – 389 Directory Server でディレクトリ基盤を作る

関連する記事

Ubuntu 26.04 で認証やアドレス帳、各種アプリケーションのユーザー参照をまとめたい場合、LDAP サーバーを用意するとディレクトリ基盤として扱いやすくなります。

この記事では、389 Directory Server を使って LDAP サーバーを構成し、instance 作成、base DN、LDAPS、証明書取り込み、ldapwhoami による bind 確認までの基本をまとめます。

この記事で扱うこと
  • 389-ds-basecockpit-389-ds の導入
  • dscreate from-file による instance 作成
  • /etc/dirsrv/slapd-main の NSS database と証明書
  • LDAPS 636 番の待ち受け確認
  • ldapwhoamildapsearch による bind 確認
対象 OSUbuntu 26.04 Server
LDAP 実装389 Directory Server
主なパッケージ389-ds-basecockpit-389-ds
instance 例main
サービス例dirsrv@main.service
LDAPS636/tcp
参考書籍
参考書籍
LDAP System Administration
LDAP の DN、DIT、bind、schema、認証連携の基礎を確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

LDAP サーバーで先に決めること

LDAP サーバーでは、パッケージ導入より先に、FQDN、base DN、管理 DN、TLS 証明書、公開するポート、client 側の信頼設定を決めます。ここが曖昧なまま進めると、後から DN や証明書の前提を直す作業が大きくなります。

  • LDAP サーバーの FQDN を決める
  • dc=example,dc=com のような base DN を決める
  • 管理 DN と管理パスワードを安全に扱う
  • LDAPS 用の証明書と秘密鍵を用意する
  • client 側で CA 証明書を信頼できるようにする
  • 636 番ポートの公開範囲を制限する

389 Directory Server をインストールする

389 Directory Server 本体と、管理用の Cockpit plugin を導入します。

コマンド
sudo apt update
sudo apt install -y 389-ds-base cockpit-389-ds
dscreate --version

instance 作成用ファイルを用意する

dscreate from-file では、instance 名、FQDN、Directory Manager のパスワード、base DN を inf ファイルで渡せます。公開例では秘密値をそのまま書かず、必ず環境ごとの安全な値に置き換えます。

コマンド
tee main.inf >/dev/null <<'EOF'
[general]
full_machine_name = ldap.example.com
[slapd]
instance_name = main
root_password = CHANGE_ME_DIRECTORY_MANAGER_PASSWORD
self_sign_cert = True
[backend-userroot]
suffix = dc=example,dc=com
EOF
chmod 0600 main.inf

instance を作成する

inf ファイルを使って 389 Directory Server の instance を作成します。instance 名を main にした場合、systemd service は dirsrv@main.service になります。

コマンド
sudo dscreate from-file main.inf
systemctl status dirsrv@main.service --no-pager
sudo ls -l /etc/dirsrv/slapd-main
sudo test -f /etc/dirsrv/slapd-main/dse.ldif

TLS 証明書を取り込む

389 Directory Server は NSS database を使います。既存の証明書と秘密鍵を PKCS#12 にまとめ、pk12util で instance の NSS database へ取り込みます。秘密鍵や passphrase は公開しないように扱います。

コマンド
openssl pkcs12 -export -out ldap.example.com.p12 -inkey ldap.example.com.key -in ldap.example.com.crt -name Server-Cert
sudo pk12util -i ldap.example.com.p12 -d /etc/dirsrv/slapd-main
sudo certutil -L -d /etc/dirsrv/slapd-main
sudo systemctl restart dirsrv@main.service

LDAPS の待ち受けを確認する

証明書を取り込んだら、LDAPS 636 番で待ち受けているか確認します。証明書名、FQDN、client 側の CA 信頼が一致していないと、bind 前に TLS 検証で失敗します。

コマンド
ss -lntp | grep 636
openssl s_client -connect ldap.example.com:636 -servername ldap.example.com
systemctl status dirsrv@main.service --no-pager
journalctl -u dirsrv@main.service --no-pager -n 100

ldapwhoami で bind を確認する

ldapwhoami は、bind できるかを確認する最小のコマンドです。まず管理 DN で LDAPS bind が成立することを確認します。

コマンド
ldapwhoami -x -H ldaps://ldap.example.com:636 -D "cn=Directory Manager" -W
ldapsearch -x -H ldaps://ldap.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -s base

client 側の信頼設定を確認する

LDAPS は server 側だけでなく client 側の CA 信頼も重要です。内部 CA や自己署名証明書を使う場合は、client 側に CA 証明書を配置し、update-ca-certificates で反映します。

コマンド
sudo install -o root -g root -m 0644 example-ca.crt /usr/local/share/ca-certificates/example-ca.crt
sudo update-ca-certificates
openssl s_client -connect ldap.example.com:636 -servername ldap.example.com -verify_return_error
ldapwhoami -x -H ldaps://ldap.example.com:636 -D "cn=Directory Manager" -W

公開範囲とログを確認する

LDAP は認証基盤に近い位置づけになるため、公開範囲を最小限にします。636 番の到達性、nftables、サービスログ、時刻同期を合わせて確認します。

コマンド
sudo nft list ruleset
ss -lntp | grep dirsrv
journalctl -u dirsrv@main.service --no-pager -n 100
chronyc tracking

確認ポイント

  • 389-ds-basecockpit-389-ds が導入されている
  • dscreate from-file で instance を作成している
  • dirsrv@main.service が active になっている
  • /etc/dirsrv/slapd-main/dse.ldif が存在する
  • LDAPS 636 番で待ち受けている
  • ldapwhoami で bind できる
  • client 側で CA 証明書を信頼できている

まとめ

Ubuntu 26.04 の LDAP サーバー基本設定では、389 Directory Server を導入し、dscreate from-file で instance を作成し、LDAPS 用の証明書を NSS database に取り込みます。

LDAP は単体で完結するサービスではなく、証明書、時刻同期、名前解決、client 側の CA 信頼、ファイアウォールと組み合わせて成立します。ldapwhoamildapsearch で bind と検索を確認できるところまでを、初期構築の完了条件にしておくと安全です。

関連する記事
Ubuntu 26.04 LDAP サーバーの基本設定 – 389 Directory Server でディレクトリ基盤を作る

コメントを残す

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

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

トップへ戻る