この記事では、いくつかのLDAPの基本事項(何か、どこで使用されているか、なぜ使用されるか)を概説し、LDAPサーバーの設定方法と、Red Hat Enterprise Linux 7システムを使用してそれに対して認証するクライアントの構成方法を示します。

見ていくように、他にもいくつかの可能なアプリケーションシナリオがありますが、このガイドではLDAPベースの認証に完全に焦点を当てます。さらに、この主題の広大さを考慮して、ここでは基本的な内容のみをカバーしますが、より詳細な詳細については、概要に記載されているドキュメントを参照できます。
同じ理由から、簡潔さのためにLDAPツールのmanページへのいくつかの参照を省略することに決めましたが、対応する説明は指先の届く距離にあります(例:man ldapadd)。
と言っても、始めましょう。
私たちのテスト環境
私たちのテスト環境は2つのRHEL 7ボックスで構成されています:
Server: 192.168.0.18. FQDN: rhel7.mydomain.com Client: 192.168.0.20. FQDN: ldapclient.mydomain.com
もし望むなら、Kickstartを使用してPart 12: Automate RHEL 7 installationsにインストールされたマシンをクライアントとして使用できます。
LDAPとは何ですか?
LDAPはLightweight Directory Access Protocolの略であり、クライアントがネットワークを介して中央に保存された情報(たとえばログインシェルのディレクトリ、ホームディレクトリへの絶対パス、その他のシステムユーザー情報など)にアクセスできるようにする一連のプロトコルです。これらの情報は異なる場所からアクセス可能であり、多数のエンドユーザーが利用できるようにする必要があります(別の例としては、企業の全従業員の自宅住所や電話番号のディレクトリなど)。
このような情報を中央に保持することで、それを使用する権限を付与されたすべての人がより簡単にメンテナンスおよびアクセスできるようになります。
以下の図はLDAPの簡略図を示しており、以下で詳細に説明します:

上記図の詳細な説明。
- LDAPディレクトリ内のエントリは単一の情報ユニットを表し、識別名と呼ばれるものによって一意に識別されます。
- 属性はエントリに関連付けられた情報の一部です(たとえば、住所、連絡先電話番号、メールアドレスなど)。
- 各属性には、スペースで区切られたリストで構成される1つ以上の値が割り当てられます。エントリごとに一意の値は相対識別名と呼ばれます。
と言うことで、サーバーおよびクライアントのインストールを進めましょう。
LDAPサーバーおよびクライアントのインストールと設定
RHEL 7では、LDAPはOpenLDAPによって実装されています。サーバーとクライアントをインストールするには、それぞれ以下のコマンドを使用します:
# yum update && yum install openldap openldap-clients openldap-servers # yum update && yum install openldap openldap-clients nss-pam-ldapd
インストールが完了したら、いくつかの点を確認する必要があります。以下の手順は、明示的に指定されていない限り、サーバーでのみ実行する必要があります:
1.次のSELinuxが邪魔にならないように、サーバーとクライアントの両方で次のブール値を永続的に有効にしてください:
# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0
allow_ypbindはLDAPベースの認証に必要であり、authlogin_nsswitch_use_ldapは一部のアプリケーションで必要とされるかもしれません。
2.サービスを有効にして開始してください:
# systemctl enable slapd.service # systemctl start slapd.service
また、systemctlを使用してサービスを無効にしたり、再起動したり、停止したりすることもできます:
# systemctl disable slapd.service # systemctl restart slapd.service # systemctl stop slapd.service
3.slapdサービスはldapユーザーとして実行されるため(ps -e -o pid,uname,comm | grep slapdで確認できます)、このユーザーは管理ツールによって作成されたエントリを変更できるように、サーバーがルートとしてのみ実行できるツールによって作成されたエントリを変更できるように、/var/lib/ldapディレクトリを所有する必要があります(これについては後で詳しく説明します)。
このディレクトリの所有権を再帰的に変更する前に、slapdのサンプルデータベース構成ファイルをコピーしてください:
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG # chown -R ldap:ldap /var/lib/ldap
4.OpenLDAP管理ユーザーを設定し、パスワードを割り当ててください:
# slappasswd
次の画像に示すように:

