参考
OpenLDAPの基本的な構築方法|技術情報ブログ|技術情報|株式会社コンバージョン
IPv4/IPv6プロトコル指定|OpenLDAP製品情報|技術情報|株式会社コンバージョン
9.2.3. OpenLDAP サーバーの設定 Red Hat Enterprise Linux 7 | Red Hat Customer Portal
OpenLDAP Software 2.4 Administrator's Guide: Configuring slapd
OpenLDAP Software 2.4 Administrator's Guide: Backends
ポイント
- 設定もLDAPで管理(Configuration Backend)
- 設定ディレクトリ(/etc/openldap/slapd.d/cn\=config)配下のldifファイルの内容が設定される。
- 設定ディレクトリ配下のファイルの直接編集は推奨されない
- バックエンドDBの推奨はmdb(Lightning Memory-Mapped Database (LMDB))
- mdbはチューニング不要 ※DB_CONFIGはbdbの設定ファイル
- デフォルトのOLCのディレクトリツリーは以下の通り。
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config 2>/dev/null | grep "^dn" dn: cn=config dn: cn=schema,cn=config dn: cn={0}core,cn=schema,cn=config dn: olcDatabase={-1}frontend,cn=config dn: olcDatabase={0}config,cn=config dn: olcDatabase={1}monitor,cn=config dn: olcDatabase={2}mdb,cn=config
セットアップ手順
①インストール
dnf install openldap-clients openldap-servers
②サービス起動
systemctl start slapd
③設定ディレクトリバックアップ
rsync -a /etc/openldap/slapd.d /etc/openldap/slapd.d_org
④スキーマ追加
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
※必要に応じて追加
※以下で確認可能
ls /etc/openldap/slapd.d/cn\=config/cn\=schema/ cn={0}core.ldif cn={1}cosine.ldif cn={2}inetorgperson.ldif
⑤動的設定ディレクトリ設定
cat > ./config <<HERE dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootDN olcRootDN: cn=config - add: olcRootPW olcRootPW: {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX HERE ldapadd -Y EXTERNAL -H ldapi:// -f ./config
※olcRootPWの値は、slappasswdで事前に生成した文字列を設定する。
⑥monitorディレクトリ設定
cat > ./monitor <<HERE dn: olcDatabase={1}monitor,cn=config changetype: modify add: olcRootDN olcRootDN: cn=monitor - add: olcRootPW olcRootPW: {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - replace: olcAccess olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by * none HERE ldapadd -Y EXTERNAL -H ldapi:// -f ./monitor
⑦mdbディレクトリ設定
cat > ./mdb <<HERE dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=hoge,dc=com - replace: olcRootDN olcRootDN: cn=Manager,dc=hoge,dc=com - add: olcRootPW olcRootPW: {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - add: olcDbIndex olcDbIndex: uid eq olcDbIndex: entryCSN,entryUUID eq - replace: olcAccess olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none HERE ldapadd -Y EXTERNAL -H ldapi:// -f ./mdb
※ドメインやインデックスは環境に応じて変更する。
他
Syslog出力設定 & ログローテート
local4.*を指定ログファイルへ
ログローテート対象にログファイル追加
IPv6無効化
slapd起動オプションで-4を指定。(/etc/sysconfig/slapdがないので、serviceファイル直接修正しかない???)
Configuration Backendへの移行
RHEL6→RHEL8へのOpenLDAPのマイグレ作業時の考察
[前提]
RHEL6でConfiguration Backendを使わず、slapd.confで設定管理してた場合。方法は3つある。
①slapd.confの設定内容を、Configuration Backendのldifに置き換えて設定を入れる。
→LDIF慣れてないと大変。
②slapd.conf→Configuration Backendへの設定移行をslaptestでやる。
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
上記より②が妥当だが注意が必要。
バックエンドDBは、RHEL8ではdbdでなくmdbがデフォルトである点
slaptest実行前に、RHEL6から持ってきたslapd.confのdatabaseをmdbに変更する。
あと、bdb関連パラメタを削除する。checkpoint等。
slaptestコマンドがエラー終了する点
slaptestコマンド実行時にslapd.confで定義されたドメインのデータベースのファイルを/var/lib/ldapに探しに行ってエラーになる。
mdb_db_open: database "dc=hoge,dc=com" cannot be opened: No such file or directory (2). Restore from backup!
backend_startup_one (type=mdb, suffix="hoge,dc=com"): bi_db_open failed! (2)
slap_startup failed (test would succeed using the -u switch)
エラーになっても、slapd.d配下にファイルは生成されており、正常にコンフィグ移行できてそう。ただエラーは気になる。
slapdを起動させれば、DBが生成されるので、以下でやれば、slaptestがエラーにならなくなる。
slaptest実行→エラー発生→slapd起動→slapd停止→slaptest再度実行→正常終了する
RHEL6のslapd.confでdatabase configをコメントアウトしてたら有効にする!これではまった。。。。。
参考
RHEL6 LDAP server configuration issue and solve(Others-Community)
OpenLDAP Software 2.4 Administrator's Guide: Configuring slapd
SVX日記 - LDAPに浸かる
8.3.2. slapd 設定を変換する Red Hat Enterprise Linux 6 | Red Hat Customer Portal
ldap - openldap with lmdb; cannot be opened: No such file or directory - Stack Overflow