《Linux/UNIX OpenLDAP实战指南》——2.5 OpenLDAP单节点配置案例

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云防火墙,500元 1000GB
简介: LDAP服务端和客户端主机名称及对应的IP地址解析服务正常工作,且每个节点的主机名称需要跟“uname –n”命令执行的结果保持一致。这可以通过搭建DNS服务来完成,也可以通过修改两个节点的hosts文件来保持IP地址和主机名之间,互相解析。

本节书摘来自异步社区《Linux/UNIX OpenLDAP实战指南》一书中的第2章,第2.5节,作者:郭大勇著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.5 OpenLDAP单节点配置案例

2.5.1 安装环境规划

安装环境的拓扑图如图2-1所示。

screenshot

安装环境要求如下。

环境平台:VMware ESXi 5.0.0
系统版本:Red Hat Enterprise Linux Server release 6.5 (Santiago)
软件版本:OpenLDAP-2.4.23-32
IP地址及主机名规划如表2-1所示。
screenshot

OpenLDAP相关软件包套件如表2-2所示。
screenshot

2.5.2 主机名规划配置
LDAP服务端和客户端主机名称及对应的IP地址解析服务正常工作,且每个节点的主机名称需要跟“uname –n”命令执行的结果保持一致。这可以通过搭建DNS服务来完成,也可以通过修改两个节点的hosts文件来保持IP地址和主机名之间,互相解析。

[root@localhost ~ ]# sed –i ‘s@\(HOSTNAME=\).*@\1mldap01.gdy.com@g’//开机生效(永久生效)
[root@localhost ~ ]# hostname mldap01.gdy.com      //临时生效
[root@localhost ~ ]# exit     //退出,重新登录
[root@mldap01 ~ ]#

2.5.3 时间同步配置
OpenLDAP为C/S架构,加密传输需要使用CA证书,所以需要配置服务端和客户端时间保持同步。可以通过配置NTP服务来提供时间源,然后利用Puppet软件分发功能批量配置NTP客户端,实现时间的同步。本章使用ntpdate+crontab实现主机自动时间同步,在生产环境中建议采用NTP Service来完成时间的同步。

[root@mldap01 ~]# ntpdate 0.rhel.pool.ntp.org
13 Nov 19:46:35 ntpdate[2394]: step time server 202.112.10.36 offset 2.202509 sec
[root@mldap01 ~]# echo "0/5  *  *  *  * root /usr/sbin/ntpdate 0.rhel.pool.ntp.org"  >>
                           /var/spool/cron/root 
[root@mldap01 ~]# crontab -l
0/5  *  *  *  * root /usr/sbin/ntpdate0.rhel.pool.ntp.org

要配置时间同步,可以使用NTP服务实现时间的同步,也可以通过定义计划任务实现时间同步。一般建议搭建NTP服务进行同步,防止出现大量时间片(空白时间),本节以计划任务方式进行配置。

2.5.4 防火墙、SELinux配置
一般生产环境中防火墙和SELinux均处于关闭状态,如果读者要开启服务器防火墙过滤功能以及SELinux,将对应的端口(389/636)开放即可。具体步骤如下。

1)关闭防火墙和SELinux规则。

[root@mldap01 ~ ]# service iptables stop && chkconfig iptables off
iptables: Setting chains to policy ACCEPT: filter        [  OK  ]
iptables: Flushing firewall rules:                       [  OK  ]
iptables: Unloading modules:                             [  OK  ]
[root@mldap01 ~ ]# getenforce 
Enforcing
[root@mldap01 ~ ]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@mldap01 ~ ]# setenforce 0
[root@mldap01 ~ ]# getenforce 
Permissive
[root@mldap01 ~ ]# cat /etc/selinux/config  | grep -i '^SELINUX'
SELINUX=disabled
SELINUXTYPE=targeted

2)开启防火墙,并配置过滤规则。

明文数据传输规则配置如下。

# iptables –A INPUT –p tcp –m state –state NEW –dport 389 –j ACCEPT
# iptables –A OUTPUT –p tcp –m state –state NEW –sport 389 –j ACCEPT
# service iptables save
# service iptables restart && chkconfig iptables on

密文数据传输规则配置如下。

# iptables –A INPUT –p tcp –m state –state NEW –dport 636 –j ACCEPT
# iptables –A OUTPUT –p tcp –m state –state NEW –sport 636 –j ACCEPT
# service iptables save
# service iptables restart && chkconfig iptables on

2.5.5 FQDN域名解析配置
因为这里使用hosts来解析主机名,所以服务端和客户端都需要配置。如果使用DNS来解析,此步骤可以忽略,也可以作为备用,防止OpenLDAP服务端无法正常解析。如果批量修改hosts文件,可以选择Puppet或者Ansible等自动化部署工具来实现。

