文章目录

  • 1 生产服务器硬件配置需求
  • 2 openldap master服务安装
  • 3 ldap参数配置优化。
  • 3.1 配置ldap管理员密码参数
  • 3.2 日志及缓存参数。
  • 3.4 配置syslog记录ldap服务日志配置syslog
  • 3.5 配置LDAP数据库路径
  • 3.6 查看OpenLDAP 数据库
  • 4 为OpenLDAP初始化数据


1 生产服务器硬件配置需求

ldap服务对系统环境的要求不高,一般在生产场景,ldap服务应该最少是两台,这样某一台物理服务器岩机才不会因单点问题影响生产业务故障,下面是在工作中单台的硬件配置参考:

设备名称

配置描述

CPU

一颗四核至强处理器 Intel(R)Xeon(R)CPU E5606@2.13GHz

MEM

8GB(2×4GB)667MHz

Raid

SAS Raid 10/Raid0 SAS6I Raid卡(支持1/0/5/6/10)。

DISK

146GBx1 3.5英寸SAS硬盘 15k

操作系统:Centos7/8 64bit。

操 作 系 统

其 它

CentOS-7.6

当前很稳定且免费的Linux版本。

网卡及IP资源

名 称

接 口

IP

用途

ldap主服务器01

eth0

10.0.0.17

外部管理IP,用于WAN数据转发。

eth1

10.0.0.17

备用管理IP,用于LAN内数据转发。

ldap从服务器02

eth0

10.0.0.8

管理IP,用于LAN数据转发。

eth1

10.0.0.18

外部管理IP,用于WAN数据转发。


Tips:内外网IP分配可采用最后8位相同的方式,这样使于管理。


2 openldap master服务安装

yum 安装OpenLDAP组件

yum install -y \
openldap \
openldap-servers \
openldap-clients \
openldap-devel \
compat-openldap

默认OpenLdap服务所使用的端口为389,此端口采用明文传输数据,数据信息得不到保障。所以可以通过配置CA及结合TLS/SASL实现数据加密传输,所使用端口为636。

编译安装

yum install -y \
libtool-ltdl \
libtool-ltdl-devel \
gcc \
openssl \
openssl-devel

重新生成配置文件

slapadd -n 0 -F /etc/openldap/slapd.d -l /etc/openldap/slapd.ldif

Openldap依赖的相关软件:

3 ldap参数配置优化。

