作者:瀚高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 |
更多详细信息请登录【瀚高技术支持平台】查看https://support.highgo.com/#/index/docContentHighgo/a6bbbf6a009148ea