[root@mldap01 ~ ]# cat >> /etc/hosts << EOF
>192.168.218.206 mldap01.gdy.com mldap01
>192.168.218.208 test01.gdy.com test01
>192.168.218.207 test02.gdy.com test02
>EOF

2.5.6 安装OpenLDAP组件
通过yum安装OpenLDAP组件,解析软件包的依赖关系。

[root@mldap01 ~ ]# yum install openldap openldap-servers openldap-clients –y

2.5.7 初始化OpenLDAP配置
初始化OpenLDAP配置的步骤如下。

1)复制配置模板至/etc/openldap目录下,命令如下。

[root@mldap01 openldap]# cp/usr/share/openldap-servers/slapd.conf.obsolete/etc/   
                                  openldap/slapd.conf 
[root@mldap01 openldap]# cp slapd.d /tmp/slapd.d.bak   //备份默认数据库文件
[root@mldap01 openldap]# rm -rf /etc/openldap/slapd.d/*

2)创建数据库文件(从模板进行复制),生成DB_CONFIG及启动OpenLDAP进程slapd,命令如下。

[root@mldap01 openldap]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/  
                                   ldap/DB_CONFIG
[root@mldap01 openldap]# chown -R ldap:ldap /var/lib/ldap

要点:
只有root用户可以使用/usr/sbin/slapadd,然而目录服务器以ldap用户运行,因此目录服务器不能通过slapadd修改任何文件,因此需要需要将/va/lib/ldap的属主属组修改为ldap。

3)查看OpenLDAP是否开启SSL加密功能

这里保持默认设置,第8章将介绍如何配置SSL相关设置以及如何自建CA来完成SSL加密验证功能。

[root@mldap01 ~ ]# cat  /etc/sysconfig/ldap | grep -v -E "^$|^#"
SLAPD_LDAP=yes
SLAPD_LDAPI=yes
SLAPD_LDAPS=no

此处未开启SSL,如果开启SSL功能,可以再使用SLAPD_LDAPS=yes,或者使用SLAPD_URLS进行指定即可。

例如:SLAPD_URLS=ldaps://ldap01.deppon.com。

4)OpenLDAP主配置文件配置。

schema文件的引入
例如,为了使Samba支持OpenLDAP用户验证登录,此时就需要包含Samba的schema文件。

include /etc/openldap/schema/samba.schema
PID文件路径定义
pidfile /var/run/openldap/slapd.pid
参数文件路径定义
argsfile /var/run/openldap/slapd.args
模块路径定义
因为系统分为32位和64位系统,所以要添加32位和64位模块存放的位置。

modulepath /usr/lib/openldap   
modulepath /usr/lib64/openldap

加载额外模块
例如,如果让OpenLDAP实现同步,需要加载syncprov.la模块,通过moduleload引用即可。

moduleload syncprov.la
后端数据库的定义
database bdb
suffix域名定义
suffix域名类似于微软的AD的域名。

suffix "dc=gdy,dc=com"
定义OpenLDAP管理员
OpenLDAP管理员类似于系统用户root,具有对OpenLDAP服务器做任何修改操作的权限,管理员名称可以自我定义。

rootdn "cn=Manager,dc=gdy,dc=com"
创建OpenLDAP的管理员密码
默认OpenLDAP管理员密码使用明文进行管理,在生产环境中,建议使用密文管理。通过使用slappasswd命令创建密码串,然后将密码串复制到rootpw即可。

# slappasswd 
New password: 
Re-enter new password: 
{SSHA}pUr8/1VDGOODRCtaQbMrFa4LYpMLmqXs
# sed –i \'s/rootpw*/rootpw{SSHA}pUr8/1VDGOODRCtaQbMrFa4LYpMLmqXs/g'/etc/openldap/slapd.conf
# cat /etc/openldap/slapd.conf
rootpw  {SSHA}pUr8/1VDGOODRCtaQbMrFa4LYpMLmqXs

定义数据存放目录
directory /var/lib/ldap
2.5.8 slaptest检测、生成数据库
当完成对slapd.conf的配置时,需要对配置文件的语法进行检测。

# slaptest -f /etc/openldap/slapd.conf 
config file testing succeeded

如果配置文件存在语法错误,通过slaptest –u命令有相应的提示,根据提示对slapd.conf配置文件进行调整即可。

通过slapd.conf配置文件生成数据库。

# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded

返回config file testing succeeded表示配置文件生成数据库成功,后边会介绍如何通过修改数据库(cn=config)来完成OpenLDAP的配置,这也是2.4版本推荐配置OpenLDAP的一种方式。

2.5.9 OpenLDAP日志配置
OpenLDAP日志级别的类型介绍
通过“slapd –d ?”来获取OpenLDAP的日志级别,日志主要用于对OpenLDAP排错:

