序章

LDAP 、またはライトウェイトディレクトリアクセスプロトコルは、一元化された階層的なファイルおよびディレクトリ構造で関連情報を管理およびアクセスするために設計されたプロトコルです。

いくつかの点で、リレーショナルデータベースと同様に動作しますが、これはすべてに当てはまるわけではありません。 階層構造は、データの関連性の主な違いです。 あらゆる種類の情報を保存するために使用でき、集中認証システムの1つのコンポーネントとしてよく使用されます。

このガイドでは、Ubuntu14.04サーバーにOpenLDAPサーバーをインストールして構成する方法について説明します。 次に、phpLDAPadminインターフェースをインストールして保護し、簡単なWebインターフェースを提供します。

LDAPおよびヘルパーユーティリティをインストールする

始める前に、必要なソフトウェアをインストールする必要があります。 幸いなことに、パッケージはすべてUbuntuのデフォルトのリポジトリで利用できます。

このセッションでaptを使用するのはこれが初めてなので、ローカルパッケージインデックスを更新します。 その後、必要なパッケージをインストールできます。

sudo apt-get update
sudo apt-get install slapd ldap-utils

インストール中に、LDAPの管理者パスワードを選択して確認するように求められます。 すぐに変更できるので、実際には何でもここに置くことができます。

slapdを再構成して、より適切な設定を選択します

パッケージがインストールされたばかりですが、先に進み、Ubuntuがインストールされるデフォルトを再構成します。

この理由は、パッケージには多くの重要な構成に関する質問をする機能がありますが、これらはインストールプロセスでスキップされるためです。 ただし、システムにパッケージを再構成するように指示することで、すべてのプロンプトにアクセスできます。

sudo dpkg-reconfigure slapd

このプロセスを実行するときに尋ねられる新しい質問がかなりあります。 今、これらを調べてみましょう:

  • OpenLDAPサーバー構成を省略しますか? いいえ
  • DNSドメイン名? このオプションは、ディレクトリパスの基本構造を決定します。 メッセージを読んで、これがどのように実装されるかを正確に理解してください。 これは実際にはかなりオープンなオプションです。 実際のドメインを所有していない場合でも、任意の「ドメイン名」の値を選択できます。 ただし、サーバーのドメイン名がある場合は、それを使用することをお勧めします。 このガイドでは、構成にtest.comを選択します。
  • 組織名? 繰り返しになりますが、これはほぼ完全にあなたの好み次第です。 このガイドでは、組織の名前として例を使用します。
  • 管理者パスワード? インストールのセクションで述べたように、これは管理者パスワードを選択する実際の機会です。 ここで選択したものはすべて、以前に使用したパスワードを上書きします。
  • データベースバックエンド? HDB
  • slapdがパージされたときにデータベースを削除しますか? いいえ
  • 古いデータベースを移動しますか? はい
  • LDAPv2プロトコルを許可しますか? いいえ

この時点で、LDAPはかなり合理的な方法で構成する必要があります。

phpLDAPadminをインストールして、WebインターフェイスでLDAPを管理します

コマンドラインからLDAPを管理することは非常に可能ですが、ほとんどのユーザーはWebインターフェイスを使用する方が簡単です。 この機能を提供するphpLDAPadminをインストールして、LDAPツールの学習の摩擦を取り除くのに役立てます。

UbuntuリポジトリにはphpLDAPadminパッケージが含まれています。 次のように入力してインストールできます。

sudo apt-get install phpldapadmin

これにより、管理インターフェイスがインストールされ、必要なApache仮想ホストファイルが有効になり、Apacheがリロードされます。

これで、Webサーバーがアプリケーションにサービスを提供するように構成されましたが、いくつかの追加の変更を行います。 LDAP用に構成したドメインスキーマを使用するようにphpLDAPadminを構成する必要があります。また、構成を少し保護するためにいくつかの調整を行います。

phpLDAPadminを設定する

パッケージがインストールされたので、OpenLDAP構成段階で作成されたLDAPディレクトリ構造に接続できるようにいくつかの構成を行う必要があります。

テキストエディタでroot権限でメイン設定ファイルを開くことから始めます。

sudo nano /etc/phpldapadmin/config.php

このファイルには、LDAPサーバー用に設定した構成の詳細を追加する必要があります。 まず、ホストパラメータを探し、サーバーのドメイン名またはパブリックIPアドレスに設定します。 このパラメーターは、Webインターフェースへのアクセスを計画している方法を反映している必要があります。

$ servers-> setValue('server'、'host'、' server_domain_name_or_IP ');

次に、LDAPサーバー用に選択したドメイン名を構成する必要があります。 この例では、test.comを選択したことを思い出してください。 各ドメインコンポーネント(ドット以外のすべて)をdc仕様の値に置き換えることにより、これをLDAP構文に変換する必要があります。

つまり、test.comと書く代わりに、dc=test,dc=comのようなものを書くということです。 サーバーの基本パラメーターを設定するパラメーターを見つけ、先ほど説明した形式を使用して、決定したドメインを参照する必要があります。

$ servers-> setValue('server'、'base'、array('dc = test 、dc = com '));

