LoginSignup
0
1

More than 1 year has passed since last update.

自宅サーバー構築譚:LDAPサーバー OpenLDAP・インストールとログ出力

Last updated at Posted at 2023-03-15

能書き

自宅サーバー構築譚:基本構想に基づく自宅サーバー構築、Ubuntu22.04LTSインストールその2の続きです。

CentOS方面の話ですが、現在、OpenLDAPは非推奨になっているようです。

参考文献:9.2. OPENLDAP - 9. LDAP サーバー - II. ID と認証ストア - システムレベルの認証ガイド - Product Documentation for Red Hat Enterprise Linux 7

代わりに 389 Directory Server (通称 389-ds)というソフトが標準となるようです。理由は明示されてませんが、OpenLDAPは重いからじゃないかという意見も。調査によっては動作が4倍以上遅いとかいう数字も見かけました。

しかし Ubuntu 20.04 の頃の話ですが、 389-ds をインストールしようとすると依存パッケージが山程出てきてちょっと不気味。良く見ると Apache まで入ってるように見えました。見間違いでしょうか?しかしこれで使う気が失せました。

それにしても LDAP という規格は参考文献が少なくて苦労しました。ネットで幾ら調べても、ごく大雑把な概念説明と、こうやったら上手くいきましたというノウハウしか出てこなくて。その間を埋める知識がわかりません。仕方が無いので本を買いました。それも2007年の本、新品ではなくて古本屋での購入です。関係者の皆様スミマセン。

どうやら LDAP は、エンタープライズでの利用が一般的なせいかあんまり記事がありませんな。誰か中級者向け記事を書いてください(切実)

本記事もノウハウ寄りになります。理論は参考書を購入して勉強して下さい。古~い規格なので、十数年前の古~い参考書も現役で役に立ちます。

と言う訳で Ubuntu に OpenLDAP をインストールします。以前も試みましたが、今回は Ubuntu 22.04 です。ログ出力も追加したので、新しく記事を起こす事にしました。

目標

LDAPを良く分かっていないので、一気に作業を進めるのは危険と判断しました。関連する作業内容を下記4つに分割し、1つずつ進めていきます。

  1. LDAPインストール。そしてログを rsyslog に出力する設定。
  2. LDAP over TLS を設定。そしてサーバーマシンとは別のクライアントマシンから ldaps アクセス。
  3. クライアントマシンに sssd をインストールしてログイン。LDAP でのアカウント管理を実現。
  4. SSH の公開鍵接続。公開鍵の LDAP 管理を実現。クライアントマシンから SSH 接続。

今回は 1. LDAP インストールとログ出力設定 を実施します。

参考文献

基本的なインストールと設定

ログ出力設定

ログの読み方

LDAP 一般論

インストール

root 化

今回も殆どの作業が root になるので、最初に root になっておきます。

sudo -i

スナップショット

スナップショットだいじ。超だいじ。

zfs snapshot tank/ROOT/ubuntu@$(date +%Y%m%d_%H%M%S)_before_OpenLDAP_rsyslog
zfs snapshot tank/ROOT/ubuntu/var/lib/apt@$(date +%Y%m%d_%H%M%S)_before_OpenLDAP_rsyslog
zfs snapshot tank/ROOT/ubuntu/var/lib/dpkg@$(date +%Y%m%d_%H%M%S)_before_OpenLDAP_rsyslog

インストール

apt install -y slapd ldap-utils

インストール中に LDAP 管理者のパスワードを求められました。管理者パスワードなので root 並にしっかりした物にしましょう。

┌─────────────────────────┤ Configuring slapd ├─────────────────────────┐
│ Please enter the password for the admin entry in your LDAP directory. │
│                                                                       │
│ Administrator password:                                               │
│                                                                       │
│ _____________________________________________________________________ │
│                                                                       │
│                                 <Ok>                                  │                                                                       │
└───────────────────────────────────────────────────────────────────────┘

同じパスワードをもう一回入力します。

┌─────────────────────────────────────┤ Configuring slapd ├────────────────────────────────────────────┐
│ Please enter the password for your LDAP directory again to verify that you hanve typed it correctly. │
│                                                                                                      │
│ Confirm password:                                                                                    │
│                                                                                                      │
│ ____________________________________________________________________________________________________ │
│                                                                                                      │
│                                             <Ok>                                                     │                                                                                                      │
└──────────────────────────────────────────────────────────────────────────────────────────────────────┘

これで最後までインストールが完了します。

インストール直後の /etc をバージョン管理します。まずは確認。

svn st /etc

こう表示されました。

# svn st /etc
?       /etc/apparmor.d/local/usr.sbin.slapd
?       /etc/apparmor.d/usr.sbin.slapd
?       /etc/default/slapd
M       /etc/group
M       /etc/gshadow
?       /etc/init.d/slapd
M       /etc/ld.so.cache
?       /etc/ldap/sasl2
?       /etc/ldap/schema
?       /etc/ldap/slapd.d
M       /etc/passwd
?       /etc/perl
?       /etc/rc0.d/K01slapd
?       /etc/rc1.d/K01slapd
?       /etc/rc2.d/S01slapd
?       /etc/rc3.d/S01slapd
?       /etc/rc4.d/S01slapd
?       /etc/rc5.d/S01slapd
?       /etc/rc6.d/K01slapd
M       /etc/shadow
?       /etc/ufw/applications.d/slapd

svn commitします。

svn st /etc | grep "^?" | cut -b9- | xargs -I{} find {} -type f -or -type d -or -type l | xargs -t svn add
svn ci /etc -m"installed OpenLDAP"

