《Linux/UNIX OpenLDAP实战指南》——2.5 OpenLDAP单节点配置案例
本节书摘来自异步社区《Linux/UNIX OpenLDAP实战指南》一书中的第2章,第2.5节,作者:郭大勇著,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.5 OpenLDAP单节点配置案例2.5.1 安装环境规划
安装环境的拓扑图如图2-1所示。
安装环境要求如下。
环境平台:VMware ESXi 5.0.0
系统版本:Red Hat Enterprise Linux Server release 6.5 (Santiago)
软件版本:OpenLDAP-2.4.23-32
IP地址及主机名规划如表2-1所示。
OpenLDAP相关软件包套件如表2-2所示。
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
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 [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 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 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 service rsyslog restart chkconfig rsyslog on echo "slapd log is exsit"
以上配置完成后,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端口)。
《Linux/UNIX OpenLDAP实战指南》——2.7 OpenLDAP用户以及与用户组相关的配置 添加用户和用户组的方式有两种。一种是将系统用户通过migrationtools工具生成LDIF文件并结合ldapadd命令导入OpenLDAP目录树中,生成OpenLDAP用户。另一种通过自定义LDIF文件并通过OpenLDAP命令进行添加或者修改操作。
《Linux/UNIX OpenLDAP实战指南》——2.4 OpenLDAP配置 通过配置数据库完成各种配置,属于动态配置且不需要重新启动slapd进程服务。此配置数据库(cn=config)包含一个基于文本的集合LDIF文件(位于 /etc/openldap/slapd.d目录下)。
《Linux/UNIX OpenLDAP实战指南》——第2章 OpenLDAP服务器安装与配置 2.1OpenLDAP平台支持 OpenLDAP属于开源集中账号管理软件。由于支持众多系统平台(Windows、Linux、Centos、Debian、Ubuntu、SUSE、Gentoo、openSUSE、Fedora、FreeBSD等),它被众多互联网企业、证券、银行、物流实现系统等用于账号的集中分配管理。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- 【经验分享】linux交叉编译 - openssl动态库
- [Linux]linux下取消用户名和密码直接登录
- Linux sendmail发送邮件失败诊断案例(一)
- fail2ban[防止linux服务器被暴力破解]
- 【Linux基础】linux下修改ls显示的时间格式
- Linux - VNC的安装、配置与使用
- linux fedora配置.myBase.ini文件
- 虚拟机centos 安装 redis 环境 linux 使用 java 远程连接 redis
- 【Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )
- Linux服务器中创建Oracle数据库实例
- L84.linux命令每日一练 -- 第11章 Linux系统管理命令 -- rpm和yum
- L82.linux命令每日一练 -- 第11章 Linux系统管理命令 -- dmidecode和lspci
- L65.linux命令每日一练 -- 第十章 Linux网络管理命令 -- ifdown和route
- L46.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- w和who
- 嵌入式Linux开发,Ubuntu22下交叉编译报错:arch64-linux-gnu-gcc: error while loading shared libraries: libstdc++.so.
- 02 从头开始atac项目 ubuntu20 install r4.2 Linux系统环境配置 服务器版本的rstudio r install in linux /ubuntu/centos
- Linux之文件浏览工具nautilus
- 每天一个linux命令:ps命令
- 【linux】Linux操作系统常用指令大全
- Linux---文件特殊权限
- 使用wget批量下载geo数据集的全部文件 linux下载geo数据 geo处理的数据不是下载原始数据 Linux如何下载ftp文件 geo ftp geo ftp下载 geo下载
- 准备嵌入式Linux开发环境