オンプレ型メールサーバの構築 ・・・ ②LDAP構築

シェアする

今回、メールシステムを構築するにあたって、アカウント管理のベースはLDAPを利用します。LDAPを利用する背景は、他のシステムとの接続性がいいということと、認証処理にあたってのレスポンスの良さといえます。

LDAPパッケージのインストール

LDAPのパッケージとして、以下rpmをインストールします。

  • openldap-clients-2.4.44-5.el7.x86_64
  • openldap-devel-2.4.44-5.el7.x86_64
  • openldap-2.4.44-5.el7.x86_64
  • openldap-servers-2.4.44-5.el7.x86_64

yumコマンドでサクッっとインストールします。

slapd.conf

デフォルトでは、ldifファイルでLDAPの設定パラメータを設定らしいですが、私は正直ldifで定義する方法は苦手なので簡単なslapd.confを利用する方法とします。

slapd.confを定義した後、sysconfig 以下のファイルを修正にて、slapd.confを利用し起動できます。

# vi /etc/openldap/slapd.conf
loglevel 256

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/misc.schema
include         /etc/openldap/schema/sendmail.schema

allow bind_v2

pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args

access to dn.children="ou=Managers,dc=admin,dc=local" attrs=entry by * read
access to dn.children="ou=Managers,dc=admin,dc=local" attrs=userPassword by * auth
access to dn.children="ou=Managers,dc=admin,dc=local" by * =s

access to attrs=userPassword
        by self =wsx
        by * auth

access to *
        by * read

#######################################################################
# ldbm and/or bdb database definitions
#######################################################################

database        bdb
suffix          ""
rootdn          "uid=admin,ou=Managers,dc=admin,dc=local"
rootpw          {SSHA}CybVw6BeDasKSmQGEwoZOG4k7TsGjKWc

directory       /var/lib/ldap

# Indices to maintain for this database
index objectClass               eq,pres
index cn                        eq,pres,sub
index mail                      eq,pres,sub
index surname                   eq,pres,sub
index gidNumber                 eq,pres
index uidNumber                 eq,pres
index uid                       eq,pres,sub
index mailLocaladdress          eq,pres
index mailRoutingAddress        eq,pres
index sendmailMTACluster        eq,pres
index sendmailMTAHost           eq,pres
index sendmailMTAMapName        eq,pres
index sendmailMTAKey            eq,pres

sendmailにて利用するため、/etc/openldap/schema/sendmail.schema を追加しています。このsendmail.schemaは、sendmail-cf-8.14.7-5.el7.noarch のパッケージをインストールすれば、作成されますので、シンボリックリンクにて貼ります。

# cd /etc/openldap/schema
# ln -s /usr/share/sendmail-cf/sendmail.schema

(うん、sendmail.schema はLDAPのログを再度確認したけど、検索条件に出てこないから、いらないようですね。ただ、sendmailのvirtuserをLDAPで利用する場合は、こんな感じでschemaを呼びださないとダメだったはずです。)

設定値の説明

 loglevel 256 ログレベル256は、LDAPに対する検索文や、LDAP bind時の結果が出力されます。実際構築時の微調整やトラブル時の調査に必要なので、私は256を推奨します。8の倍数でログレベルが変わる
