GNU/Linux >> Linux の 問題 >  >> Linux

詳細な手順を使用して Linux に LDAP 389 Directory Server をインストールする方法

389 Directory Server は、オープン ソースのエンタープライズ LDAP サーバーです。

これにより、非常に大量のデータを処理できます。 389 LDAP サーバーの大きな利点の 1 つは、非常に高速で、毎秒数千の操作を処理できることです。

これには、水平スケーリング用の非同期マルチマスター レプリケーションを含むいくつかの高度な機能があり、100% のフォールト トレランスと非常に高いスループットを提供します。

また、これは認証とトランスポートのために TLS、SASL をサポートすることに注意してください。 389 ディレクトリ サーバーは完全に LDAPv3 に準拠しています。

このチュートリアルでは、Linux 環境に 389 ディレクトリ サーバーをインストールして構成する方法について説明します。

EPEL リポジトリのセットアップ

EPEL リポジトリをセットアップしていない場合は、EPEL から 389 の関連パッケージをインストールするため、必ずセットアップしてください。

まず、以下に示すように、Fedora の Web サイトから epel rpm をダウンロードします。

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm

次に、サーバーに epel リポジトリをインストールします。

# rpm -ivh epel-release-7-9.noarch.rpm 
warning: epel-release-7-9.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing...             ################################# [100%]
Updating / installing...
   1:epel-release-7-9    ################################# [100%]

389 ディレクトリ サーバーの代わりに OpenLDAP に関心がある場合は、こちらを参照してください:Linux で OpenLDAP をインストールおよび構成する方法

/etc/host ファイルを正しくセットアップする

ホスト ファイルが正しく設定されていることを確認してください。

この例では、以下が現在の /etc/host ファイルのセットアップです。

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.101.10  deploy.thegeekstuff.com deploy

上記では:

  • 192.168.101.10 – サーバーの IP アドレスです
  • deploy.thegeekstuff.com – これは、389 ディレクトリ サーバーがインストールされるサーバーの FQDN です
  • デプロイ – サーバーのホスト名です

適切な sysctl パラメータの設定

次の行を /etc/sysctl.conf ファイルに追加してください:

# cat /etc/sysctl.conf 
net.ipv4.tcp_keepalive_time = 300
net.ipv4.ip_local_port_range = 1024 65000
fs.file-max = 64000

システムにどれだけのリソースがあるかによって、上記の file-max 数をもう少し増やしたいと思うかもしれません.

以下に示すように「sysctl -p」コマンドを実行して、上記の変更がシステムに加えられていることを確認してください。

# sysctl -p
net.ipv4.tcp_keepalive_time = 300
net.ipv4.ip_local_port_range = 1024 65000
fs.file-max = 64000

変更が行われたことを確認します:

# sysctl fs.file-max net.ipv4.tcp_keepalive_time net.ipv4.ip_local_port_range
fs.file-max = 64000
net.ipv4.tcp_keepalive_time = 300
net.ipv4.ip_local_port_range = 1024     65000

適切な上限値を設定する

以下に示すように、/etc/profile ファイルで ulimit 値を 8192 に設定します。

# echo "ulimit -n 8192" >> /etc/profile

このエントリが /etc/profile ファイルに追加されていることを確認してください。

# tail /etc/profile
..
..
unset i
unset -f pathmunge
ulimit -n 8192

pam.d ログイン ファイルの変更

/etc/pam.d/login ファイルを変更し、次の行を追加して、以下に示すように pam_limits.so ファイルを含めます。

# vi /etc/pam.d/login 
session    required     /usr/lib64/security/pam_limits.so

pam_limits.so ファイルがシステムに存在することを確認してください。

# ls -l /usr/lib64/security/pam_limits.so 
-rwxr-xr-x. 1 root root 19584 Aug 18  2015 /usr/lib64/security/pam_limits.so

注:32 ビットでは、このファイルの場所が異なるため、次を使用してください。

# vi /etc/pam.d/login 
session    required     /lib/security/pam_limits.so

LDAP 管理者ユーザーの作成

