LDAP环境搭建和管理

作者:瀚高PG实验室 (Highgo PG Lab)

目录

环境

文档用途

详细信息

环境

系统平台:Linux x86-64 Red Hat Enterprise Linux 7

版本:5.6.5

文档用途

服务器端配置

1. 服务器配置

1.1 关闭防火墙和selinux

关闭防火墙

systemctl disable firewalld.service

systemctl stop firewalld.service

 

关闭seLinux

sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

setenforce 0

2.ldap安装

yum install -y openldap  openldap-servers  openldap-clients

cp /usr/share/openldap-servers/DB_CONFIG.example

/var/lib/ldap/DB_CONFIG

# 授权给ldap用户,此用户yum安装时便会自动创建

chown -R ldap. /var/lib/ldap/DB_CONFIG

3.启动服务

启动服务

systemctl start slapd

systemctl enable slapd

检查状态

systemctl status slapd

4.验证ldap启动信息

[root@patroni1 cn=config]#  netstat -ntupl | grep LISTEN | grep -i 389

tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      117152/slapd        

tcp6       0      0 :::389                  :::*                    LISTEN      117152/slapd  

5.配置ldap

从openldap2.4.23版本开始,所有配置都保存在/etc/openldap/slapd.d目录下的cn=config文件夹内,不再使用slapd.conf作为配置文件。配置文件的后缀为 ldif,且每个配置文件都是通过命令自动生成的,任意打开一个配置文件,在开头都会有一行注释,说明此为自动生成的文件,请勿编辑,使用ldapmodify命令进行修改

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.

 

  安装openldap后,会有三个命令用于修改配置文件,分别为ldapadd, ldapmodify, ldapdelete,顾名思义就是添加,修改和删除。而需要修改或增加配置时,则需要先写一个ldif后缀的配置文件,然后通过命令将写的配置更新到slapd.d目录下的配置文件中去,完整的配置过程如下,

 

注意:所有的配置文件不要在/etc/openldap/slapd.d/cn=config/下配置

5.1 生成密码

[root@patroni1 config]# slappasswd -s 123456

{SSHA}RRdz9k1wv+cbg8RKbKvI/NCm7LKTT8sk

5.2 修改密码

先创建修改密码文件

[root@patroni1 ~]# cat changepwd.ldif

dn: olcDatabase={0}config,cn=config

changetype: modify

replace: olcRootPW

olcRootPW: {SSHA}RRdz9k1wv+cbg8RKbKvI/NCm7LKTT8sk

 

 

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

[root@patroni2 cn=config]# ldapadd -Y EXTERNAL -H ldapi:/// -f  hg.ldif

图片.png

查看olcDatabase={0}config内容,新增了一个olcRootPW项。

图片.png

5.3导入schema

# 我们需要向 LDAP 中导入一些基本的 Schema。这些 Schema 文件位于 /etc/openldap/schema/ 目录中,schema控制着条目拥有哪些对象类和属性,可以自行选择需要的进行导入,

# 依次执行下面的命令,导入基础的一些配置,我这里将所有的都导入一下,其中core.ldif是默认已经加载了的,不用导入

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

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif

5.4修改域名

创建域名文件

[root@patroni1 ~]# cat changedomain.ldif

dn: olcDatabase={1}monitor,cn=config

changetype: modify

replace: olcAccess

olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=admin,dc=highgo,dc=com" read by * none

 

dn: olcDatabase={2}hdb,cn=config

changetype: modify

replace: olcSuffix

olcSuffix: dc=highgo,dc=com

 

dn: olcDatabase={2}hdb,cn=config

changetype: modify

replace: olcRootDN

olcRootDN: cn=admin,dc=highgo,dc=com

 

dn: olcDatabase={2}hdb,cn=config

changetype: modify

replace: olcRootPW

olcRootPW: {SSHA}RRdz9k1wv+cbg8RKbKvI/NCm7LKTT8sk

 

dn: olcDatabase={2}hdb,cn=config

changetype: modify

replace: olcAccess

olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=highgo,dc=com" write by anonymous auth by self write by * none

olcAccess: {1}to dn.base="" by * read

olcAccess: {2}to * by dn="cn=admin,dc=highgo,dc=com" write by * read

 

执行修改:

[root@patroni1 cn=config]# ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif

图片.png

5.5创建目录

到此,配置修改完了,在上述基础上,我们来创建一个叫做 highgo company 的组织,并在其下创建一个 admin 的组织角色(该组织角色内的用户具有管理整个 LDAP 的权限)和 People 和 Group 两个组织单元:

 

[root@patroni1 ~]# cat base.ldif

dn: dc=highgo,dc=com

objectClass: top

objectClass: dcObject

objectClass: organization

o: Highgo Company

dc: highgo

 

dn: cn=admin,dc=highgo,dc=com

objectClass: organizationalRole

cn: admin

 

dn: ou=People,dc=highgo,dc=com

objectClass: organizationalUnit

ou: People

 

dn: ou=Group,dc=highgo,dc=com

objectClass: organizationalRole

cn: Group

 

# 执行命令,添加配置, 这里要注意修改域名为自己配置的域名,然后需要输入上面我们生成的密码

[root@patroni1 cn=config]# ldapadd -x -D cn=admin,dc=highgo,dc=com -W -f base.ldif       

Enter LDAP Password:

adding new entry "dc=highgo,dc=com"

 