(参考:@IT
 include *.schema LDAPのスキーマ情報の読み込み
 allow bind_v2 LDAP version 2のリクエストに応答させることができるようになります。参照する製品によっては、v2クエリがあるため、必要に応じて設定
 pidfile pid ファイルの保存場所
 argsfile slapd起動時のコマンドラインオプションが保存されます。/etc/sysconfig/slapd で記載できるので、特に不要
 access to  LDAPへのアクセス権限。設定値は管理者はフルアクセスで、userPasswordに関しては、認証ユーザのみアクセスが許可として簡単に定義
 database バックエンドデータベースの形式を定義します。bdb(Berkeley DB形式)を用いるのが一般的ですが,ldbmなどその他の形式を用いることが可能
 suffix データツリーのベース部分でいいかと。設定値は指定なし
 rootdn 管理者ID
 rootpw 管理者IDのパスワード。設定方法は次項にて説明
 directory LDAPのデータを保存するディレクトリ
 index LDAPデータのIndexの定義。利用用途の検索条件に合わせて定義することが望ましい。
eq: 一致
sub: 部分一致
pres: 存在

rootpwに設定するパスワード

rootpwに設定するパスワードは、slappasswd にて出力します。

# slappasswd -h '{SSHA}' -s password
{SSHA}TR8kmlS1BsgVOMazPZhIcLXzlqDcIiL6

対応する暗号化方式は以下の通り。

CRYPT
MD5
SMD5
SHA
SSHA

起動コンフィグに、slapd.conf を利用

通常は、ldifファイルが利用され起動します。ただ、以下方法にて slapd.conf を利用し起動させることが可能となります。

# vi /etc/sysconfig/slapd
# Any custom options
SLAPD_OPTIONS="-f /etc/openldap/slapd.conf"

起動前のコンフィグチェック

起動前にコンフィグの正当性を確認します。

# slaptest -f /etc/openldap/slapd.conf
5ab52042 bdb_monitor_db_open: monitoring disabled; configure monitor database to enable
config file testing succeeded

「monitoring disabled; configure monitor database to enable」と表示されますが、monitor 機能を利用する気はないので、出ても無視です。
それ以外は、「config file testing succeeded」と出ているので問題ないでしょう。

もし、誤っていると

# slaptest -f /etc/openldap/slapd.conf
5ab520bf could not stat config file "/etc/openldap/schema/msendmail.schema": No such file or directory (2)
slaptest: bad configuration file!

と、「bad configuration file!」と表示されます。

IP bindの調整

ネットワーク経由でアクセスがないなら、以下を設定しインターネットへの公開を停止します。

# vi /etc/sysconfig/slapd
#SLAPD_URLS="ldapi:/// ldap:///"
SLAPD_URLS="ldapi:/// ldap://127.0.0.1/"

ネットワークに公開するなら、iptablesを利用しアクセスを極力制限したほうがよいですね。

起動

さて、起動します。

# systemctl enable slapd
# systemctl start slapd

確認

起動したか確認します。

# ps -ef | grep slapd
ldap      3219     1  0 Mar22 ?        00:00:02 /usr/sbin/slapd -u ldap -h ldapi:/// ldap://127.0.0.1/ -f /etc/openldap/slapd.conf
root     10941 10516  0 00:52 pts/0    00:00:00 grep --color=auto slapd
# netstat -tnlp | grep 389
tcp        0      0 127.0.0.1:389           0.0.0.0:*               LISTEN      3219/slapd

プロセスも起動し、想定通り127.0.0.1 で IPbindされ起動してます。
後は、ログを確認しますが、openldapはデフォルトでlocal4に出力されます。よって、rsyslogでlocal4をファイル出力設定すれば、起動が確認できます。

これで、データツリーのtopのみで起動しています。

ツリーの登録

起動したので、ツリーを登録していきます。topから管理者登録までのldifを作成し登録です。

dn: dc=local
dc: local
objectClass: top
objectClass: domain

dn: dc=admin,dc=local
dc: admin
objectClass: top
objectClass: domain

dn: ou=Managers,dc=admin,dc=local
ou: Managers
objectClass: top
objectClass: organizationalUnit

dn: uid=admin,ou=Managers,dc=admin,dc=local
userPassword:: XXXXXXXX
uid: admin
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
sn: Site Administrator
cn: Site Administrator

上記を、top.ldif として保存して登録します。

# ldapadd -x -D "uid=admin,ou=Managers,dc=admin,dc=local" -W top.ldif

-W だと、パスワードが求められますので、slappaswd にて設定したパスワードを入力します。

これで、登録完了です。
あとは、アカウントとなる情報を登録です。それらはシステムの設計にて登録するデータ情報や、ツリーが異なるので設計に合わせて登録してください。
※別の記事にて、このメールシステムに関しての情報はまとめようかと思います。

ツールの紹介

LDAPEditorは、いろいろとあるかと思いますが、私はJavaを利用する以下ツールがお勧めです。多機能ではないですが必要と思われる機能はすべて有しています。

昔、どっかの大学で学術用途で公開されていたのを、UTF8とかの修正しリリースされたようです。
(その大学での公開は、もう終わっています)

ではでは。


GUTE-URLS

Wordpress is loading infos from netiq

Please wait for API server guteurls.de to collect data from
www.netiq.com/communities/co...

トップへ戻る