ldapadmin というユーザーを作成し、以下に示すようにパスワードを割り当てます:

useradd ldapadmin

passwd ldapadmin

LDAP サーバーを適切に設定したら、これが役に立ちます:LDAP ユーザーとグループを追加する方法

389 Directory Server ベースと OpenLDAP クライアントをインストールします

次に、389 ディレクトリ サーバーの基本パッケージと OpenLDAP クライアント ユーティリティ パッケージをインストールします。次の 2 つのパッケージをインストールする必要があります:

  • 389-ds-base.x86_64
  • openldap-clients.x86_64

yum コマンドを使用して、上記の 2 つのパッケージをインストールします。

# yum install 389-ds-base.x86_64 openldap-clients.x86_64

389-ds-base および openldap-client パッケージのインストールとは別に、システムによっては、次の依存パッケージもインストールされます:

  • 389-ds-base-libs
  • GeoIP
  • バインド ライブラリ
  • バインドユーティリティ
  • cyrus-sasl-gssapi
  • cyrus-sasl-md5
  • リビク
  • perl-アーカイブ-タール
  • perl-DB_File
  • perl-IO-Zlib
  • perl-Mozilla-LDAP
  • perl-NetAddr-IP
  • perl-パッケージ定数
  • svrcore

この特定のシステムでは、上記の 2 つのパッケージがインストールされたときに、次のパッケージもアップグレードされました:

  • bind-libs-lite
  • バインドライセンス
  • openldap

システムで初めて EPEL リポジトリを使用する場合、以下に示すようにキーを受け入れるように求められる場合があります。ここで「y」と言ってください。

Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Importing GPG key 0x352C64E5:
 Userid     : "Fedora EPEL (7) <[email protected]>"
 Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
 Package    : epel-release-7-9.noarch (installed)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Is this ok [y/N]: y

389 個の Directory Server 管理パッケージをインストールする

次に、389 LDAP サーバーの管理に関連する次のパッケージをインストールします。

  • 389-ds.noarch これは 389 ディレクトリ、管理、およびコンソール スイートです
  • 389-admin.x86_64 これは 389 管理サーバーの管理者です
  • 389-adminutil.x86_64 これには、389 管理に必要なユーティリティとライブラリが含まれています
  • 389-ds-console-doc.noarch これは、389 ディレクトリ サーバー管理コンソールの Web ベースのドキュメントです

以下に示すように、yum コマンドを使用して、これらの 389 ディレクトリ サーバー管理関連パッケージをインストールします。

# yum install 389-admin.x86_64 \
       389-adminutil.x86_64 389-ds.noarch \
       389-ds-base.x86_64 389-ds-console-doc.noarch

これら 4 つのパッケージのインストールとは別に、システムによっては、次の依存パッケージもインストールされます:

  • 389-管理コンソール
  • 389-admin-console-doc
  • 389 コンソール
  • 389-ds-コンソール
  • 389-dsgw
  • copy-jdk-configs
  • idm-console-framework
  • java-1.8.0-openjdk-headless
  • javapackages-tools
  • jss
  • ldapjdk
  • libxslt
  • lksctp-ツール
  • mod_nss
  • perl-CGI
  • perl-FCGI
  • python-javapackages
  • python-lxml
  • tzdata-java

この特定のシステムでは、上記のパッケージがインストールされたときに、次のパッケージもアップグレードされました:

  • chkconfig
  • nspr
  • nss
  • nss-softokn
  • nss-softokn-freebl
  • nss-sysinit
  • nss-tools
  • nss-util

389 ディレクトリ サーバーのセットアップ – setup-ds-admin.pl を実行

必要な 389 LDAP サーバー パッケージをインストールしたら、setup-ds-admin.pl スクリプトを実行します。これにより、システムに 389 ディレクトリ サーバーのセットアップが構成されます。

# setup-ds-admin.pl 

上記のプログラムでは、いくつかの値を入力するよう求められます。それらのほとんどは直感的で簡単です。

しかし、これがユーザー入力を要求している部分の出力を以下に示しました。

Setup 389 Directory Server – 最初の警告メッセージ

