在 Linux 上安装 LDAP 389 目录服务器及详细步骤

举报
Tiamo_T 发表于 2022/10/17 08:31:46 2022/10/17
【摘要】 389 Directory Server 是一个开源的企业 LDAP 服务器。 这可以处理非常大量的数据。389 LDAP 服务器的巨大优势之一是它的照明速度快,处理速度高达每秒处理数千个操作。

389 Directory Server 是一个开源的企业 LDAP 服务器。

这可以处理非常大量的数据。389 LDAP 服务器的巨大优势之一是它的照明速度快,处理速度高达每秒处理数千个操作。

它有几个高级功能,包括用于水平扩展的异步多主复制,这反过来又提供了 100% 的容错和极高的吞吐量。

另外,请记住,这支持 TLS、SASL 进行身份验证和传输。389 目录服务器完全符合 LDAPv3。

本教程介绍了如何在 Linux 环境中安装和配置 389 目录服务器。

设置 EPEL 存储库

如果您没有 EPEL 存储库设置,请确保进行设置,因为我们将从 EPEL 安装 389 个相关软件包。

首先,从 Fedora 网站下载 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%]

如果您对 OpenLDAP 而不是 389 目录服务器感兴趣,请参阅:如何在 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
  • deploy – 这是服务器的主机名

设置适当的 sysctl 参数

将以下行添加到您的 /etc/sysctl.conf 文件中:

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

根据系统上有多少资源,您可能希望将上述文件最大数增加一点。

执行如下所示的“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

设置适当的 Ulimit 值

在 /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 Base 和 OpenLDAP Client

接下来是安装 389 目录服务器基础包和 OpenLDAP 客户端实用程序包。我们需要安装这两个包:

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

使用 yum 命令安装以上两个包:

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

除了安装 389-ds-base 和 openldap-client 包外,根据您的系统,这还将安装以下依赖包:

  • 389-ds-base-libs
  • GeoIP
  • bind-libs
  • bind-utils
  • cyrus-sasl-gssapi
  • cyrus-sasl-md5
  • libicu
  • perl-Archive-Tar
  • perl-DB_File
  • perl-IO-Zlib
  • perl-Mozilla-LDAP
  • perl-NetAddr-IP
  • perl-Package-Constants
  • svrcore

在此特定系统上,安装上述两个软件包时,还升级了以下软件包:

  • 绑定库精简版
  • 绑定许可
  • 开放式LDAP

如果您是第一次在系统上使用 EPEL 存储库,这可能会要求您接受如下所示的密钥。在这里说“y”。

Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Importing GPG key 0x352C64E5:
 Userid     : "Fedora EPEL (7) <epel@fedoraproject.org>"
 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 目录服务器管理包

接下来,安装以下与 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 个软件包之外,根据您的系统,它还安装了以下依赖的 pcakges:

  • 389-admin-console
  • 389-admin-console-doc
  • 389-console
  • 389-ds-console
  • 389-dsgw
  • copy-jdk-configs
  • idm-console-framework
  • java-1.8.0-openjdk-headless
  • javapackages-tools
  • jss
  • ldapjdk
  • libxslt
  • lksctp-tools
  • 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 

上面的程序会要求你输入几个值。它们中的大多数都是直观且直接的。

但是,我在下面显示了要求用户输入的任何地方的部分输出。

设置 389 目录服务器 - 初始警告消息

在上述 setup-ds-admin.pl 脚本的第一次提示期间,根据 yoru 系统设置,这可能会给您以下警告消息。您可以在此处说“是”继续:

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 

如果您的服务器没有正确的 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

设置 389 目录服务器 - 输入 LDAP 管理员用户

默认情况下,这将使用 dirsrv 作为用户名和组。由于我们在前面的步骤之一中创建了一个名为 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): 

设置 389 目录服务器 - 输入其他参数

以下是 setup-ds-admin.pl 脚本将提示的几个附加参数。这个域名是从我们在 /etc/hosts 文件中定义的 FQDN 中提取的:

Administration Domain

您可以从名称中想象的默认端口号是 389。只需按 Enter 键保持原样:

Directory server network port [389]: 

输入目录服务器的唯一标识符。

Directory server identifier [deploy]: 

设置 389 目录服务器 - 设置 LDAP 树结构

首先,相应地设置您的目录树。在此示例中,这是我们目录树的根目录,它以 thegeekstuff.com 开头,按 dc 分解,如下所示。

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 目录服务器

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 目录服务器

除了使用 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"
? dirsrv@deploy.service - 389 Directory Server deploy.
   Loaded: loaded (/usr/lib/systemd/system/dirsrv@.service; 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/dirsrv@deploy.service
           +-4761 /usr/sbin/ns-slapd -D /etc/dirsrv/slapd-deploy -i /var/run/dirsrv/slapd-deploy.pid

使用 Systemctl 启动 389 Directory Server Admin

要控制 389 目录的管理服务器,请使用 systemctl,如下所示。

管理程序称为 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
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。