ウェブサイト検索

集中認証用に OpenLDAP サーバーをインストールする方法


軽量ディレクトリ アクセス プロトコル (略してLDAP) は、ディレクトリ サービスにアクセスするための業界標準の軽量で広く使用されているプロトコルのセットです。ディレクトリ サービスは、ユーザー、グループ、デバイス、電子メール アドレス、電話番号、ボリューム、その他多くのオブジェクトなどの日常的なアイテムやネットワーク リソースにアクセス、管理、整理、更新するための共有情報インフラストラクチャです。

LDAP 情報モデルはエントリに基づいています。 LDAP ディレクトリ内のエントリは単一のユニットまたは情報を表し、 いわゆる識別名 (DN) によって一意に識別されます。エントリの各属性には、タイプと 1 つ以上の値があります。

属性は、エントリに関連付けられた情報です。タイプは通常、一般名を表す「cn」や電子メール アドレスを表す「mail」などのニーモニック文字列です。各属性には、スペースで区切られたリストで構成される 1 つ以上の値が割り当てられます。

以下は、LDAP ディレクトリ内で情報がどのように配置されるかを示しています。

この記事では、Ubuntu 16.04/18.04 およびCentOS 7 で集中認証用に OpenLDAP サーバーをインストールして構成する方法を説明します。

ステップ 1: LDAP サーバーのインストール

1. まず、次のコマンドを使用して、LDAP のオープン ソース実装である OpenLDAP と従来の LDAP 管理ユーティリティをインストールします。

yum install openldap openldap-servers	    #CentOS 7
sudo apt install slapd ldap-utils	    #Ubuntu 16.04/18.04

Ubuntu では、パッケージのインストール中に、LDAP ディレクトリの管理エントリのパスワードを入力し、安全なパスワードを設定して確認するように求められます。

インストールが完了したら、次の説明に従ってサービスを開始できます。

2. CentOS 7 で、次のコマンドを実行して openldap サーバー デーモンを起動し、起動時の自動起動を有効にして、起動して実行中です (Ubuntu では、サービスは systemd で自動開始されるはずです。ステータスを確認するだけです)。

sudo systemctl start slapd
sudo systemctl enable slapd
sudo systemctl status slapd

3. 次に、図に示すように、ファイアウォールを通過する LDAP サーバー デーモンへのリクエストを許可します。

firewall-cmd --add-service=ldap    #CentOS 7
sudo ufw allow ldap                #Ubuntu 16.04/18.04

ステップ 2: LDAP サーバーの構成

: LDAP 設定を手動で編集することはお勧めできません。設定をファイルに追加し、ldapadd または <以下に示すように、strong>ldapmodify コマンドを使用して、それらを LDAP ディレクトリにロードします。

4. 次に、OpenLDAP 管理ユーザーを作成し、そのユーザーにパスワードを割り当てます。以下のコマンドでは、指定されたパスワードのハッシュ値が作成されます。これをメモし、LDAP 構成ファイルで使用します。

slappasswd

5. 次に、LDAP ディレクトリにエントリを追加するために使用される LDIF ファイル (ldaprootpasswd.ldif) を作成します。

sudo vim ldaprootpasswd.ldif

そこに次の内容を追加します。

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD_CREATED

上記の属性と値のペアについて説明します。

  • olcDatabase: 特定のデータベース インスタンス名を示し、通常は /etc/openldap/slapd.d/cn=config 内にあります。
  • cn=config: グローバル設定オプションを示します。
  • パスワード: 管理ユーザーの作成時に取得したハッシュ化された文字列です。

6. 次に、LDAP サーバーと上記のファイルを参照する URI を指定して、対応する LDAP エントリを追加します。

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldaprootpasswd.ldif  

ステップ 3: LDAP データベースの構成

7. 次に、slapd のサンプル データベース構成ファイルを /var/lib/ldap ディレクトリにコピーし、ファイルに正しい権限を設定します。 。

sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
sudo chown -R ldap:ldap /var/lib/ldap/DB_CONFIG
sudo systemctl restart slapd

8. 次に、次のように、いくつかの基本的な LDAP スキーマを /etc/openldap/schema ディレクトリからインポートします。

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif 
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

9. 次に、ドメインを LDAP データベースに追加し、ドメインの ldapdomain.ldif というファイルを作成します。

sudo vim ldapdomain.ldif 

次のコンテンツを追加します (例をドメインに置き換え、PASSWORD を前に取得したハッシュ値に置き換えます)。

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=example,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=example,dc=com" write by * read

10. 次に、次のコマンドを使用して、上記の設定を LDAP データベースに追加します。

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldapdomain.ldif

11. このステップでは、LDAP ディレクトリにいくつかのエントリを追加する必要があります。次の内容を含む baseldapdomain.ldif という名前の別のファイルを作成します。

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: example com
dc: example

dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group 

ファイルを保存し、エントリを LDAP ディレクトリに追加します。

sudo ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f baseldapdomain.ldif

12. 次のステップでは、tecmint という LDAP ユーザーを作成し、このユーザーのパスワードを次のように設定します。

sudo useradd tecmint
sudo passwd tecmint

13. 次に、次の内容で ldapgroup.ldif というファイルに LDAP グループの定義を作成します。

dn: cn=Manager,ou=Group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1005

上記の構成では、gidNumbertecmint/etc/group 内の GID であり、それを OpenLDAP に追加します。ディレクトリ。

sudo ldapadd -Y EXTERNAL -x  -W -D "cn=Manager,dc=example,dc=com" -f ldapgroup.ldif

14. 次に、ldapuser.ldif という名前の別の LDIF ファイルを作成し、ユーザー tecmint の定義を追加します。

dn: uid=tecmint,ou=People,dc=example,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tecmint
uid: tecmint
uidNumber: 1005
gidNumber: 1005
homeDirectory: /home/tecmint
userPassword: {SSHA}PASSWORD_HERE
loginShell: /bin/bash
gecos: tecmint
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

次に、構成を LDAP ディレクトリにロードします。

ldapadd -Y EXTERNAL  -x -D cn=Manager,dc=example,dc=com -W -f  ldapuser.ldif

認証用に中央サーバーをセットアップしたら、最後の部分は、このガイドで説明されているように、クライアントが LDAP を使用して認証できるようにすることです。

  1. 外部認証に接続するように LDAP クライアントを構成する方法

詳細については、OpenLDAP ソフトウェア ドキュメント カタログから該当するドキュメントを参照してください。Ubuntu ユーザーは OpenLDAP サーバー ガイドを参照してください。

まとめ

OpenLDAP は、Linux における LDAP のオープンソース実装です。この記事では、Ubuntu 16.04/18.04 および CentOS 7 で集中認証用に OpenLDAP サーバーをインストールして構成する方法を説明しました。共有したい質問や考えがある場合は、以下のコメント フォームからお気軽にお問い合わせください。