システムの設定によっては、上記の setup-ds-admin.pl スクリプトの最初のいくつかのプロンプトで、次の警告メッセージが表示される場合があります。ここで「はい」と言って続行できます:

389 Directory Server system tuning analysis version 14-JULY-2016.

NOTICE : System is x86_64-unknown-linux3.10.0-327.10.1.el7.x86_64 (2 processors).

WARNING: There are only 1024 file descriptors (soft limit) available, which
limit the number of simultaneous connections.  

WARNING  : The warning messages above should be reviewed before proceeding.

Would you like to continue? [no]: yes

389 ディレクトリ サーバーのセットアップ – 標準セットアップ タイプの選択

389 ディレクトリ サーバーを初めて使用する場合は、次の画面で一般的な設定を選択してください。これにより、一般的な構成オプションがすべて設定されます。

1. Express
       Allows you to quickly set up the servers using the most
       common options and pre-defined defaults. Useful for quick
       evaluation of the products.

   2. Typical
       Allows you to specify common defaults and options.

   3. Custom
       Allows you to specify more advanced options. This is 
       recommended for experienced server administrators only.

To accept the default shown in brackets, press the Enter key.

Choose a setup type [2]: 2

389 ディレクトリ サーバーのセットアップ – FQDN を入力

前の設定のいずれかで説明したように /etc/hosts ファイルを適切に設定した場合、以下に示すように、ここでコンピューター名が適切に取得されるはずです。

ここで Enter キーを押して先に進むだけです。

Computer name [deploy.thegeekstuff.com]: 

サーバーに適切な FQDN セットアップがない場合、setup-ds-admin.pl スクリプトの実行中にこのエラー メッセージが表示されます。 Ctrl-C を押してこれを終了し、FQDN の問題に対処してから setup-ds-admin.pl を再実行してください。

WARNING: There are problems with the hostname.
The hostname 'deploy' does not look like a
fully qualified host and domain name.

Please check the spelling of the hostname and/or your network configuration.
If you proceed with this hostname, you may encounter problems.

Do you want to proceed with hostname 'deploy'? [no]: no  
Computer name [deploy]: ^C

以下に示すように、FQDN をパラメーターとして setup-ds-admin.pl スクリプトに渡すこともできます。

# setup-ds-admin.pl General.FullMachineName=deploy.thegeekstuff.com
..
Computer name [deploy.thegeekstuff.com]: 
..

389 ディレクトリ サーバーのセットアップ – LDAP 管理者ユーザーを入力

デフォルトでは、dirsrv がユーザー名とグループとして使用されます。前のステップの 1 つで ldapadmin というユーザーを作成したので、ここでそれを指定します。

System User [dirsrv]: ldapadmin
System Group [dirsrv]: ldapadmin

389 ディレクトリ サーバーのセットアップ – ディレクトリ サーバーの構成

これは私たちが行っている最初のセットアップであるため、構成ディレクトリ サーバーはまだありません。したがって、ここで Enter キーを押して、デフォルトの選択である「いいえ」を受け入れます。

ただし、これを複数インストールする場合は、構成ディレクトリ サーバーが既にセットアップされている可能性があります。その場合は、「はい」と答えて、そこにそれらの情報を指定する必要があります。

Do you want to register this software with an existing
configuration directory server? [no]: 

389 ディレクトリ サーバーのセットアップ – 管理者のユーザー名とパスワードを指定

この段階で、セットアップする新しいディレクトリ サーバーの管理者ユーザー名とパスワードを指定する必要があります。

この uid とパスワードを使用して、コンソールにログインします。

Configuration directory server
administrator ID [admin]: 
Password: 
Password (confirm): 

Setup 389 Directory Server – 追加パラメータを入力

以下は、setup-ds-admin.pl スクリプトが要求するいくつかの追加パラメーターです。このドメイン名は、/etc/hosts ファイルで定義した FQDN から取得されました:

Administration Domain [thegeekstuff.com]: 

名前から想像できるように、デフォルトのポート番号は 389 です。Enter キーを押してそのままにしておきます。

Directory server network port [389]: 

