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


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

LDAP 情報モデルはエントリに基づいています。 LDAPディレクトリのエントリは1つの単位または情報を表し、いわゆる識別名 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ディレクトリのadminエントリのパスワードを入力し、安全なパスワードを設定して確認するように求められます。

インストールが完了したら、次に説明するようにサービスを開始できます。

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サーバの設定

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: indicates a specific database instance name and can be typically found inside /etc/openldap/slapd.d/cn=config.
  • cn=config: indicates global config options.
  • PASSWORD: is the hashed string obtained while creating the administrative user.

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

$ 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 

以下の内容を追加します(exampleをあなたのドメインに、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

上記の設定では、 gidNumber tecmint /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. How to Configure LDAP Client to Connect External Authentication

詳細については、OpenLDAPソフトウェアのドキュメントカタログから適切なドキュメントを参照してください。UbuntuユーザーはOpenLDAPサーバーガイドを参照することができます。

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