loginbind_idパラメーターでこれと同じことを調整する必要があります。 cnパラメータはすでに「admin」として設定されています。 正解です。 上記と同じように、dcの部分を再度調整する必要があります。

$ servers-> setValue('login'、'bind_id'、'cn = admin、dc = test 、dc = com ');

最後に調整する必要があるのは、警告メッセージの表示を制御する設定です。 デフォルトでは、phpLDAPadminは、機能に影響を与えないテンプレートファイルについて、Webインターフェイスにかなりの数の迷惑な警告メッセージをスローします。

hide_template_warningパラメータを検索し、それを含む行のコメントを解除して、「true」に設定することで、これらを非表示にできます。

$ config-> custom->appearance ['hide_template_warning'] = true ;

これは、調整する必要がある最後のことです。 終了したら、ファイルを保存して閉じることができます。

SSL証明書を作成する

LDAPサーバーへの接続をSSLで保護して、外部の関係者が通信を傍受できないようにする必要があります。

管理インターフェースはローカルネットワーク上のLDAPサーバー自体と通信しているため、その接続にSSLを使用する必要はありません。 接続するときは、ブラウザへの外部接続を保護する必要があります。

これを行うには、サーバーが使用できる自己署名SSL証明書を設定する必要があります。 これはサーバーのIDを検証するのに役立ちませんが、メッセージを暗号化することはできます。

OpenSSLパッケージは、デフォルトでシステムにインストールされている必要があります。 まず、証明書とキーを保持するディレクトリを作成する必要があります。

sudo mkdir /etc/apache2/ssl

次に、次のように入力して、キーと証明書を1回の移動で作成できます。

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

ユーティリティが証明書のフィールドに正しく入力するには、いくつかの質問に答える必要があります。 本当に重要なのは、Common Name (e.g. server FQDN or YOUR name)というプロンプトだけです。 サーバーのドメイン名またはIPアドレスを入力します。

完了すると、証明書とキーが/etc/apache2/sslディレクトリに書き込まれます。

パスワード認証ファイルを作成する

また、phpLDAPadminの場所をパスワードで保護したいと考えています。 phpLDAPadminにはパスワード認証がありますが、これによりさらに高いレベルの保護が提供されます。

必要なユーティリティは、Apacheユーティリティパッケージに含まれています。 次のように入力して取得します。

sudo apt-get install apache2-utils

ユーティリティを使用できるようになったので、選択したユーザー名と関連するハッシュパスワードを含むパスワードファイルを作成できます。

これは/etc/apache2ディレクトリに保管します。 ファイルを作成し、次のように入力して使用するユーザー名を指定します。

sudo htpasswd -c / etc / apache2 / htpasswd demo_user

これで、セキュリティのアップグレードを利用するためにApacheを変更する準備が整いました。

安全なApache

最初にすべきことは、ApacheでSSLモジュールを有効にすることです。 これを行うには、次のように入力します。

sudo a2enmod ssl

これにより、モジュールが有効になり、使用できるようになります。 ただし、これを利用するには、Apacheを構成する必要があります。

現在、Apacheは、暗号化されていない通常のHTTP接続用に000-default.confというファイルを読み取っています。 接続が暗号化されるように、phpLDAPadminインターフェースのリクエストをHTTPSインターフェースにリダイレクトするように指示する必要があります。

SSL証明書を使用するようにトラフィックをリダイレクトする場合、ユーザーを認証するためのパスワードファイルも実装します。 変更を加えている間、標的型攻撃を最小限に抑えるためにphpLDAPadminインターフェース自体の場所も変更します。

phpLDAPadminApache設定を変更します

最初に行うことは、phpLDAPadminファイルを提供するように設定されているエイリアスを変更することです。

テキストエディタでroot権限でファイルを開きます。

sudo nano /etc/phpldapadmin/apache.conf

これは、インターフェイスにアクセスするURLの場所を決定する必要がある場所です。 デフォルトは/phpldapadminですが、これを変更して、ボットや悪意のあるパーティによるランダムなログイン試行を削減したいと考えています。

このガイドでは、場所/superldapを使用しますが、独自の値を選択する必要があります。

Aliasを指定する行を変更する必要があります。 これはIfModule mod_alias.cブロックにある必要があります。 終了すると、次のようになります。

エイリアス/superldap / usr / share / phpldapadmin / htdocs

終了したら、安全にファイルを閉じます。

HTTP仮想ホストを構成します

次に、現在の仮想ホストファイルを変更する必要があります。 エディターでroot権限で開きます。

sudo nano /etc/apache2/sites-enabled/000-default.conf

内部には、次のようなかなり裸の構成ファイルが表示されます。

 ServerAdminウェブマスター @localhost  DocumentRoot / var / www / html ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog ${APACHE_LOG_DIR}/access.log結合

ドメイン名またはIPアドレスに関する情報を追加してサーバー名を定義し、すべてのHTTPリクエストがHTTPSインターフェースを指すようにリダイレクトを設定します。 これは、前のセクションで構成したエイリアスと一致します。

話し合った変更は、最終的には次のようになります。 独自の値で赤の項目を変更します。