ディレクトリ サーバーの一意の識別子を入力してください。

Directory server identifier [deploy]: 

389 ディレクトリ サーバーのセットアップ – LDAP ツリー構造のセットアップ

まず、それに応じてディレクトリ ツリーをセットアップします。この例では、これはディレクトリ ツリーのルートであり、以下に示すように、dc で分類された thegeekstuff.com で始まります。

Suffix [dc=thegeekstuff, dc=com]: 

次に、ディレクトリ マネージャーを指定します。これは、特定のディレクトリ サーバー操作を実行する管理ユーザーを持つ DN です。

Enter キーを押してデフォルト名を受け入れます。ディレクトリ マネージャー ユーザーのパスワードをここに入力してください。

Directory Manager DN [cn=Directory Manager]: 
Password: 
Password (confirm): 

管理ポートを指定します。これは、アプリケーション サーバーまたは Web サーバーのポートとは異なることに注意してください。ここではデフォルト値を受け入れてください。

Administration port [9830]: 

389 ディレクトリ サーバーのセットアップ – セットアップの最終段階

次の最終確認メッセージに「はい」と答えて、これまでに入力した値に基づいてディレクトリ サーバーの構成を開始します。

Are you ready to set up your servers? [yes]: yes

スクリプトが構成値に基づいてディレクトリ サーバーをセットアップしていることを示す次の出力が表示されます。

Creating directory server . . .
Your new DS instance 'deploy' was successfully created.
Creating the configuration directory server . . .
Beginning Admin Server creation . . .
Creating Admin Server files and directories . . .
Updating adm.conf . . .
Updating admpw . . .
Registering admin server with the configuration directory server
Updating adm.conf with information from configuration directory server
Updating the configuration for the httpd engine . . .
..
..
Starting admin server . . .
The admin server was successfully started.
Admin server was successfully created, configured, and started.
Exiting . . .
Log file is '/tmp/setupqxoZug.log'

SELinux のセットアップと構成が適切に行われていない場合、次のエラー メッセージが表示されます。この場合、SELinux を一時的に無効にして、セットアップ スクリプトを実行することをお勧めします。

ERROR: policydb version 30 does not match my version range 15-29
ERROR: Unable to open policy //etc/selinux/targeted/policy/policy.30.
Traceback (most recent call last):
File "/usr/sbin/semanage", line 32, in 
  import seobject
File "/usr/lib/python2.7/site-packages/seobject/__init__.py", line 27, in 
  import sepolicy
File "/usr/lib64/python2.7/site-packages/sepolicy/__init__.py", line 798, in 
  raise e
ValueError: Failed to read //etc/selinux/targeted/policy/policy.30 policy file

セットアップ ログ ファイルの確認

セットアップ スクリプトの最後の行には、ログ ファイルの名前が表示されます。

ログ ファイルを開いて、エラー メッセージがないことを確認します。次のようになります:

# vi /tmp/setupqxoZug.log
[21:50:57] - [Setup] Info This program will set up the 389 Directory and Administration Servers.
[21:50:57] - [Setup] Info Would you like to continue with set up?
[21:50:58] - [Setup] Info yes
..
..
[21:55:50] - [Setup] Info Updating admpw . . .
[21:55:50] - [Setup] Info Registering admin server with the configuration directory server . . .
[21:55:50] - [Setup] Info Updating adm.conf with information from configuration directory server . . .
[21:55:50] - [Setup] Info Updating the configuration for the httpd engine . . .
[21:55:52] - [Setup] Info Starting admin server . . .
[21:55:53] - [Setup] Info The admin server was successfully started.
[21:55:53] - [Setup] Info Admin server was successfully created, configured, and started.
[21:55:53] - [Setup] Success Exiting . . .

Systemctl を使用して 389 Directory Server を起動

dirsrv は起動プログラム名です。

以下に示すように、systemctl を使用して 389 Directory Server を起動します。

始める前に:

# systemctl status dirsrv.target
? dirsrv.target - 389 Directory Server
   Loaded: loaded (/usr/lib/systemd/system/dirsrv.target; disabled; vendor preset: disabled)
   Active: inactive (dead)

