ldap新建用户 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
|

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

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
|

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
|
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。