そして、以下の内容でLDIFファイル(ldaprootpasswd.ldif)を作成してください:
dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}PASSWORD
ここで:
- PASSWORDは前もって取得したハッシュ化された文字列です。
- cn=configはグローバル構成オプションを示します。
- olcDatabaseは特定のデータベースインスタンス名を示し、通常は/etc/openldap/slapd.d/cn=config内で見つけることができます。
以前に提供した理論的背景を参照し、ldaprootpasswd.ldif
ファイルはLDAPディレクトリにエントリを追加します。そのエントリでは、各行が属性:値のペアを表し(dn、changetype、add、olcRootPWが属性で、各コロンの右側の文字列がそれに対応する値です)、
これを考慮しながら進めてください。また、この記事の残りの部分では同じCommon Names (cn=)
を使用していることに注意してください。各ステップは前のステップに依存します。
5. 次に、ldapサーバを参照するURIを指定して対応するLDAPエントリを追加してください。ここでは、プロトコル/ホスト/ポートのフィールドのみが許可されます。
# ldapadd -H ldapi:/// -f ldaprootpasswd.ldif
出力は次のようになります:

そして、/etc/openldap/schema
ディレクトリから基本的なLDAP定義をインポートしてください:
# for def in cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi:/// -f /etc/openldap/schema/$def; done

6. LDAPがデータベースであなたのドメインを使用するようにします。
適切なドメイン(ドメインコンポーネントdc=内)とパスワードに置き換えて、ldapdomain.ldif
という名前の別のLDIFファイルを作成してください。
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=mydomain,dc=com" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=mydomain,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=Manager,dc=mydomain,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=mydomain,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=mydomain,dc=com" write by * read
その後、次のようにロードします:
# ldapmodify -H ldapi:/// -f ldapdomain.ldif

7. これで、LDAPディレクトリにエントリを追加する準備が整いました。属性と値は次のファイルにコロン(:)
で区切られています。このファイルの名前はbaseldapdomain.ldif
とします:
dn: dc=mydomain,dc=com objectClass: top objectClass: dcObject objectclass: organization o: mydomain com dc: mydomain dn: cn=Manager,dc=mydomain,dc=com objectClass: organizationalRole cn: Manager description: Directory Manager dn: ou=People,dc=mydomain,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=mydomain,dc=com objectClass: organizationalUnit ou: Group
LDAPディレクトリにエントリを追加します:
# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f baseldapdomain.ldif

8. LDAPユーザーldapuserを作成します(adduser ldapuser)、次にldapgroup.ldif
にLDAPグループの定義を作成します。
# adduser ldapuser # vi ldapgroup.ldif
以下の内容を追加します。
dn: cn=Manager,ou=Group,dc=mydomain,dc=com objectClass: top objectClass: posixGroup gidNumber: 1004
gidNumberは/etc/groupのGIDです(ldapuserのための)、そしてこれをロードします:
# ldapadd -x -W -D "cn=Manager,dc=mydomain,dc=com" -f ldapgroup.ldif
9.ユーザーldapuserの定義を含むLDIFファイルを追加します(ldapuser.ldif
):
dn: uid=ldapuser,ou=People,dc=mydomain,dc=com objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: ldapuser uid: ldapuser uidNumber: 1004 gidNumber: 1004 homeDirectory: /home/ldapuser userPassword: {SSHA}fiN0YqzbDuDI0Fpqq9UudWmjZQY28S3M loginShell: /bin/bash gecos: ldapuser shadowLastChange: 0 shadowMax: 0 shadowWarning: 0
そしてこれをロードします:
# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f ldapuser.ldif

同様に、作成したユーザーエントリを削除できます:
# ldapdelete -x -W -D cn=Manager,dc=mydomain,dc=com "uid=ldapuser,ou=People,dc=mydomain,dc=com"
10.ファイアウォールを通じて通信を許可します:
# firewall-cmd --add-service=ldap
11.最後に、クライアントがLDAPを使用して認証できるようにします。
この最後のステップで私たちを助けるために、authconfigユーティリティ(システム認証リソースの構成のためのインターフェース)を使用します。
次のコマンドを使用して、LDAPサーバーに対する認証が成功した後に、要求されたユーザーのホームディレクトリが存在しない場合に作成されます:
# authconfig --enableldap --enableldapauth --ldapserver=rhel7.mydomain.com --ldapbasedn="dc=mydomain,dc=com" --enablemkhomedir --update

要約
この記事では、LDAPサーバーに対して基本認証を設定する方法について説明しました。現在のガイドに記載されているセットアップをさらに設定するためには、RHEL 7システム管理者ガイドの第13章 – LDAP設定を参照し、TLSを使用したセキュリティ設定に特に注意してください。
ご質問がある場合は、以下のコメントフォームを使用して自由にお問い合わせください。
Source:
https://www.tecmint.com/setup-ldap-server-and-configure-client-authentication/