OpenLDAPをCentOS6にインストールしてLDAP Adminで疎通確認する

2014.11.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、虎塚です。

唐突ですが、今日はAWS上のCentOS6にOpenLDAPをインストールして、LDAP Adminから疎通確認をする手順を説明します。(追記)phpLDAPadminを利用した疎通確認の手順は、LDAPサーバにphpLDAPadminをインストールして疎通確認する | Developers.IOをご参照ください。

OpenLDAPは、LDAPのオープンソース実装です。ドヤ顔した青虫のロゴがキュートですね。LDAP Adminは、Windows環境で利用できるLDAPブラウザ/エディタです。

CentOS6の起動

CentOS6の公式AMIは、AWS Marketplaceから選択できます。Management ConsoleからCentOSのAMIを探すと、たくさん出てきてどれを使えばよいのか迷ってしまいますね。ここは公式版を使いましょう。

CentOS Wikiの「Images」という項目で、AMIイメージへのリンクを確認します。

今回は、CentOS-6 x86_64のHVMタイプを使いますので、次のページに進みます。

AWSの規約と利用許諾契約に同意するなら、利用できます。ここで、AMIの番号(今回はami-13614b12)を控えておきます。

1

AWS Management Consoleへ移動し、コミュニティAMIを先ほどの番号で検索すると、目当てのAMIが出てきます。検証用のVPC内で、EC2として起動しましょう。

このとき、セキュリティグループの設定で、SSH用の22番と、LDAP(非SSL)用の389番を開けておきます。

OpenLDAPのインストール

OpenLDAPのダウンロード

起動したEC2にSSHでログインします。CentOSは、Amazon Linuxとは違って、デフォルトユーザがrootですので、コマンドは次のようになります。

ssh -i /PATH/TO/KEY-PAIR.pem root@<Public-IP>

ログインしたら、まずyum updateしておきましょう。

# yum -y update

次に、OpenLDAPの取得に備えて、wgetをインストールします。

# yum -y wget

それから、OpenLDAPをダウンロードします。最新版のリンクは、公式サイトで確認します。

今回は、2.4.40をダウンロードしました。

# wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.40.tgz

最後に、取得したファイルを展開しておきます。

# mkdir openldap #フォルダ名は何でもOKです。
# mv openldap-2.4.40.tgz openldap/
# cd openldap/
# gunzip -c openldap-2.4.40.tgz | tar xvfB -
# cd openldap-2.4.40

OpenLDAPのビルド

まず、ビルドに必要なツールをインストールします。

# yum -y install gcc

次に、BarkeleyDBをインストールします。これがないとconfigureで失敗します。

# yum install db4*

それから、configureからmakeまでを行います。それぞれ少し時間がかかります。

# ./configure
# make depend
# make

もし途中でエラーが出たら、出力を確認してください。何かライブラリが足りないのかもしれません。たとえば、前述のBarkeleyDBをインストールしていないと、次のようなエラーが出ます。

configure: error: BDB/HDB: BerkeleyDB not available

その後、必須ではありませんが、make testを実行します。環境によってはすべてのテストをパスするのに数十分かかります。

# make test

問題が出なければ、インストールします。

# make install

今回はrootのまま作業しているので上記のコマンドですが、一般ユーザとして作業している場合、次のようにコマンドを実行する必要があります。

# su root -c 'make install'

OpenLDAPの設定

重要なファイルは、slapd.confldap.confiptablesです。

slapd.conf

このファイルには、後で使う情報が記載されていますので、次の行を確認しておきます。

/usr/local/etc/openldap/slapd.conf

suffix		"dc=my-domain,dc=com"
rootdn		"cn=Manager,dc=my-domain,dc=com"
# (略)
rootpw		secret

今回は疎通確認ですので、上記のデフォルト値をそのまま利用します。

ldap.conf

CentOS6では、sudoのldap.confのパスが/etc/sudo-ldap.confになっています。そのため、ldap.confではなくsudo-ldap.confを編集する必要があります。次の2行を追加します。

/etc/sudo-ldap.conf

uri ldap://localhost
sudoers_base dc=my-domain,dc=com

iptables

