OpenLDAPはRHEL 7までは、リポジトリからyum
コマンドを使ってインストールすることができたが、RHEL 8になってからOpenLDAPは含まれないようになってしまい、RHELのサポート範囲外のソフトウェアとなってしまった。
RHEL 8以降は、OpenLDAPからRed Hat Directory Server (RHDS) を利用することができる。しかし、RHDSは389 Directory Serverがベースとなっており、OpenLDAPや構築方法や運用方法が異なってしまう。
以上より、RHEL 8以降においてもOpenLDAPが利用するため、本記事では、RHEL 9にOpenLDAPをソースからインストールする手順を記載する。
環境
今回は以下のOSに対してインストールを行った。OpenLDAPは本記事作成時のLTSリリースの最新版である2.5.16をダウンロードした。
- OS : RHEL 9
- OpenLDAP : 2.5.16
OpenLDAPのドメイン等の情報は以下とする。
設定項目 | 設定値 |
---|---|
ドメイン | dc=example,dc=com |
RootDN | cn=Manager,dc=example,dc=com |
OU | ou=group,dc=example,dc=com |
グループ | cn=ldapgrp,ou=group,dc=example,dc=com |
ユーザ1 | uid=user01,ou=group,dc=example,dc=com |
ユーザ2 | uid=user01,ou=group,dc=example,dc=com |
OpenLDAPインストール
1. OpenLDAPのソースを入手
OpenLDAPのソースは以下からダウンロードできる。今回はLTSリリースである2.5.16をダウンロードした。
ファイル名はopenldap-2.5.16.tgz
となる。以下の通り解凍して、解凍後のディレクトリ内に移動しておく。
# tar zxf openldap-2.5.16.tgz
# cd openldap-2.5.16
2. 前提パッケージインストール
ビルド時にエラーや警告が表示されないように、以下前提パッケージのインストールを行う。
# dnf install gcc make cyrus-sasl-devel openssl-devel systemd-devel -y
3. Makefile
作成
./configure
を実行してMakefileを作成する。オプションは以下の通り設定する。なお、設定可能なオプションは他にも多数あり、./configure --help
にて確認することができる。
オプション | 説明 |
---|---|
--with-tls |
SSL/TLSを有効化。 |
--with-cyrus-sasl |
SASLによる認証を有効化。 |
--enable-crypt |
パスワードの暗号化を有効化。 |
--prefix=/usr |
インストールディレクトリを変更。デフォルトは/usr/local/ となる。 |
--sysconfdir=/etc |
設定ファイル配置ディレクトリを変更。デフォルトは/usr/local/etc となる。 |
./configure
の実行結果を以下に記載する。
# ./configure --with-tls --with-cyrus-sasl --enable-crypt --with-systemd --prefix=/usr --sysconfdir=/etc
Configuring OpenLDAP 2.5.16-Release ...
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking configure arguments... done
checking for cc... cc
checking for ar... ar
checking for strip... strip
checking whether make sets $(MAKE)... yes
~(中略)~
config.status: executing libtool commands
config.status: executing default commands
Making servers/slapd/backends.c
Add config ...
Add ldif ...
Add monitor ...
Add mdb ...
Add relay ...
Making servers/slapd/overlays/statover.c
Add syncprov ...
Please run "make depend" to build dependencies
Makefile
が作成されていることを確認しておく。
# ls -l Makefile
-rw-r--r--. 1 root root 9256 10月 14 07:16 Makefile
4. 依存関係チェック
作成したMakfefileで依存関係をチェックする。特にエラーがなければ問題ない。
# make depend
Making depend in /root/openldap-2.5.16
Entering subdirectory include
make[1]: ディレクトリ '/root/openldap-2.5.16/include' に入ります
Making ldap_config.h
make[1]: ディレクトリ '/root/openldap-2.5.16/include' から出ます
~(中略)~
Entering subdirectory man8
make[3]: ディレクトリ '/root/openldap-2.5.16/doc/man/man8' に入ります
make[3]: 'depend' に対して行うべき事はありません.
make[3]: ディレクトリ '/root/openldap-2.5.16/doc/man/man8' から出ます
make[2]: ディレクトリ '/root/openldap-2.5.16/doc/man' から出ます
make[1]: ディレクトリ '/root/openldap-2.5.16/doc' から出ます
5. ビルド実行
ビルド実行する。1~2分程度で完了する。
#make
Making all in /root/openldap-2.5.16
Entering subdirectory include
make[1]: ディレクトリ '/root/openldap-2.5.16/include' に入ります
make[1]: 'all' に対して行うべき事はありません.
make[1]: ディレクトリ '/root/openldap-2.5.16/include' から出ます
~(中略)~
make[3]: ディレクトリ '/root/openldap-2.5.16/doc/man/man8' から出ます
make[2]: ディレクトリ '/root/openldap-2.5.16/doc/man' から出ます
make[1]: ディレクトリ '/root/openldap-2.5.16/doc' から出ます
6. インストール
ビルド後、インストールを実行する。なお、インストール前にmake test
コマンドでインストール前のテストを行うことができるので、安全にインストールを進めたい場合は実行すること。make test
は数分~数十分時間を要する。
# make install
Making all in /root/openldap-2.5.16
Entering subdirectory include
make[1]: ディレクトリ '/root/openldap-2.5.16/include' に入ります
make[1]: 'all' に対して行うべき事はありません.
make[1]: ディレクトリ '/root/openldap-2.5.16/include' から出ます
~(中略)~
installing slappasswd.8 in /usr/share/man/man8
installing slapschema.8 in /usr/share/man/man8
installing slaptest.8 in /usr/share/man/man8
make[3]: ディレクトリ '/root/openldap-2.5.16/doc/man/man8' から出ます
make[2]: ディレクトリ '/root/openldap-2.5.16/doc/man' から出ます
make[1]: ディレクトリ '/root/openldap-2.5.16/doc' から出ます
以上で、OpenLDAPのソースからのインストールは完了となる。続けて初期設定を行う。
OpenLDAP初期設定
1. 初期設定
設定ファイルをバックアップしておく。
# cd ~
# cp -R /etc/openldap ~/openldap.org
# ls -ld ~/openldap.org
drwxr-xr-x. 4 root root 163 10月 14 07:37 /root/openldap.org
OpenLDAPの管理用ユーザーのパスワードをslappasswd
を使って生成する。
# slappasswd
New password:
Re-enter new password:
{SSHA}7B1EpVxClcKpBwnlqG73YtB7IrUXhTLM
設定ファイルを以下の通り追記・変更を行う。include
ではOpenLDAPで必要となるスキーマを追加している。olcSuffix
やolcRootDN
はOpenLDAPのドメインに変更を行う。olcRootPW
は先ほど生成したパスワードを指定する。
# vi /etc/openldap/slapd.ldif
~(中略)~
include: file:///etc/openldap/schema/core.ldif
include: file:///etc/openldap/schema/cosine.ldif #<-★追記
include: file:///etc/openldap/schema/inetorgperson.ldif #<-★追記
include: file:///etc/openldap/schema/nis.ldif #<-★追記
~(中略)~
dn: olcDatabase=mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: mdb
olcDbMaxSize: 1073741824
olcSuffix: dc=example,dc=com #<-★変更
olcRootDN: cn=Manager,dc=example,dc=com #<-★変更
# Cleartext passwords, especially for the rootdn, should
# be avoided. See slappasswd(8) and slapd-config(5) for details.
# Use of strong authentication encouraged.
olcRootPW: {SSHA}7B1EpVxClcKpBwnlqG73YtB7IrUXhTLM #<-★変更
~(以下略)~
設定ファイルの前後でdiff
した結果は以下の通り。
# diff /etc/openldap/slapd.ldif{,.default}
44,46d43
< include: file:///etc/openldap/schema/cosine.ldif
< include: file:///etc/openldap/schema/inetorgperson.ldif
< include: file:///etc/openldap/schema/nis.ldif
87,88c84,85
< olcSuffix: dc=example,dc=com
< olcRootDN: cn=Manager,dc=example,dc=com
---
> olcSuffix: dc=my-domain,dc=com
> olcRootDN: cn=Manager,dc=my-domain,dc=com
92c89
< olcRootPW: {SSHA}7B1EpVxClcKpBwnlqG73YtB7IrUXhTLM
---
> olcRootPW: secret
OpenLDAPのデータ格納に必要となるディレクトリを作成する。
# mkdir /usr/var/openldap-data
# mkdir /etc/openldap/slapd.d
slapadd
コマンドで設定反映を行う。
# /usr/sbin/slapadd -v -n 0 -F /etc/openldap/slapd.d -l /etc/openldap/slapd.ldif
added: "cn=config" (00000001)
added: "cn=schema,cn=config" (00000001)
added: "cn={0}core,cn=schema,cn=config" (00000001)
added: "cn={1}cosine,cn=schema,cn=config" (00000001)
added: "cn={2}inetorgperson,cn=schema,cn=config" (00000001)
added: "cn={3}nis,cn=schema,cn=config" (00000001)
added: "olcDatabase={-1}frontend,cn=config" (00000001)
added: "olcDatabase={1}mdb,cn=config" (00000001)
added: "olcDatabase={2}monitor,cn=config" (00000001)
Closing DB...
2. OpenLDAP起動確認
まずは手動でOpenLDAPを起動し、正常に起動することを確認する。
# /usr/libexec/slapd -F /etc/openldap/slapd.d -h 'ldapi:/// ldap:/// ldaps:///'
起動後に、ldapsearch
で問題なく情報の参照ができるか確認する。
# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts
#
#
dn:
namingContexts: dc=example,dc=com ←★設定したドメインが表示されることを確認
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
確認後、一度OpenLDAPを停止しておく。
# ps -ef | grep slapd | grep -v grep
root 69944 1 0 08:29 ? 00:00:00 /usr/libexec/slapd -F /etc/openldap/slapd.d -h ldapi:/// ldap:/// ldaps:///
# pkill slapd
# ps -ef | grep slapd | grep -v grep
#
3. systemdへ登録
RHELの場合、systemdでサービスの起動・停止を制御できた方が便利となる。以下の通り、systemdにOpenLDAPのサービスを登録するための設定ファイルを作成する。
# cat << 'EOF' > /etc/systemd/system/slapd.service
[Unit]
Description=OpenLDAP server
After=syslog.target network.target
[Service]
Type=forking
User=root
Group=root
PIDFile=/usr/var/run/slapd.pid
ExecStart=/usr/libexec/slapd -F /etc/openldap/slapd.d -h 'ldapi:/// ldap:/// ldaps:///'
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
[Install]
WantedBy=multi-user.target
EOF
上記ファイルを作成後、systemctl
コマンドで起動停止が問題なくできることを確認しておく。
# systemctl daemon-reload
# systemctl start slapd
# systemctl enable slapd
# systemctl status slapd
● slapd.service - OpenLDAP server
Loaded: loaded (/etc/systemd/system/slapd.service; enabled; preset: disabled)
Active: active (running) since Sat 2023-10-14 08:43:52 JST; 8s ago
Main PID: 70011 (slapd)
Tasks: 2 (limit: 23166)
Memory: 5.0M
CPU: 8ms
CGroup: /system.slice/slapd.service
mq70011 /usr/libexec/slapd -F /etc/openldap/slapd.d -h "ldapi:/// ldap:/// ldaps:///"
10月 14 08:43:52 t1191rhel systemd[1]: Starting OpenLDAP server...
10月 14 08:43:52 t1191rhel slapd[70010]: @(#) $OpenLDAP: slapd 2.5.16 (Oct 14 2023 07:29:29) $
root@t1191rhel:/root/openldap-2.5.16/servers/slapd
10月 14 08:43:52 t1191rhel slapd[70011]: slapd starting
10月 14 08:43:52 t1191rhel systemd[1]: Started OpenLDAP server.
# systemctl stop slapd
# systemctl status slapd
○ slapd.service - OpenLDAP server
Loaded: loaded (/etc/systemd/system/slapd.service; enabled; preset: disabled)
Active: inactive (dead) since Sat 2023-10-14 18:28:23 JST; 1s ago
Duration: 9h 44min 31.510s
Process: 70408 ExecStop=/bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
Main PID: 70011 (code=exited, status=0/SUCCESS)
CPU: 14ms
10月 14 08:44:24 t1191rhel slapd[70011]: conn=1001 op=3 ADD dn="cn=ldapgrp,ou=group,dc=example,dc=com"
10月 14 08:44:24 t1191rhel slapd[70011]: conn=1001 op=3 RESULT tag=105 err=0 qtime=0.000010 etime=0.000472 text=
10月 14 08:44:24 t1191rhel slapd[70011]: conn=1001 op=4 UNBIND
10月 14 08:44:24 t1191rhel slapd[70011]: conn=1001 fd=13 closed
10月 14 18:28:23 t1191rhel systemd[1]: Stopping OpenLDAP server...
10月 14 18:28:23 t1191rhel slapd[70011]: daemon: shutdown requested and initiated.
10月 14 18:28:23 t1191rhel slapd[70011]: slapd shutdown: waiting for 0 operations/tasks to finish
10月 14 18:28:23 t1191rhel slapd[70011]: slapd stopped.
10月 14 18:28:23 t1191rhel systemd[1]: slapd.service: Deactivated successfully.
10月 14 18:28:23 t1191rhel systemd[1]: Stopped OpenLDAP server.
起動・停止が問題なくできることが確認できたら、OpenLDAPは起動させておこう。
# systemctl start slapd
4. ユーザー登録確認
ここからは実際にOpenLDAPにグループやユーザーの登録を行ってみよう。
まずは、ドメイン、OU、グループの登録を行うためのLDIFファイルを作成する。
# cat << EOF > base.ldif
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: example
o: Example Inc.
dn: ou=group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group
dn: cn=ldapgrp,ou=group,dc=example,dc=com
objectClass: posixGroup
gidNumber: 10000
cn: ldapgrp
EOF
ldapadd
コマンドで登録を行う。パスワードは初期設定時に生成したパスワードとなる。
# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f base.ldif
Enter LDAP Password:
adding new entry "dc=example,dc=com"
adding new entry "ou=group,dc=example,dc=com"
adding new entry "cn=ldapgrp,ou=group,dc=example,dc=com"
次にユーザー登録を行う。以下の通りLDIFファイルを作成する。
# cat << EOF > user.ldif
dn: uid=user01,ou=group,dc=example,dc=com
uid: user01
cn: Hoge Hoge
sn: user01
objectClass: posixAccount
objectClass: inetOrgPerson
userPassword: {SSHA}7B1EpVxClcKpBwnlqG73YtB7IrUXhTLM
loginShell: /bin/bash
uidNumber: 10001
gidNumber: 10000
homeDirectory: /home/user01
dn: uid=user02,ou=group,dc=example,dc=com
uid: user02
cn: Hoge Hoge
sn: user02
objectClass: posixAccount
objectClass: inetOrgPerson
userPassword: {SSHA}7B1EpVxClcKpBwnlqG73YtB7IrUXhTLM
loginShell: /bin/bash
uidNumber: 10002
gidNumber: 10000
homeDirectory: /home/user02
EOF
ldapadd
コマンドで登録を行う。
# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f user.ldif
Enter LDAP Password:
adding new entry "uid=user01,ou=group,dc=example,dc=com"
adding new entry "uid=user02,ou=group,dc=example,dc=com"
最後に、ldapsearch
コマンドで登録状況を確認して完了となる。
# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'dc=example,dc=com'
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: example
o: Example Inc.
dn: ou=group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group
dn: cn=ldapgrp,ou=group,dc=example,dc=com
objectClass: posixGroup
gidNumber: 10000
cn: ldapgrp
dn: uid=user01,ou=group,dc=example,dc=com
uid: user01
cn: Hoge Hoge
sn: user01
objectClass: posixAccount
objectClass: inetOrgPerson
userPassword:: e1NTSEF9WFhY772eKOecgeeVpSnvvZ5YWFg=
loginShell: /bin/bash
uidNumber: 10001
gidNumber: 10000
homeDirectory: /home/user01
dn: uid=user02,ou=group,dc=example,dc=com
uid: user02
cn: Hoge Hoge
sn: user02
objectClass: posixAccount
objectClass: inetOrgPerson
userPassword:: e1NTSEF9WFhY772eKOecgeeVpSnvvZ5YWFg=
loginShell: /bin/bash
uidNumber: 10002
gidNumber: 10000
homeDirectory: /home/user02
以上で、RHEL 9にOpenLDAPをソースからインストールする手順は完了となる。
0 件のコメント:
コメントを投稿