【DevOps工具篇】 OpenLDAP服务器安装和配置方法
@TOC
推荐超级课程:
在诸如RedHat Enterprise Linux、CentOS、Debian、Ubuntu等Linux发行版中,OpenLDAP作为软件包提供。然而,最近的OpenLDAP比各个发行版采用的版本更加高级,并且后端数据库也更换为更快速的版本。以下是源代码安装方法的说明。
下载OpenLDAP源代码
可以从以下网址下载OpenLDAP源代码。
下载源代码后,进行解压。
$ tar xvzf openldap-2.4.45.tgz ⏎
LDAP服务器的编译和安装
进入解压后的目录。
$ cd openldap-2.4.45 ⏎
运行configure。
$ ./configure --with-tls -enable-crypt --with-cyrus-sasl -enable-rwm --enable-monitor=no ⏎
首先运行make depend。
$ make depend ⏎
进行编译。
$ make ⏎
编译成功后进行安装。
# su ⏎
Password: ********** ⏎
# make install ⏎
LDAP服务器的初始设置
在slapd.conf文件中进行初始设置。suffix和rootdn应根据实际组织进行设置。下面是设置示例。
/usr/local/etc/openldap/slapd.conf
include /usr/local/etc/openldap/schema/core.schema
pidfile /usr/local/var/run/slapd.pid
argsfile /usr/local/var/run/slapd.args
database config
rootdn cn=admin,cn=config
access to *
by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage
by * break
database mdb
maxsize 1073741824
suffix "dc=example,dc=com"
rootdn "cn=Manager,dc=example,dc=com"
rootpw {SSHA}A/9vWhXE6Fk7wWI0iwQJDnr8QgOqKayF
directory /usr/local/var/openldap-data
index objectClass eq
rootpw可通过slappasswd命令创建。
# slappasswd ⏎
New password: ******** ⏎
Re-enter new password: ******** ⏎
{SSHA}A/9vWhXE6Fk7wWI0iwQJDnr8QgOqKayF
根据设置文件创建初始设置目录。
# cd /usr/local/etc/openldap ⏎ ← 进入目录
# mkdir slapd.d ⏎ ← 创建设置目录
# slaptest -f slapd.conf -F slapd.d -u ⏎ ← 转换设置
配置LDAP服务启动
创建一个用于启动LDAP服务的systemd单元文件。
/usr/lib/systemd/system/slapd.service
[Unit]
Description=OpenLDAP server
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/usr/local/var/run/slapd.pid
ExecStart=/usr/local/libexec/slapd -h "ldap:/// ldapi:///"
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
[Install]
WantedBy=multi-user.target
创建单元文件后,通知systemd进行更改。
# systemctl daemon-reload ⏎
启动LDAP服务
使用systemctl命令启动LDAP服务器。
# systemctl start slapd.service ⏎
配置包过滤
更改包过滤设置,允许与LDAP端口的通信。
# firewall-cmd --add-service=ldap ⏎
注册LDAP DIT
根据要创建的DIT在LDAP服务器上注册基本数据。至少需要设置rootdn和DIT的顶级目录。
init.ldif
dn: dc=example,dc=com
objectClass: organization
objectClass: dcObject
o: example, INC.
dc: example
dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
使用LDAP实用程序命令注册数据。
$ ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f init.ldif ⏎
Enter LDAP Password: ******** ⏎
adding new entry "dc=example,dc=com"
adding new entry "cn=Manager,dc=example,dc=com"
建议进行的设置
syslog设置
LDAP服务器的日志默认情况下以local4的facility输出到syslog。因此,更改rsyslog的设置以确保日志被记录。
/etc/rsyslog.conf
local4.* /var/log/slapd
更改日志级别
在LDAP服务器端设置输出日志的级别。
loglevel.ldif
dn: cn=config
changetype: modify
replace: olclogLevel
olcLogLevel: filter config ACL stats
# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f loglevel.ldif ⏎
modifying entry "cn=config"