[root@mldap01 ~]# slapd -d ?
Installed log subsystems:

     Any                          (-1, 0xffffffff)    //开启所有的dug信息
     Trace                        (1, 0x1)            //跟踪trace函数调用
     Packets                      (2, 0x2)            //与软件包的处理相关的dug信息
     Args                         (4, 0x4)            //全面的debug信息
     Conns                        (8, 0x8)            //链接数管理的相关信息
     BER                          (16, 0x10)          //记录包发送和接收的信息
     Filter                       (32, 0x20)          //记录过滤处理的过程
     Config                       (64, 0x40)          //记录配置文件的相关信息
     ACL                          (128, 0x80)         //记录访问控制列表的相关信息
     Stats                        (256, 0x100)        //记录链接、操作以及统计信息
     Stats2                       (512, 0x200)        //记录向客户端响应的统计信息
     Shell                        (1024, 0x400)       //记录与shell后端的通信信息
     Parse                        (2048, 0x800)       //记录条目的分析结果信息
     Sync                         (16384, 0x4000)     //记录数据同步资源消耗的信息
     None                         (32768, 0x8000)     //不记录

NOTE: custom log subsystems may be later installed by specific code

OpenLDAP服务日志设置
通过配置日志,了解OpenLDAP服务运行情况,用于各种错误排查。配置OpenLDAP日志时,需要通过修改rsyslog配置文件,在文件中添加:local4.*/var/log/slapd.log,slapd.log文件要提前存在且ldap用户具有读写权限,然后重启rsyslog进程重新读取配置文件。

根据以上信息,了解OpenLDAP的日志级别,然后根据自己的需求按以下步骤来配置OpenLDAP日志。日志主要可以对OpenLDAP出现的异常、错误进行分析、定位,如进程启动失败、条目同步失败及客户端无法获取用户条目信息等,都会记录到日志中。

1)创建目录及调整权限,用于存放日志文件。

[root@mldap01 openldap]# touch /var/log/slapd.log
[root@mldap01 openldap]# chown ldap.ldap /var/log/slapd.log
[root@mldap01 openldap]# mkdir /var/log/slapd
[root@mldap01 openldap]# chmod 755 /var/log/slapd/
[root@mldap01 openldap]# chown ldap:ldap /var/log/slapd/

2)修改日志文件,使其加载OpenLDAP参数。

[root@mldap01 openldap]# sed -i "/local4.*/d" /etc/rsyslog.conf
[root@mldap01 openldap]# cat >> /etc/rsyslog.conf << EOF
local4.*                        /var/log/slapd/slapd.log
EOF
[root@mldap01 slapd.d]# cat /etc/openldap/slapd.conf  | grep -i  loglevel
loglevel 256

3)重新加载rsyslog使其配置生效。

[root@mldap01 ~]# service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]

2.5.10 通过cn=config配置OpenLDAP日志
要配置OpenLDAP日志,按以下步骤操作。

1)通过修改cn=config配置OpenLDAP日志记录的修改及添加,通过cat命令查看数据库配合文件日志级别信息。

[root@mldap01 slapd.d]# cat cn\=config.ldif | grep olcLogLevel
olcLogLevel: Stats

2)通过ldapmodify命令将原来的日志级别进行清除。

[root@mldap01 slapd.d]# cat << EOF | ldapmodify -Y EXTERNAL -H ldapi:///
> dn: cn=config
> changetype: modify
> delete: olcLogLevel
> olcLogLevel: Stats
> EOF
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
[root@mldap01 slapd.d]# cat cn\=config.ldif | grep olcLogLevel
[root@mldap01 slapd.d]#

3)通过ldapmodify命令重新添加OpenLDAP日志级别。

[root@mldap01 slapd.d]# cat << EOF | ldapmodify -Y EXTERNAL -H ldapi:///
> dn: cn=config
> changetype: modify
> add: olcLogLevel
> olcLogLevel: 32
> EOF
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

[root@mldap01 slapd.d]# cat cn\=config.ldif | grep olcLogLevel
olcLogLevel: 32
[root@mldap01slapd.d]#

此时以上操作无须重启slapd进程,即可生效,如果通过配置文件进行修改,需要重新生成数据库文件,且重新启动slapd服务进程。

2.5.11 OpenLDAP日志切割配置
本章介绍如何通过logrotate实现对OpenLDAP日志的切割,预防日志过大不便于排错以及性能分析。下面通过定制脚本实现当日志大于10MB时,进行切割,便于排错。脚本如下。

#!/bin/bash
########### 通过logrotate实现对OpenLDAP日志进行切割 ##################
FILE= /var/log/slapd/slapd.log
if [ ! -f $FILE ];then
 /bin/touch $FILE && /bin/chmod 666 $FILE && /usr/bin/chattr +a $FILE &> /dev/null