ServerAdmin webmaster @ server_domain_or_IP DocumentRoot / var / www / htmlServerNameserver_domain_or_IPリダイレクトパーマネント/superldaphttps:// server_domain_or_IP / superldap ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog ${APACHE_LOG_DIR}/access.log結合

終了したら、ファイルを保存して閉じます。

HTTPS仮想ホストファイルを構成する

Apacheには、デフォルトのSSL仮想ホストファイルが含まれています。 ただし、デフォルトでは有効になっていません。

次のように入力して有効にできます。

sudo a2ensite default-ssl.conf

これにより、ファイルがsites-availableディレクトリからsites-enabledディレクトリにリンクされます。 次のように入力して、このファイルを編集できます。

sudo nano /etc/apache2/sites-enabled/default-ssl.conf

このファイルは前のファイルよりも少し複雑なので、必要な変更についてのみ説明します。 以下のすべての変更は、ファイルの仮想ホストブロック内に配置する必要があります。

まず、ServerNameの値をサーバーのドメイン名またはIPアドレスに再度設定し、ServerAdminディレクティブも変更します。

ServerAdmin webmaster @ server_domain_or_IP ServerName server_domain_or_IP

次に、作成したキーと証明書を指すようにSSL証明書ディレクティブを設定する必要があります。 ディレクティブはファイルにすでに存在しているはずなので、ディレクティブが指すファイルを変更するだけです。

SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key

最後に行う必要があるのは、phpLDAPadminインストール全体のパスワード保護を実装するロケーションブロックを設定することです。

これを行うには、phpLDAPadminを提供している場所を参照し、生成したファイルを使用して認証を設定します。 このコンテンツにアクセスしようとする人は誰でも、有効なユーザーとして認証する必要があります。

AuthTypeBasicAuthName 「制限付きファイル」 AuthUserFile/etc / apache2/htpasswd有効なユーザーが必要

終了したら、ファイルを保存して閉じます。

Apacheを再起動して、行ったすべての変更を実装します。

sudo service apache2 restart

これで、実際のインターフェースに進むことができます。

phpLDAPadminWebインターフェイスにログインします

phpLDAPadminソフトウェアに必要な構成変更を加えました。 これで使用を開始できます。

サーバーのドメイン名またはパブリックIPアドレスに続いて、構成したエイリアスにアクセスすることで、Webインターフェイスにアクセスできます。 私たちの場合、これは/superldapでした。

http:// server_domain_name_or_IP / superldap

初めてアクセスすると、サイトのSSL証明書に関する警告が表示される可能性があります。

phpLDAPadmin SSL warning

警告は、ブラウザが証明書に署名した認証局を認識していないことを通知するためのものです。 own 証明書に署名したので、これは予期されたものであり、問題ではありません。

「続行」ボタンまたはブラウザに表示される同様のオプションをクリックします。

次に、Apache用に構成したパスワードプロンプトが表示されます。

phpLDAPadmin password prompt

htpasswdコマンドで作成したアカウントのクレデンシャルを入力します。 メインのphpLDAPadminランディングページが表示されます。

phpLDAPadmin landing page

ページの左側にある「ログイン」リンクをクリックします。

phpLDAPadmin login page

ログインプロンプトが表示されます。 ログイン「DN」は、使用するユーザー名のようなものです。 これには、「cn」の下のアカウント名と、上記で説明したように「dc」セクションに分割されたサーバー用に選択したドメイン名が含まれています。

phpLDAPadminを正しく設定した場合は、adminアカウントの正しい値が事前に入力されている必要があります。 私たちの場合、これは次のようになります。

cn=admin,dc=test,dc=com

パスワードには、LDAP構成時に構成した管理者パスワードを入力します。

メインインターフェイスに移動します。

phpLDAPadmin main page

組織単位、グループ、およびユーザーを追加する

この時点で、phpLDAPadminインターフェースにログインしています。 ユーザー、組織単位、グループ、および関係を追加することができます。

LDAPは、データとディレクトリの階層をどのように構成するかについて柔軟性があります。 基本的に、任意の種類の構造を作成し、それらがどのように相互作用するかについてのルールを作成できます。

このプロセスはUbuntu14.04でもUbuntu12.04と同じであるため、Ubuntu 12.04LDAPインストール記事の「組織単位、グループ、およびユーザーの追加」セクションに記載されている手順に従うことができます。 。

このインストールの手順はまったく同じです。そのため、インターフェイスの操作方法を練習し、ユニットの構成方法を学習してください。

結論

これで、Ubuntu14.04サーバーにOpenLDAPがインストールおよび構成されているはずです。 また、phpLDAPadminプログラムを介して構造を管理するためのWebインターフェイスをインストールおよび構成しました。 アプリケーション全体をSSLとパスワードで保護することにより、アプリケーションの基本的なセキュリティを構成しました。

私たちが設定したシステムは非常に柔軟性があり、必要に応じて独自の組織スキーマを設計し、リソースのグループを管理できるはずです。 次のガイドでは、システム認証にこのLDAPサーバーを使用するようにネットワークマシンを構成する方法について説明します。

ジャスティン・エリングウッド