それから DIT サフィックス(dc)を設定します。インストール直後に設定されているのは nodomain ですので、Unbound を立てた時に決めた家庭内ドメインへと変更します。我が家の場合は home ですな。

また、同時に組織単位(ou)も登録します。というかこのコマンドを実行すると組織単位の設定も要求されます。
下記の参考文献に則って、ここでは infra を作成します。

参考文献:LDAPディレクトリの構成、ACLについて - CentOS7でOpenldap構築 - 1.Openldapの仕組み - Qiita

dpkg-reconfigure slapd

設定できたらsvn commitしましょう。

svn st /etc
svn ci /etc -m"OpenLDAP initial setting"

ファイルディスクリプタ上限値の設定

家庭向け小規模システムなので、このチューニングは実施しません。メインの参考文献にも書かれていませんし。
関連する参考文献の提示だけにしておきます。

参考文献:ファイルディスクリプタ上限値の設定 - LDAPサーバ構築 - CentOS7でOpenldap構築 - 2.LDAPサーバ構築手順
参考文献:Linux ファイル・ディスクリプタ制限のチューニング - Oji-Cloud
参考文献:5.4 運用時に必要なシステム資源(Linux) - 第5章 チューニング - Interstage HTTP Server 2.2 運用ガイド

ログ設定

*.ldifファイルは/opt/ldapに置く事にします。そう決めました!

mkdir /opt/ldap
cd /opt/ldap

logging.ldif ファイルを作成。

cat >logging.ldif <<___
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
___

変更を実装します。

ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f logging.ldif

rsyslog を設定します。

cat >/etc/rsyslog.d/90-ldap.conf <<___
local4.*  /var/log/ldap.log
___
systemctl restart rsyslog
systemctl status rsyslog

logrotate を設定します。

cat >/etc/logrotate.d/ldap <<___
/var/log/ldap.log {
  rotate 4
  weekly
  missingok
  compress
  notifempty
}
___

ログファイルを用意します。

cd /var/log
touch ldap.log
chown syslog:adm ldap.log

ここまでで root ユーザーによる作業は終わりです。

exit

動作確認

私は誰でしょう。

ldapwhoami -x

この結果は anonymous と表示されます。匿名ユーザーです。

$ ldapwhoami -x
anonymous

ログを確認してみます。

cat /var/log/ldap.log

確認結果は下記のようになりました。

$ cat ldap.log
Mar 15 20:48:01 secondary slapd[116254]: conn=1003 fd=12 ACCEPT from IP=[::1]:59236 (IP=[::]:389)
Mar 15 20:48:01 secondary slapd[116254]: conn=1003 op=0 BIND dn="" method=128
Mar 15 20:48:01 secondary slapd[116254]: conn=1003 op=0 RESULT tag=97 err=0 qtime=0.000024 etime=0.000083 text=
Mar 15 20:48:01 secondary slapd[116254]: conn=1003 op=1 EXT oid=1.3.6.1.4.1.4203.1.11.3
Mar 15 20:48:01 secondary slapd[116254]: conn=1003 op=1 WHOAMI
Mar 15 20:48:01 secondary slapd[116254]: conn=1003 op=1 RESULT oid= err=0 qtime=0.000010 etime=0.000069 text=
Mar 15 20:48:01 secondary slapd[116254]: conn=1003 op=2 UNBIND
Mar 15 20:48:01 secondary slapd[116254]: conn=1003 fd=12 closed

意味する所は何となくわかるようなわからないような、モヤモヤする感じですが。取り敢えず何かは出力されるようです。
量が多いですけども。

この匿名ユーザがアクセス可能な範囲で、home ドメインに登録されている情報を表示してみます。

ldapsearch -x -LLL -H ldapi:/// -b dc=home

実行結果は下記のようになります。

$ ldapsearch -x -LLL -H ldapi:/// -b dc=home
dn: dc=home
objectClass: top
objectClass: dcObject
objectClass: organization
o: infra
dc: home

ログの様子は下記のようになりました。

$ tail -n7 ldap.log
Mar 15 20:55:55 secondary slapd[116254]: conn=1004 fd=12 ACCEPT from PATH=/var/run/slapd/ldapi (PATH=/var/run/slapd/ldapi)
Mar 15 20:55:55 secondary slapd[116254]: conn=1004 op=0 BIND dn="" method=128
Mar 15 20:55:55 secondary slapd[116254]: conn=1004 op=0 RESULT tag=97 err=0 qtime=0.000023 etime=0.000067 text=
Mar 15 20:55:55 secondary slapd[116254]: conn=1004 op=1 SRCH base="dc=home" scope=2 deref=0 filter="(objectClass=*)"
Mar 15 20:55:55 secondary slapd[116254]: conn=1004 op=1 SEARCH RESULT tag=101 err=0 qtime=0.000022 etime=0.001015 nentries=1 text=
Mar 15 20:55:55 secondary slapd[116254]: conn=1004 op=2 UNBIND
Mar 15 20:55:55 secondary slapd[116254]: conn=1004 fd=12 closed

仕舞い

例によって/etcの変更をバージョン管理しましょう。

sudo -i
svn st /etc | grep "^?" | cut -b9- | xargs -I{} find {} -type f -or -type d -or -type l | xargs -t svn add
svn ci /etc -m"ldap log settings"
exit

作業は以上です。

まずは ldap をインストールして、ログを記録させる事に成功しました。きちんとしたドメイン管理へ第一歩です。やったね:thumbsup_tone1:

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1