LDAPサーバにphpLDAPadminをインストールして疎通確認する

2014.12.02

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

はじめに

こんにちは、虎塚です。

今日は、phpLDAPadminのインストール手順と、CentOS 6にインストールしたLDAPへの疎通確認の方法を紹介します。先日の記事「OpenLDAPをCentOS6にインストールしてLDAP Adminで疎通確認する | Developers.IO」の応用編ですね。

前回は、WindowsアプリケーションのLDAP Adminで疎通確認をしました。今回は、phpLDAPadminからLDAPサーバの中身を確認します。phpLDAPadminを利用すると、WebアプリケーションのGUIを利用してLDAPにオブジェクト(グループやユーザ)を追加、削除できます。

インストール先は、LDAPサーバです。以降の手順の前提として、前回の記事の「疎通確認」にある「OpenLDAP側でのデータ投入」までを実施済みであることとします。

phpLDAPadminのインストール

LDAPサーバにSSH接続して、phpLDAPadminをインストールしましょう。

EPELリポジトリの追加

まず、次のコマンドを実行してみます。

yum install phpldapadmin

しかし、パッケージが見つからないと表示されるかもしれません。その場合、EPEL(Extra Packages for Enterprise Linux)を利用します。EPELでは様々なFedoraのパッケージが、互換ディストリビューションで利用することを目的に管理されています。

# ls /etc/yum.repos.d/
CentOS-Base.repo       CentOS-Media.repo  CentOS-fasttrack.repo
CentOS-Debuginfo.repo  CentOS-Vault.repo

# yum install -y epel-release

# ls /etc/yum.repos.d/
CentOS-Base.repo       CentOS-Media.repo  CentOS-fasttrack.repo  epel.repo
CentOS-Debuginfo.repo  CentOS-Vault.repo  epel-testing.repo

これでphpLDAPadminのパッケージを取得できるようになりました。ただし、EPELのドキュメントには、リポジトリを混在させると問題が出やすいとされています。

yum-plugin-prioritiesのインストールと設定

そこで、この問題を避けるために、yum-plugin-prioritiesを導入します。

# yum install -y yum-plugin-priorities

priorities.confにenabled=1の記述があることを確認しておきます。

# cat /etc/yum/pluginconf.d/priorities.conf

[main]
enabled = 1

あとは、各リポジトリ用の設定ファイルにpriority=Nの形式で優先度を指定します。Nは1〜99の整数です。数字が小さいほど優先度が高くなります。

たとえば、次のように記述します。

/etc/yum.repos.d/CentOS-Base.repo

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

baseリポジトリやupdateリポジトリには1を、サードパーティのリポジトリには10より大きな値を設定することが推奨されています。この設定をすると、指定したパッケージがbaseリポジトリにない時にだけ、EPELへ探しにいってくれます。

phpLDAPadminのインストール

phpLDAPadminをインストールします。

# yum install phpldapadmin
# (略)
================================================================================
 パッケージ         アーキテクチャ
                                バージョン                   リポジトリー  容量
================================================================================
インストールしています:
 phpldapadmin       noarch      1.2.3-1.el6                  epel         806 k
依存性関連でのインストールをします。:
# (略)

phpLDAPadminの本体と設定ファイルは、デフォルトでそれぞれ次の場所にインストールされます。

# ls /usr/share/phpldapadmin
VERSION  config  hooks  htdocs  index.php  lib  locale  queries  templates

# ls /etc/phpldapadmin/
config.php

各種設定

phpLDAPadminの設定

phpLDAPadminの設定ファイルを編集します。

# cp /etc/phpldapadmin/config.php /etc/phpldapadmin/config.php.orig
# vi  /etc/phpldapadmin/config.php

# cp /etc/phpldapadmin/config.php /etc/phpldapadmin/config.php.orig # vi /etc/phpldapadmin/config.php

変更前

/etc/phpldapadmin/config.php

//(略)
// $servers->setValue('login','attr','dn');
$servers->setValue('login','attr','uid');
//(略)

変更後

/etc/phpldapadmin/config.php

//(略)
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');
//(略)

Apache HTTPサーバの設定

LDAPサーバ内のWebサーバで、設定ファイルを編集します。

/etc/httpd/conf.d/phpldapadmin.conf

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 <PUBLIC_IP>
  Allow from ::1
</Directory>

上のには、LDAPサーバへのアクセス元IPアドレスを記述します。学校や会社などから接続する場合は、サーバ管理者に固定IPアドレスを確認します。個人での疎通確認なら、curl ifconfig.meなどで調べて記述します。

メインの設定ファイルで、上のファイルを読み込んでいることを確認しておきます。次の記述があればOKです。

/etc/httpd/conf/httpd.conf

Include conf.d/*.conf

上の記述があればOKです。

EC2セキュリティグループの変更

ブラウザからWebアプリケーション(phpLDAPadmin)にアクセスするため、LDAPサーバのEC2インスタンスに付与したセキュリティグループで、HTTPの80番を許可します。

今回は検証目的なので省略しますが、LDAPサーバですので、アクセス元のIPアドレスは絞っておいた方がよいでしょう。

phpLDAPadminを使った疎通確認

Webサーバを開始します。

# /etc/rc.d/init.d/httpd start

ローカルマシンのブラウザから、http://<LDAPサーバのIPアドレス>/ldapadmin/にアクセスします。

ログイン画面が表示されます。[ログイン]リンクをクリックします。

phpLDAPadminの初期画面

slapd.cnofの記述内容で疎通確認を行います。(slapd.confはデフォルトのまま使用しています。前回の記事を参照ください)

phpLDAPadminのログイン画面

  • User Name: cn=Manager,dc=my-domain,dc=com
  • パスワード: secret

上のように入力して、[Authenticate]ボタンをクリックします。

ホーム画面が表示されます。ログイン名の先頭にあるアイコンをクリックします。

phpLDAPadminにログインした直後の画面

右の画面が切り替わり、エントリの複製や子項目の作成のメニューが表示されました。

phpLDAPadminの項目編集画面

無事に疎通を確認できました。

参考資料

おわりに

LDAPサーバにphpLDAPadminを入れて、インターネット環境からブラウザで接続しました。こういったツールを利用すれば、ディレクトリ管理をWebアプリケーションから行えるので便利ですね。

それでは、また。