開発運用

UbuntuでOpenLDAPを設定

OpenLDAPを使用してUbuntuサーバーにネットワーク認証システムを構築することは、企業や団体でのユーザー管理を効率化するために非常に重要です。この記事では、OpenLDAPをUbuntuにインストールして設定し、基本的なユーザー認証システムを構築する方法について詳しく説明します。

1. OpenLDAPとは?

OpenLDAPは、軽量ディレクトリアクセスプロトコル(LDAP)を基にしたオープンソースのディレクトリサービスです。LDAPは、ネットワーク内でユーザーやリソース情報を格納・検索するためのプロトコルであり、OpenLDAPはその実装の一つです。LDAPは、認証や許可を一元管理するために多くの組織で使用されています。

2. 必要なパッケージのインストール

まず最初に、OpenLDAPをUbuntuにインストールするために必要なパッケージをインストールします。以下のコマンドを実行して、必要なパッケージをインストールします。

bash
sudo apt update sudo apt install slapd ldap-utils
  • slapdはOpenLDAPサーバーのデーモンで、LDAPリクエストを処理します。
  • ldap-utilsは、LDAPサーバーと対話するために使用するクライアントツールのセットです。

インストールが完了したら、サーバーの設定を行います。

3. 初期設定の実行

インストール後、slapdパッケージの初期設定を行います。以下のコマンドを実行します。

bash
sudo dpkg-reconfigure slapd

このコマンドを実行すると、いくつかの設定を確認するプロンプトが表示されます。主な設定項目は以下の通りです。

  • DNSドメイン名: サーバーに使用するドメイン名を入力します。
  • 組織名: LDAPディレクトリに関連する組織の名前を入力します。
  • 管理者のパスワード: LDAPの管理者(root)のパスワードを設定します。

設定が完了すると、slapdサービスが起動し、LDAPサーバーが利用可能になります。

4. ディレクトリ構造の理解

LDAPディレクトリは階層構造を持っており、エントリは「dn(Distinguished Name)」によって一意に識別されます。基本的なLDAPディレクトリの構造は次のようになります。

bash
dc=example,dc=com ├── ou=users ├── ou=groups └── cn=admin
  • dc=example,dc=comはドメイン名(例: example.com)を表します。
  • ou=usersはユーザー情報を格納するための組織単位(Organizational Unit)です。
  • ou=groupsはグループ情報を格納するための組織単位です。
  • cn=adminはLDAP管理者の情報です。

5. 基本的なLDAPデータの操作

LDAPサーバーをセットアップしたら、次に基本的なデータ操作を行います。まず、LDAPにデータを追加する方法を見ていきます。

5.1 LDIFファイルの作成

LDAPデータを追加するには、LDIF(LDAP Data Interchange Format)ファイルを使用します。以下のような形式で、ユーザーやグループの情報を記述します。

例: users.ldif

ldif
dn: uid=john,ou=users,dc=example,dc=com objectClass: inetOrgPerson uid: john cn: John Doe sn: Doe userPassword: password123

このLDIFファイルを使用して、LDAPサーバーにデータを追加します。

5.2 データの追加

LDIFファイルを作成したら、ldapaddコマンドを使用してデータを追加します。

bash
sudo ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f users.ldif
  • -Dオプションで管理者のDNを指定します。
  • -Wオプションでパスワードを入力するように求められます。
  • -fオプションでLDIFファイルを指定します。

データが正常に追加されると、ユーザーがLDAPサーバーに登録されます。

6. ユーザーの検索

LDAPに追加したユーザーを検索するには、ldapsearchコマンドを使用します。

bash
ldapsearch -x -b "dc=example,dc=com" "(uid=john)"

このコマンドは、uid=johnに一致するエントリを検索し、結果を表示します。

7. グループの管理

LDAPでは、ユーザーをグループに追加してアクセス制御を行うことができます。グループ情報もLDIFファイルで管理します。

例: groups.ldif

ldif
dn: cn=admins,ou=groups,dc=example,dc=com objectClass: posixGroup cn: admins gidNumber: 1001 memberUid: john

このLDIFファイルを使用して、ldapaddコマンドでグループを追加します。

bash
sudo ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f groups.ldif

8. LDAPサーバーのセキュリティ設定

LDAPサーバーは機密情報を扱うため、セキュリティ設定を行うことが重要です。特に、パスワードの暗号化やSSL/TLSによる通信の暗号化が推奨されます。

8.1 パスワードの暗号化

LDAPで使用するパスワードは、平文ではなくハッシュ化して保存することが一般的です。以下のように、slapd.conf設定ファイルでハッシュ方式を設定します。

bash
password-hash {SSHA}

これにより、パスワードがSSHAでハッシュ化され、データベースに保存されます。

8.2 SSL/TLSの設定

SSL/TLSを使用して通信を暗号化するためには、証明書の設定が必要です。以下のコマンドを使用して、証明書を設定できます。

bash
sudo apt install ldap-utils sudo certbot --standalone -d example.com

これで、LDAPサーバーとクライアント間の通信が暗号化され、セキュリティが強化されます。

9. クライアント側の設定

LDAPクライアントを設定することで、ネットワーク上の他のマシンでもLDAP認証を使用することができます。UbuntuクライアントにLDAPを設定するために、以下のパッケージをインストールします。

bash
sudo apt install libnss-ldap libpam-ldap nscd

その後、/etc/nsswitch.confファイルを編集して、LDAPを使用したユーザー認証を設定します。

bash
passwd: compat ldap group: compat ldap shadow: compat ldap

これで、クライアントマシンでもLDAPサーバーを利用した認証が可能になります。

10. まとめ

OpenLDAPをUbuntuにインストールし、ユーザーとグループを管理する方法について解説しました。LDAPは、企業や団体での一元的な認証管理に非常に有効なツールです。設定後は、セキュリティを強化するための措置(SSL/TLS暗号化やパスワードのハッシュ化など)を施し、クライアント側での設定を行うことで、ネットワーク全体でLDAPを利用した認証が可能になります。

Back to top button