LDAPサーバが待ち受けるポートを開けておきます。次の1行を、REJECTの設定よりも上方に記述します。

/etc/sysconfig/iptables

-A INPUT -p tcp --dport 389 -j ACCEPT

EC2のSecurityGroupで389番を開けるだけではダメで、この設定が必要です。記述したら、設定を反映しておきます。

# iptables --flush

OpenLDAPの起動

設定が完了したら、OpenLDAPを起動します。

# /usr/local/libexec/slapd

LDAPサーバが、389番のポートでリスンできています。

# ps -ef | grep slapd
root     29230     1  0 17:05 ?        00:00:00 /usr/local/libexec/slapd
root     29233 29202  0 17:05 pts/0    00:00:00 grep slapd
# netstat -anp | grep slapd
tcp        0      0 0.0.0.0:389                 0.0.0.0:*                   LISTEN      29230/slapd
tcp        0      0 :::389                      :::*                        LISTEN      29230/slapd
unix  2      [ ]         DGRAM                    93311  29230/slapd

なお、OpenLDAPを終了するには、PIDを調べてkillします。

# ps -ef | grep slapd
root     29230     1  0 17:05 ?        00:00:00 /usr/local/libexec/slapd
root     29233 29202  0 17:05 pts/0    00:00:00 grep slapd
# kill -INT 29230

あとで疎通確認をするので、ここでは立ち上げたままにしておきます。

LDAP Adminのインストール

LDAP Adminは、ダウンロードして展開するだけで利用できます。

AWS環境でWindows Serverを適当に起動します。次のページから最新版のzipファイルをダウンロードします。

今回は、LdapAdminExe-1.6.zipを使用しました。任意のディレクトリに置いて、ファイルを展開しておきます。

疎通確認

OpenLDAP側でのデータ投入

LDAPに最低限のデータを入れるために、LDIFファイルを作成します。ファイルの名前は何でもよいです。重要なのは書式です。

sample.ldif

dn: dc=my-domain,dc=com
objectClass: dcObject
objectClass: organization
dc: my-domain
o: my-domain

次のコマンドでデータを追加します。

# ldapadd -x -D "cn=Manager,dc=my-domain,dc=com" -W -f sample.ldif

追加できたことを確認しておきます。

# ldapsearch -x -b 'dc=my-domain,dc=com' '(objectclass=*)'
# extended LDIF
#
# LDAPv3
# base <dc=my-domain,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# my-domain.com
dn: dc=my-domain,dc=com
objectClass: dcObject
objectClass: organization
dc:: bXktZG9tYWluIA==
o: my-domain

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

LDAP Admin側での接続テスト

インストールしたLDAP Adminをダブルクリックして起動し、接続設定を行います。

[Start]→[Connect]から[New Connection]アイコンをダブルクリックします。

2

  • Connection name: 何でもよいです。ここではLDAPサーバのPublic IPアドレスにしました
  • Host: LDAPサーバのPublic IPアドレスを入力します
  • Port: 389番を入力します
  • Base: dc=my-domain,dc=comを入力します
  • Annoymous connection: チェックを外します
  • Username: cn=Manager,dc=my-domain,dc=comを入力します
  • Password: secretを入力します

入力が完了したら、[Test connection]ボタンを押します。ここで「Connection is successful.」とメッセージが表示されればOKです。

[OK]ボタンを押して設定を保存します。作成された設定をダブルクリックすると、LDAPサーバに接続できます。

3

LDAPサーバにsample.ldifを使って追加した内容を、LDAP Admin上で見ることができました。

おわりに

というわけで、OpenLDAPのビルドとインストール、疎通確認までを行いました。

ちなみに、LDAP Adminには、PHP版のphpLDAPadminというツールもあります。わかりやすいLDAPブラウザを使いたい時には、こちらも良いかもしれません。(追記)phpLDAPadminを利用した疎通確認の手順を書きました。LDAPサーバにphpLDAPadminをインストールして疎通確認する | Developers.IO

注意事項

今回は手順の検証が目的だったので、セキュリティを維持するための設定作業を省略しました。そもそもrootログインを避ける(禁止する)ことをはじめとして、実際に使う際には他にも設定が必要です。お気をつけください。

参考資料

それでは、また。