3.1 配置ldap管理员密码参数

  • /etc/openldap/slapd.d/*/etc/openldap/slapd.ldif配置信息生成的文件,每修改一次配置信息,这里的东西就要重新生成。
  • /var/lib/ldap/*:OpenLDAP的数据文件。
  • /usr/share/openldap-servers/DB_CONFIG.example:模板数据库配置文件。
  • /usr/share/openldap-servers/slapd.ldif:默认模板配置文件。

默认OpenLdap服务所使用的端口为389,此端口采用明文传输数据,数据信息得不到保障。所以可以通过配置CA及结合TLS/SSL实现数据加密传输,所使用端口为636

cp /usr/share/openldap-servers/slapd.ldif /etc/openldap/

指定密码,不提示

[root@node06 openldap]# slappasswd -s 123 
{SSHA}OHmKWcXD6YUDEPhCK9W5ut8EK2esIaNF
# 指定要搜索的后缀
olcSuffix: dc=etiantian,dc=org
# rootdn,使用这个dn可以登录服务器
olcRootDN: cn=admin,dc=etiantian,dc=org
olcDbDirectory: /var/lib/ldap
# 指定ldapserver管理员密码==
olcRootPW: {SSHA}OHmKWcXD6YUDEPhCK9W5ut8EK2esIaNF

3.2 日志及缓存参数。

# 设置日志级别,记录日志信息方便调试 stats 256(日志连接/操作/结果) 
olcLogLevel: stats

# 设置ldap可以缓存的记录数
olcDbCacheSize: 1000

# checkpoint 可以吧内存中的数据写会数据文件的操作,此设置表示每达到2048kb或者10分钟执行一次
olcDbCheckpoint: 1024 10
include: file:///etc/openldap/schema/collective.ldif   # OpenLDAP的核心schema必须
include: file:///etc/openldap/schema/corba.ldif # 
include: file:///etc/openldap/schema/cosine.ldif
include: file:///etc/openldap/schema/duaconf.ldif
include: file:///etc/openldap/schema/dyngroup.ldif
include: file:///etc/openldap/schema/inetorgperson.ldif
include: file:///etc/openldap/schema/java.ldif
include: file:///etc/openldap/schema/misc.ldif
include: file:///etc/openldap/schema/nis.ldif
include: file:///etc/openldap/schema/openldap.ldif
include: file:///etc/openldap/schema/pmi.ldif
include: file:///etc/openldap/schema/ppolicy.ldif

###3.3 授权及安全参数配置

access to dn="cn=subschema" by * read
access to 
    by self write 
    by dn subtree="ou=sysusers,dc=intra,dc=qq,dc=com" read
    by anonymous auth

权限管理的说明


提示:

参数在文件中的先后位置不能随意动。

空行和以“#”开头的注释行将被忽略。如果一行以空格开头,它将被认为是接着前一行的(即使前一行是注释)。


官方配置文件详解:

3.4 配置syslog记录ldap服务日志配置syslog

记录ldap服务日志,默认级别为256;

echo 'local4.*          /var/log/slapd.log' >> /etc/rsyslog.conf

local4.*                /var/log/slapd.log

3.5 配置LDAP数据库路径


注意

slapd.conf中设定了LDAP数据库格式为hdb,存储路径/var/1ib/ldap


cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

chown ldap.ldap /var/lib/ldap/DB_CONFIG
chmod 700 /var/lib/ldap/DB_CONFIG

3.6 查看OpenLDAP 数据库

此时要查看OpenLDAP数据库,会发现没有内容

ldapsearch -LLL -x -W -H ldap://10.0.0.4 -D "cn=admin,dc=seal,dc=com" -b "dc=seal,dc=com" "(uid=*)"

Enter LDAP Password: 
No such object (32)

Reference

4 为OpenLDAP初始化数据

通过OpenLDAP客户端工具来初始化数据经过长期的使用、教学比对,第三种方法比较适合初学者学习掌握,不过本文以最简单的不好理解的方法讲解。

为ldap master 初始化基础用户数据。

通过事先准备好的文件初始化数据。

cat << EOF | ldapadd -x -H ldaps://10.0.0.4 -D "cn=admin,dc=seal,dc=com" -W 
dn: dc=seal,dc=com
objectClass: organization
objectClass: dcObject
dc: seal
o: seal

dn: ou=People,dc=seal,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=group,dc=seal,dc=com
objectClass: organizationalUnit
ou: group

dn: cn=tech,ou=group,dc=seal,dc=com
objectClass: posixGroup
gidNumber: 10001
cn: tech
EOF

cat << EOF | ldapadd -x -H ldaps://10.0.0.4 -D "cn=admin,dc=seal,dc=com" -W 
dn: cn=test_admin,ou=Group,dc=seal,dc=com
objectClass: groupOfUniqueNames
cn: test_admin
uniqueMember: cn=test_admin,ou=Group,dc=seal,dc=com
EOF

一个条目的完整信息

cat << EOF | ldapadd -x -H ldaps://10.0.0.4 -D "cn=admin,dc=seal,dc=com" -W 
dn: uid=user01,ou=People,dc=seal,dc=com
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
homeDirectory: /home/user01
loginShell: /bin/bash
uid: user01
cn: user01
uidNumber: 10004
gidNumber: 10001
userPassword: {SSHA}hJpIIVxj1qS9g05qUlgG+o7MO14EXbFQ
sn: user01
givenName: user01

dn: uid=oldgirl,ou=People,dc=seal,dc=com
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
homeDirectory: /home/oldgirl
loginShell: /bin/bash
uid: oldgirl
cn: oldgirl
userPassword: {SSHA}2pvE4C6xy8dkmW2aD/eEocVajg8BujWW
uidNumber: 10005
gidNumber: 10001
sn: oldgirl
EOF

提示:

  • 以上信息中ldap用户1:user01密码111,用户2:oldgirl 密码123456
  • 这些原始信息是如何获得的?

3.8.3检查初始化的ldap测试数据。

查询导入的结果:

ldapsearch -LLL -w 123 -x -H ldap://10.0.0.4 -D "cn=admin,dc=seal,dc=com" -b "dc=seal,dc=com"

ldapsearch命令参数说明

参数

说 明

-W

指定密码,交互式,不需要在命令上写密码

-w

指定密码,需要命令上指定密码

-H

ldapapi

-D

所绑定的服务器的DN,如cn=admin,dc=etiantian,dc=org

-f

-f: filename.ldif文件

-b

-b 指定查询的相对节点

-LLL

以LDIF格式打印响应,不带注释

-x

简单的认证

备份ldap数据库数据

ldapadd -x -H ldap://etiantian.org -D "cn=admin,dc=etiantian,dc=org" -W -f base.ldif >base.ldif
ldapadd -x -H ldap://etiantian.org -D "cn=admin,dc=etiantian,dc=org" -W -f test.ldif >test.ldif

ldapsearch -x -H ldaps://10.0.0.4 -W -D “cn=admin,dc=seal,dc=com” -b “dc=seal,dc=com” ‘(uid=user1)’