OpenLDAPをCentOS6にインストールしてLDAP Adminで疎通確認する
はじめに
こんにちは、虎塚です。
唐突ですが、今日は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
このファイルには、後で使う情報が記載されていますので、次の行を確認しておきます。
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行を追加します。
uri ldap://localhost sudoers_base dc=my-domain,dc=com
iptables
LDAPサーバが待ち受けるポートを開けておきます。次の1行を、REJECTの設定よりも上方に記述します。
-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ファイルを作成します。ファイルの名前は何でもよいです。重要なのは書式です。
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
それでは、また。