在 Linux 上安装 LDAP 389 目录服务器及详细步骤
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
- 点赞
- 收藏
- 关注作者
评论(0)