この記事は公開されてから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)を控えておきます。
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.conf、ldap.conf、iptablesです。
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]アイコンをダブルクリックします。
- 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サーバに接続できます。
LDAPサーバにsample.ldifを使って追加した内容を、LDAP Admin上で見ることができました。
おわりに
というわけで、OpenLDAPのビルドとインストール、疎通確認までを行いました。
ちなみに、LDAP Adminには、PHP版のphpLDAPadminというツールもあります。わかりやすいLDAPブラウザを使いたい時には、こちらも良いかもしれません。(追記)phpLDAPadminを利用した疎通確認の手順を書きました。LDAPサーバにphpLDAPadminをインストールして疎通確認する | Developers.IO
注意事項
今回は手順の検証が目的だったので、セキュリティを維持するための設定作業を省略しました。そもそもrootログインを避ける(禁止する)ことをはじめとして、実際に使う際には他にも設定が必要です。お気をつけください。
参考資料
- OpenLDAP Software 2.4 Administrator's Guide: A Quick-Start Guide
- 太田俊哉,中満英生,堀田倫,菊池研自:『システム管理社のためのLDAP徹底理解』,ソフトバンククリエイティブ,2009,6.
- Setting up OpenLDAP on CentOS 6
それでは、また。