cat > /etc/logrotate.d/ldap << "EOF"
/var/log/slapd/slapd.log {
       prerotate
               /usr/bin/chattr -a  /var/log/slapd/slapd.log
       endscript
       compress
       delaycompress
       notifempty
       rotate 100
       size 10M
       postrotate
               /usr/bin/chattr +a  /var/log/slapd/slapd.log
       endscript
}
EOF
     service rsyslog restart   &&    chkconfig  rsyslog on
else
     echo "slapd log is exsit"
fi

以上配置完成后,OpenLDAP日志当超过10MB后,系统会自动进行切割并重新生成新文件,保存OpenLDAP日志,防止单个日志文件过大,不便于日志分析查看。

2.5.12 加载slapd进程、端口状态
要加slapd进程、端口状态,可以按如下步骤进行操作。

1)启动OpenLDAP服务slapd进程。

[root@mldap01 openldap]# service slapd restart
Stopping slapd:                                            [FAILED]
Starting slapd:                                            [  OK  ]

2)设置OpenLDAP slapd进程,系统启动时运行级别。

[root@mldap01 ~]# chkconfig slapd on
[root@mldap01 ~]# chkconfig --list slapd
slapd             0:off    1:off    2:on    3:on    4:on    5:on    6:off

3)检查OpenLDAP服务进程启动所产生的PID文件及参数文件。

[root@mldap01 ~]# ls -l /var/run/openldap/
total 8
-rw-r--r--. 1 ldap ldap 48 Nov 27 08:18 slapd.args
-rw-r--r--. 2 ldap ldap  5 Nov 27 08:18 slapd.pid

4)检查OpenLDAP服务进程是否正常启动。

[root@mldap01 ~]# netstat -ntplu | grep slapd
tcp        0    0 0.0.0.0:389           0.0.0.0:*        LISTEN      1890/slapd
tcp        0    0 :::389                :::*             LISTEN      1890/slapd

通过netstat -ntplu命令的运行结果可知,OpenLDAP服务进程slapd在后端正常运行,默认slapd进程使用TCP协议,默认使用的端口为389(通过SSL协议加密后,slapd进程使用663端口)。

相关文章
|
7月前
|
安全 Linux 开发工具
【Linux】vim使用与配置教程
Vim是一款功能强大的文本编辑器,广泛应用于Linux环境,是开发者和系统管理员的必备工具。本文介绍了Vim的基本操作与简单配置,涵盖命令模式、插入模式和底行模式的使用方法,以及光标定位、复制粘贴、搜索替换等常用技巧。同时,文章还提供了实用的分屏操作和代码注释方法,并分享了通过`.vimrc`文件进行个性化配置(如显示行号、语法高亮、自动缩进等)的技巧,帮助用户提升文本编辑效率。掌握这些内容,能让Vim更好地服务于日常工作与开发需求。
443 3
|
5月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
355 11
|
7月前
|
Linux
linux命令详细说明以及案例
本文介绍了常用的 Linux 命令及其详细说明和示例,包括:`ls`(列出目录内容)、`cd`(更改目录)、`rm` 和 `mv`(删除与移动文件)、`grep`(搜索文本)、`cat`(显示文件内容)以及 `chmod`(更改文件权限)。每个命令均配有功能描述、选项说明及实际案例,帮助用户更好地掌握 Linux 命令的使用方法。
267 56
|
5月前
|
数据挖掘 Linux 数据库
服务器数据恢复—Linux系统服务器数据恢复案例
服务器数据恢复环境: linux操作系统服务器中有一组由4块SAS接口硬盘组建的raid5阵列。 服务器故障: 服务器工作过程中突然崩溃。管理员将服务器操作系统进行了重装。 用户方需要恢复服务器中的数据库、办公文档、代码文件等。
|
4月前
|
Linux 网络安全 开发工具
在Linux下配置gitee与Github的远程仓库
注意,git push后,是输入你的账号与密码。这个步骤可以通过特殊设置省去,但是一开始还是不要太省。
192 0
|
6月前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
221 10
|
7月前
|
Java Linux 应用服务中间件
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
1059 21
|
7月前
|
Linux
linux常用命令详细说明以及案例
本文介绍了Linux中几个常用的命令及其用法,包括:`ls`(列出目录内容)、`cd`(切换目录)、`mkdir`(创建目录)、`rm -p`(删除目录及内容)和`mv`(移动或重命名文件/目录)。每个命令都配有详细说明、语法格式、常见选项及实用案例,帮助用户更好地理解和使用这些基础命令。内容源自[linux常用命令详细说明以及案例](https://linux.ciilii.com/show/news-285.html)。
164 7
|
6月前
|
人工智能 Kubernetes Ubuntu
linux配置IP
linux配置IP
512 1