OpenLDAPを使用してUbuntuサーバーにネットワーク認証システムを構築することは、企業や団体でのユーザー管理を効率化するために非常に重要です。この記事では、OpenLDAPをUbuntuにインストールして設定し、基本的なユーザー認証システムを構築する方法について詳しく説明します。
1. OpenLDAPとは?
OpenLDAPは、軽量ディレクトリアクセスプロトコル(LDAP)を基にしたオープンソースのディレクトリサービスです。LDAPは、ネットワーク内でユーザーやリソース情報を格納・検索するためのプロトコルであり、OpenLDAPはその実装の一つです。LDAPは、認証や許可を一元管理するために多くの組織で使用されています。
2. 必要なパッケージのインストール
まず最初に、OpenLDAPをUbuntuにインストールするために必要なパッケージをインストールします。以下のコマンドを実行して、必要なパッケージをインストールします。
bashsudo apt update sudo apt install slapd ldap-utils
slapd
はOpenLDAPサーバーのデーモンで、LDAPリクエストを処理します。ldap-utils
は、LDAPサーバーと対話するために使用するクライアントツールのセットです。
インストールが完了したら、サーバーの設定を行います。
3. 初期設定の実行
インストール後、slapd
パッケージの初期設定を行います。以下のコマンドを実行します。
bashsudo dpkg-reconfigure slapd
このコマンドを実行すると、いくつかの設定を確認するプロンプトが表示されます。主な設定項目は以下の通りです。
- DNSドメイン名: サーバーに使用するドメイン名を入力します。
- 組織名: LDAPディレクトリに関連する組織の名前を入力します。
- 管理者のパスワード: LDAPの管理者(root)のパスワードを設定します。
設定が完了すると、slapd
サービスが起動し、LDAPサーバーが利用可能になります。
4. ディレクトリ構造の理解
LDAPディレクトリは階層構造を持っており、エントリは「dn(Distinguished Name)」によって一意に識別されます。基本的なLDAPディレクトリの構造は次のようになります。
bashdc=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
ldifdn: 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
コマンドを使用してデータを追加します。
bashsudo ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f users.ldif
-D
オプションで管理者のDNを指定します。-W
オプションでパスワードを入力するように求められます。-f
オプションでLDIFファイルを指定します。
データが正常に追加されると、ユーザーがLDAPサーバーに登録されます。
6. ユーザーの検索
LDAPに追加したユーザーを検索するには、ldapsearch
コマンドを使用します。
bashldapsearch -x -b "dc=example,dc=com" "(uid=john)"
このコマンドは、uid=john
に一致するエントリを検索し、結果を表示します。
7. グループの管理
LDAPでは、ユーザーをグループに追加してアクセス制御を行うことができます。グループ情報もLDIFファイルで管理します。
例: groups.ldif
ldifdn: cn=admins,ou=groups,dc=example,dc=com objectClass: posixGroup cn: admins gidNumber: 1001 memberUid: john
このLDIFファイルを使用して、ldapadd
コマンドでグループを追加します。
bashsudo ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f groups.ldif
8. LDAPサーバーのセキュリティ設定
LDAPサーバーは機密情報を扱うため、セキュリティ設定を行うことが重要です。特に、パスワードの暗号化やSSL/TLSによる通信の暗号化が推奨されます。
8.1 パスワードの暗号化
LDAPで使用するパスワードは、平文ではなくハッシュ化して保存することが一般的です。以下のように、slapd.conf
設定ファイルでハッシュ方式を設定します。
bashpassword-hash {SSHA}
これにより、パスワードがSSHAでハッシュ化され、データベースに保存されます。
8.2 SSL/TLSの設定
SSL/TLSを使用して通信を暗号化するためには、証明書の設定が必要です。以下のコマンドを使用して、証明書を設定できます。
bashsudo apt install ldap-utils sudo certbot --standalone -d example.com
これで、LDAPサーバーとクライアント間の通信が暗号化され、セキュリティが強化されます。
9. クライアント側の設定
LDAPクライアントを設定することで、ネットワーク上の他のマシンでもLDAP認証を使用することができます。UbuntuクライアントにLDAPを設定するために、以下のパッケージをインストールします。
bashsudo apt install libnss-ldap libpam-ldap nscd
その後、/etc/nsswitch.conf
ファイルを編集して、LDAPを使用したユーザー認証を設定します。
bashpasswd: compat ldap group: compat ldap shadow: compat ldap
これで、クライアントマシンでもLDAPサーバーを利用した認証が可能になります。
10. まとめ
OpenLDAPをUbuntuにインストールし、ユーザーとグループを管理する方法について解説しました。LDAPは、企業や団体での一元的な認証管理に非常に有効なツールです。設定後は、セキュリティを強化するための措置(SSL/TLS暗号化やパスワードのハッシュ化など)を施し、クライアント側での設定を行うことで、ネットワーク全体でLDAPを利用した認証が可能になります。