centos 7 安装 openldap

centos 7 安装 openldap

openldap 相关名称解释及CentOS 7 配置openldap过程。

ldap的信息模型

LDAP的信息模型是建立在”条目”(entries)的基础上。一个条目是一些属性的集合,并且具有一个全局唯一的”可区分名称”DN,一个条目可以通过DN来引用。每一个条目的属性具有一个类型和一个或者多个值。类型通常是容易记忆的名称,比如”cn”是通用名称(common name) ,或者”mail”是电子邮件地址。条目的值的语法取决于属性类型。比如,cn属性可能具有一个值”Babs Jensen” ,一个mail属性可能包含 “Babs@example.com“。

ldap的objectClass

LDAP通过属性objectClass来控制哪一个属性必须出现或允许出现在一个条目中,它的值决定了该条目必须遵守的模式规则,可以理解为关系数据库的表结构。

objectClasss 含义
olcGlobal 全局配置文件类型,主要是cn=config.ldif
top 顶层对象
organization 组织,比如公司名称,顶层对象
organizationalUnit 重要,一个目录节点,通常用来分组,类似Linux文件系统中的子目录,组织单位可以包含其它各类对象
inetOrgPerson 重要,我们真正的用户节点为类型,person类型,叶子节点
groupOfNames 重要,分组的group类型,标记一个group节点
groupOfUniqueNames 分组,unique名称,每个用户是unique节点
olcModuleList 配置块的对象

ldap常用关键字列表

ldap的entry是由各种字段组成,可以理解为关系数据库的一行,每个entry对应关系数据库中的一行。

|关键字|英文全称|含义|
|:—|:—|
|dc|Domain Component|域名的部分,其格式是将完整域名分成几部分,如域名example.com变成dc=example,dc=com|
|uid|User Id|用户名,如“tom”|
|ou|Organization Unit|组织单位,类似Linux文件系统中的子目录,它是一个窗口对象,组织单位可以包含其它各类对象|
|cn|Common Name|公共名称,比如”Thomas Johansson”|
|sn|surname|姓,如“Johansson”|
|dn|Distinguished Name|唯一辨识名,类似Linux文件系统中的绝对路径,每个对象都有一个唯一的名称,如”uid=tom,ou=market,dc=example,dc=com”,在一个目录树中DN是唯一的。|
|rdn|Relative dn|相对辨识名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,比如“uid=tom”或”cn=Thomas”|
|c|Country|国家,如“CN”或“US”等|
|o|Organization|组织名,比如“Example,Inc.”|
|dc|olcDatabase| {mappings}| {config}|
|olcRootDN| root dn |
|olcRootPW| root password |

centos 7 安装 openldap

在centos 7中使用yum安装openldap,并安装phpldapadmin管理工具。

安装openldap

yum安装openldap。

1
yum install openldap openldap-clients openldap-servers migrationtools

配置openldap

配置前的准备工作:

  • 关闭selinux

    1
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
  • 复制数据库模版

    1
    2
    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
    chown -R ldap:ldap /var/lib/ldap/
  • 启动slapd服务

    1
    2
    systemctl start slapd
    systemctl enable slapd # 开启加载服务

    如果启动失败,一般提示证书相关,可以如下操作:

    1
    2
    3
    4
    5
    6
    7
    cd /etc/openldap/certs
    rm ./*
    # 重新生成证书
    bash /usr/libexec/openldap/create-certdb.sh
    bash /usr/libexec/openldap/generate-server-cert.sh
    # 再次重启
    systemctl start slapd

    启动失败的第二个问题,hostname,手动添加/etc/hosts一行记录,主机IP+主机名即可。

  • 防火墙放通openldap服务

    1
    2
    3
    firewall-cmd --permanent --add-service=ldap
    firewall-cmd --permanent --add-service=http
    firewall-cmd --complete-reload

生成密码

使用slappasswd生成密码:

1
2
slappasswd -s your_passwd
{SSHA}m0EtqWHBpXh0O88k8+FpNx6L5doX2jVe

记住生成的密码。

新增修改密码文件

可以在家目录下创建一个ldif,创建ldif文件操作。示例如下:

1
2
3
4
5
vim changepwd.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}m0EtqWHBpXh0O88k8+FpNx6L5doX2jVe

以上ldif文件的内容解释:

  • 第一行指定操作的数据库,这里是olcDatabase={0}config
  • 第二行指定操作类型为modify
  • 第三行添加olcRootPW属性,值就是我们生成的密码hash。

执行导入命令,修改ldap配置文件,通过-f执行文件:

1
ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif

导入schema文件

这些schema文件位于/etc/openldap/schema/目录中,schema控制着条目拥有哪些对象、类型和属性,需要自行选择需要的进行导入。

1
2
3
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

修改域名

添加一个域名文件,编辑你的域名信息,管理员为admin。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vim domain.ldif

dn: dc=example,dc=com
changetype: add
objectclass: top
objectclass: domain
dc: example

dn: ou=People,dc=example,dc=com
changetype: add
objectclass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=com
changetype: add
objectclass: top
objectclass: organizationalUnit
ou: Group

添加base.ldif文件,导入:

1
ldapadd -x -D cn=admin,dc=example,dc=com -f domain.ldif

安装phpldapadmin

ldap安装好后,可以安装web管理界面phpldapadmin。centos 7 默认的源中是php5。如果是php7,会有报错。

1
yum install phpldapadmin

修改httpd配置

修改apache的phpldapadmin配置文件,配置外网访问。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vim /etc/httpd/conf.d/phpldapadmin.conf
# 配置示例,更改Require行。
#
# Web-based tool for managing LDAP servers
#

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order Deny,Allow
Allow from 127.0.0.1
</IfModule>
</Directory>

修改配置用DN登录phpldapadmin

修改配置文件/etc/phpldapadmin/config.php,去掉注释修改以下配置行,允许我们使用外部dn登录:

1
2
$servers->setValue('login','attr','dn');
// $servers->setValue('login','anon_bind',true);

启动apache

启动httpd服务和设置开机自启动。

1
2
3
4
5
6
systemctl start httpd
systemctl enable httpd
# 防火墙放通httpd
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --complete-reload

登录phpldapadmin

使用浏览器访问http://server_ip/phpldapadmin。即可打开登录测试。打开后输入cn=admin,dc=example,dc=com,输入你之前设置的root密码,即可登录。


centos 7 安装 openldap
https://ywmy.xyz/2022/04/30/CentOS-7-安装-openldap/
作者
ian
发布于
2022年4月30日
许可协议