LDAP服务(单点,主从,双主部署)

     最近公司的LDAP服务器同步出现故障了,很多的服务都是连接ldap进行验证的,接着重新修复的机会写一下这个文档,LDAP基础的知识和实现我就不讲了,这次只写怎么部署和用的,那么废话不多说,上干货。

基础设计

服务器名称操作系统IP地址
LDAP1Centos710.1.1.5
LDAP2Centos710.1.1.6

ldap服务需要使用CA服务签发的证书

所以第一步进行CA的操作

CA服务器生成证书

(1)更新服务

yum install -y openssl

(2)签发CA准备工作

cd /etc/pki/CA/
touch index.txt
echo 01 > serial

cp -a /etc/pki/tls/openssl.cnf{,$(date +%F)}
sed -i "50s/cacert.pem/CA.crt/" /etc/pki/tls/openssl.cnf
sed -i "55s/cakey.pem/CA.key/" /etc/pki/tls/openssl.cnf

(3)生成私钥与证书

umask 077 ; openssl genrsa -out private/CA.key
openssl req -new -x509 -days 3650 -key private/CA.key  -subj "/C=CN/ST=LiaoNing/L=ShenYang/O=example/OU=devops/CN=ca.example.cn/emailAddress=develop.example.cn"> CA.crt
##让其有效期为十年

(4)在OpenLDAP服务端生成CSR

mkdir /root/SSL
cd /root/SSL
openssl genrsa -out ldap.key
openssl req -new -days 3650 -key ldap.key  -subj "/C=CN/ST=LiaoNing/L=ShenYang/O=linlong/OU=devops/CN=ldap.example.cn/emailAddress=develop.example.cn" -out ldap.csr
openssl ca -days 3650 -in /root/SSL/ldap.csr -out /root/SSL/ldap.crt
cd /root/SSL
cp ldap.crt /etc/openldap/certs/
cp ldap.key /etc/openldap/certs/
cp /etc/pki/CA/CA.crt /etc/openldap/certs/
cp /etc/pki/CA/private/CA.key /etc/openldap/certs/

部署LDAP单点

(1)安装服务

yum install -y openldap openldap-servers openldap-clients compat-openldap
chown -R ldap.ldap /etc/openldap/
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap.ldap /var/lib/ldap/DB_CONFIG

(2)启动并配置基础设置

systemctl restart slapd
mkdir /ldif_file
cd /ldif_file

        开启SSL功能

        cat /ldif_file/ssl.ldif

dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/openldap/certs/CA.crt
 
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/ldap.crt
 
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.key

        执行ldif配置文件

cd /ldif_file
ldapmodify -Y EXTERNAL -H ldapi:/// -f ssl.ldif
sed -i "s#ldap:\/\/\/#& ldaps:\/\/\/#" /etc/sysconfig/slapd
systemctl restart slapd

        验证


openssl verify -CAfile /etc/pki/CA/CA.crt /etc/openldap/certs/ldap.crt


会出现/etc/openldap/certs/ldapsrv.crt: OK


openssl s_client -connect $(hostname):636 -showcerts -state -CAfile /etc/openldap/certs/CA.crt

会出现SSL配置

(3)设置服务器密码

slappasswd


输入密码后会出现加密的密码举例如下
{SSHA}POLKU+dbVNqTYwFMTecd+PHwT249222
需要牢记保存好后续会用到,同时明文密码也要保存好后续会用到

(4)设置创建管理用户以及设置密码

           cat /ldif_file/pw.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}POLKU+dbVNqTYwFMTecd+PHwT249222

        执行命令

ldapadd -Y EXTERNAL -H ldapi:/// -f pw.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

(5)配置域

         cat /ldif_file/main.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=example,dc=cn" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=cn

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=example,dc=cn

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}POLKU+dbVNqTYwFMTecd+PHwT249222

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=cn" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=example,dc=cn" write by * read

 执行命令

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

(6)创建管理admin角色

        cat admin.ldif

dn: dc=example,dc=cn
objectClass: top
objectClass: dcObject
objectclass: organization
o: LinLong company
dc: example

dn: cn=admin,dc=example,dc=cn
objectClass: organizationalRole
cn: admin
description: administrator

        执行命令

ldapadd -x -D cn=admin,dc=1shitou,dc=cn -W -f admin.ldif

(7)创建用户创建组

        cat group.ldif

dn: ou=People,dc=example,dc=cn
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=cn
objectClass: organizationalUnit
ou: Group

dn: ou=Shenyang,ou=People,dc=example,dc=cn
objectClass: organizationalUnit
ou: Shenyang

dn: ou=liu,ou=People,dc=example,dc=cn
objectClass: organizationalUnit
ou: liu

执行命令


ldapadd -x -D cn=admin,dc=1shitou,dc=cn -W -f group.ldif

cat user.ldif

dn: uid=liu,ou=liu,ou=People,dc=example,dc=cn
cn: liu
userPassword: liu
displayname: 刘
gidnumber: 10002
uid: liu
uidnumber: 10002
sn: liu
homedirectory: /home/liu
mail: liu@qq.com
loginshell: /bin/bash
objectclass: top
objectClass: posixAccount
objectclass: inetOrgPerson
objectClass: shadowAccount

执行命令

ldapadd -x -D cn=admin,dc=example,dc=cn -w 明文密码 -f user.ldif

LDAP (双主)集群部署

上面的是单点的部署方式,集群双主则是按单点的方式部署两台

注意事项

(1)CA签发的证书使用一致的

(2)ldap版本一致

(3)同步时间

(4)ldap创建的组以及已有的用户一致,同步之前进行操作

部署操作

ldap集群的操作是通过syncprov.la模块实现的这是镜像同步的模块

        同步时间

yum install -y ntpdate
echo "0 * * * * /usr/sbin/ntpdate cn.pool.ntp.org" >> /var/spool/cron/root

        cat mod_syncprov.ldif

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la

        执行命令


ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.ldif
     修改OpenLDAP的配置

cat syncprov.ldif

dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100

执行 

ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif

在ldap1上

dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 0
 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldaps://对端IP地址:636
  bindmethod=simple
  binddn="cn=admin,dc=example,dc=cn"
  credentials=明文密码
  searchbase="dc=example,dc=cn"
  tls_reqcert=allow
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE
 
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
ldapmodify -Y EXTERNAL -H ldapi:/// -f master_1.ldif

cat master_2.ldif 

dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1
 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldaps://对端IP地址:636
  bindmethod=simple
  binddn="cn=admin,dc=example,dc=cn"
  credentials=明文密码
  searchbase="dc=example,dc=cn"
  tls_reqcert=allow
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE
 
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

执行

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值