389 ディレクトリ サーバーにスターを付ける:

# systemctl start dirsrv.target

開始後:

# systemctl status dirsrv.target
? dirsrv.target - 389 Directory Server
   Loaded: loaded (/usr/lib/systemd/system/dirsrv.target; disabled; vendor preset: disabled)
   Active: active since Fri 2017-07-07 21:58:26 UTC; 2s ago

21:58:26 deploy systemd[1]: Reached target 389 Directory Server.
21:58:26 deploy systemd[1]: Starting 389 Directory Server.
..

start-dirsrv を使用して 389 Directory Server を起動します

systemctl を使用する代わりに、以下に示すように start-dirsrv コマンドを使用してディレクトリ サーバーを起動することもできます。

# start-dirsrv
Starting instance "deploy"

stop-dirsrv を使用して停止します:

# stop-dirsrv
Stopping instance "deploy"

以下は、ディレクトリサーバーのステータスを表示します

# status-dirsrv
? dirsrv.target - 389 Directory Server
   Loaded: loaded (/usr/lib/systemd/system/dirsrv.target; disabled; vendor preset: disabled)
   Active: active since Fri 2017-07-07 21:58:26 UTC; 1min 39s ago

21:58:26 deploy systemd[1]: Reached target 389 Directory Server.
21:58:26 deploy systemd[1]: Starting 389 Directory Server.
Status of instance "deploy"
? [email protected] - 389 Directory Server deploy.
   Loaded: loaded (/usr/lib/systemd/system/[email protected]; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2017-07-07 22:00:01 UTC; 4s ago
  Process: 4754 ExecStartPre=/usr/sbin/ds_systemd_ask_password_acl /etc/dirsrv/slapd-%i/dse.ldif (code=exited, status=0/SUCCESS)
 Main PID: 4761 (ns-slapd)
   Status: "slapd started: Ready to process requests"
   CGroup: /system.slice/system-dirsrv.slice/[email protected]
           +-4761 /usr/sbin/ns-slapd -D /etc/dirsrv/slapd-deploy -i /var/run/dirsrv/slapd-deploy.pid

Systemctl を使用して 389 Directory Server Admin を起動します

389 ディレクトリの管理サーバーを制御するには、以下に示すように systemctl を使用します。

以下に示すように、admin プログラムは dirsrv-admin として知られています。

# systemctl start dirsrv-admin

# systemctl stop dirsrv-admin

# systemctl status dirsrv-admin
? dirsrv-admin.service - 389 Administration Server.
   Loaded: loaded (/usr/lib/systemd/system/dirsrv-admin.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
..

また、stop-ds-admin コマンドを使用して 389 管理サーバーを停止することもできます

LDAPSearch コマンドを使用して設定を検証する

最後に、ldapsearch コマンドを使用して、セットアップが適切に行われたことを検証します。

以下は、ldapsearch コマンドの出力の一部です:

# ldapsearch -x -b "dc=thegeekstuff,dc=com"
..
..
dn: dc=thegeekstuff,dc=com
objectClass: top
objectClass: domain
dc: thegeekstuff

# Directory Administrators, thegeekstuff.com
dn: cn=Directory Administrators,dc=thegeekstuff,dc=com
objectClass: top
objectClass: groupofuniquenames
cn: Directory Administrators
uniqueMember: cn=Directory Manager
..
..
search: 2
result: 0 Success

# numResponses: 10
# numEntries: 9

Linux
  1. LinuxにNginxWebサーバーをインストールする方法

  2. Linux に SSL を使用して Apache 2 をインストールする方法 (mod_ssl、openssl を使用)

  3. 仮想化 Linux サーバーのインストール方法

  1. Linuxを3つのステップでインストールする方法

  2. LinuxサーバーにDockerを使用してNextcloudをインストールする方法

  3. CentOS6VPSにLDAP389DirectoryServerをインストールする方法

  1. LinuxにSQLServerをインストールする方法

  2. RHEL8LinuxにMinecraftサーバーをインストールする方法

  3. Debian10LinuxにApacheWebサーバーをインストールする方法