通过以上的所有步骤,我们就设置好了一个 LDAP 目录树:其中基准 dc=highgo,dc=com 是该树的根节点,其下有一个管理域 cn=admin,dc=highgo,dc=com 和两个组织单元 ou=People,dc=highgo,dc=com 及 ou=Group,dc=highgo,dc=com。

5.6 开启日志功能

 

1.创建日志文件

mkdir -p /var/log/slapd

chown ldap:ldap /var/log/slapd/

touch /var/log/slapd/ldap.log

chown ldap. /var/log/slapd/ldap.log

 

[root@patroni1 ~]# vim loglevel.ldif

 

dn: cn=config

changetype: modify

replace: olcLogLevel

olcLogLevel: stats

 

 

执行修改

[root@patroni1 ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f loglevel.ldif

 

2.启动 LDAP 日志记录

配置Rsyslog以将LDAP事件记录到日志文件/var/log/slapd/ldap.log

# vim /etc/rsyslog.conf# 文件末尾增加

local4.* /var/log/slapd/ldap.log 

3. 重启 rsyslog 服务

systemctl restart rsyslog

 

5.7配置tls

1、生成ssl数字证书并签名。

若有签名的ssl证书,则只需要把证书拷贝到相应目录下,并在配置文件中写明路径即可。

若没有,可以使用以下步骤生成自签名的证书:

cd /etc/pki/CA

(1)生成根秘钥:

openssl genrsa -out private/cakey.pem 2048

 

(2)生成自签名的根证书:

openssl req -new -x509 -key private/cakey.pem -out cacert.pem  -days 3650

(-days 表示根证书的有效期,缺省-days时,默认有效期是30天)

 

按提示填写(不要填空的):

Country Name (2 letter code) [XX]:cn

State or Province Name (full name) []:sd

Locality Name (eg, city) [Default City]:jn

Organization Name (eg, company) [Default Company Ltd]:hg

Organizational Unit Name (eg, section) []:yf

Common Name (eg, your name or your server's hostname) []:root

Email Address []:

 

 

(3)初始化CA:

mkdir private newcerts

touch newcerts index.txt serial

echo "00" > serial

(4)生成ldap服务器的秘钥和根证书

mkdir cacerts

cd /etc/pki/CA/cacerts

 

生成服务器的私钥

openssl genrsa -out server.key

 

为ldap生成证书签署请求

openssl req -new -key server.key -out server.csr

 

按照提示填写,其中Country Name、State or Province Name、Organization Name需要与根证书一致:

Country Name (2 letter code) [XX]:cn

State or Province Name (full name) []:sd

Locality Name (eg, city) [Default City]:jn

Organization Name (eg, company) [Default Company Ltd]:hg

Organizational Unit Name (eg, section) []:yf

Common Name (eg, your name or your server's hostname) []:192.168.10.47 //填写服务器IP地址

Email Address []:

 

ca根据请求签发证书,得到.crt证书文件

openssl ca -in server.csr -out server.crt

 

2、拷贝根证书和服务器证书到ldap配置目录

cd /etc/openldap/

mkdir cacerts

cp /etc/pki/CA/cacert.pem /etc/openldap/cacerts

cp /etc/pki/CA/cacerts/*  /etc/openldap/cacerts

 

设定权限:

chown -R ldap /etc/openldap/cacerts/server.crt

chmod 644 /etc/openldap/cacerts/server.crt

chown -R ldap /etc/openldap/cacerts/server.key

chmod 400 /etc/openldap/cacerts/server.key

 

chown -R ldap /etc/openldap/cacerts/cacert.pem

chmod 644 /etc/openldap/cacerts/cacert.pem

 

2.导入证书到配置文件

[root@patroni1 cacerts]# vim certs.ldif

dn: cn=config

changetype: modify

replace: olcTLSCertificateFile

olcTLSCertificateFile: /etc/openldap/cacerts/cacert.pem

 

dn: cn=config

changetype: modify

replace: olcTLSCACertificateFile

olcTLSCACertificateFile: /etc/openldap/cacerts/server.crt

 

dn: cn=config

changetype: modify

replace: olcTLSCertificateKeyFile

olcTLSCertificateKeyFile: /etc/openldap/cacerts/server.key

3. 导入配置

ldapmodify -Y EXTERNAL  -H ldapi:/// -f certs.ldif

开启系统加密支持

vim /etc/sysconfig/slapd

SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"

 

5、重启

systemctl  restart  slapd.service

 

netstat -ntulp |grep slapd

查看636端口是否启动(636为加密认证端口)

 

 

# 配置认证方式

vim /etc/openldap/ldap.conf

TLS_REQCERT  allow

 

4.测试 StartTLS

[root@patroni1 openldap]# ldapsearch -x -ZZ                

# extended LDIF

#

# LDAPv3

# base <> (default) with scope subtree

# filter: (objectclass=*)

# requesting: ALL

#

 

# search result

search: 3

result: 32 No such object

 

# numResponses: 1

[root@patroni1 openldap]# ldapsearch -x -ZZ

# extended LDIF

#

# LDAPv3

# base <> (default) with scope subtree

# filter: (objectclass=*)

# requesting: ALL

#

 

# search result

search: 3

result: 32 No such object

 

# numResponses: 1

更多详细信息请登录【瀚高技术支持平台】查看https://support.highgo.com/#/index/docContentHighgo/a6bbbf6a009148ea

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值