LDAP安装配置(CentOS、麒麟、openEuler或Red Hat Enterprise Linux操作系统)
安装LDAP Client
通过配置文件的方式进行部署。
前提条件
已安装LDAP服务端。安装步骤请参见官方文档。
准备工作
#停止iptables,并查看iptables状态,把iptables设置为开机不启动
service iptables stop
service iptables status
systemctl disable iptables
#禁用SELinux,并查看SELinux状态
setenforce 0
getenforce
编辑/etc/sysconfig/selinux文件,将SELINUX的值改为disabled
#编辑/etc/hosts,添加openldap server的记录, #添加成功后,最好ping一下,看是否能解析正常
操作步骤
- 使用PuTTY工具,以root用户身份登录HPC集群所有节点。
- 执行以下命令,安装nss-pam-ldapd,pam_ldap,openldap-clients,oddjob及oddjob-mkhomedir。
 yum -y install nss-pam-ldapd pam_ldap openldap-clients oddjob oddjob-mkhomedir
- 修改“/etc/nslcd.conf”配置文件。
- 执行以下命令,打开“/etc/nslcd.conf”。vi /etc/nslcd.conf
- 按“i”进入编辑模式,修改以下内容。
- 修改文件中如下参数。
uri ldap://192.168.1.240
base dc=huawei,dc=com
- 192.168.1.240:表示LDAP Server的IP地址,若为HA模式,配置为LDAP Server的虚拟IP地址。
- dc:表示服务端的域名。
- 添加如下内容。
ssl no
tls_cacertdir /etc/openldap/cacerts
nss_initgroups_ignoreusers ALLLOCAL
- 若目录“/etc/openldap/cacerts”不存在,需执行命令mkdir /etc/openldap/cacerts创建目录,否则nsld服务启动失败。
- ALLLOCAL:表示所有的OS本地帐号不再到LDAP服务器同步用户组。
- 取消以下命令行的注释,并修改参数内容。
binddn cn=root,dc=huawei,dc=com
bindpw 绑定ldapserver的密码
idle_timelimit 180
timelimit 120
bind_timelimit 120
- cn:表示服务端管理员的用户名。
- 密码:表示LDAP服务端管理员密码。
- 建议“binddn”配置的用户仅对LDAP服务端用户拥有只读权限。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 修改“/etc/nslcd.conf”配置文件权限。chown root /etc/nslcd.conf
 chmod 600 /etc/nslcd.conf
- 修改“/etc/openldap/ldap.conf”文件中的以下参数。
- 执行以下命令,打开“/etc/openldap/ldap.conf”。vi /etc/openldap/ldap.conf
- 按“i”进入编辑模式,修改以下内容。
uri ldap://192.168.1.240
base dc=huawei,dc=com
ssl no
tls_cacertdir /etc/openldap/cacerts
192.168.1.240:表示LDAP Server的IP地址,若为HA模式,配置为LDAP Server的虚拟IP地址。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 修改“/etc/pam.d/system-auth”配置文件。
- 执行以下命令,打开“/etc/pam.d/system-auth”。vi /etc/pam.d/system-auth
- 按“i”进入编辑模式,用以下文件内容覆盖原有文件内容。
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        sufficient    pam_ldap.so use_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
account        required      pam_oddjob_mkhomedir.so umask=0077
auth        required      pam_deny.so
account     required      pam_unix.so broken_shadow
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so
account     required      pam_oddjob_mkhomedir.so umask=0077
password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nis nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     optional      pam_oddjob_mkhomedir.so umask=0077
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so
“account sufficient”行中的1000表示LDAP用户与OS本地用户的UID分界值,用户可根据实际情况设置。
- 当UID≥1000时,表明当前用户为LDAP用户。
- 当UID<1000时,表明当前用户为OS本地用户。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 修改“/etc/pam.d/password-auth”配置文件(这个不设置ssh无法登陆,还有/etc/pam.d/sshd文件也要加上)。
- 执行以下命令,打开“/etc/pam.d/password-auth”。vi /etc/pam.d/password-auth
- 按“i”进入编辑模式,用以下文件内容覆盖原有文件内容。
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        required      pam_faildelay.so delay=2000000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        sufficient    pam_ldap.so use_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
account        required      pam_oddjob_mkhomedir.so umask=0077
auth        required      pam_deny.so
account     required      pam_unix.so broken_shadow
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so
account     required      pam_oddjob_mkhomedir.so umask=0077
password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nis nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     optional      pam_oddjob_mkhomedir.so umask=0077
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so
“account sufficient”行中的1000表示LDAP用户与OS本地用户的UID分界值,用户可根据实际情况设置。
- 当UID≥1000时,表明当前用户为LDAP用户。
- 当UID<1000时,表明当前用户为OS本地用户。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 修改“/etc/nsswitch.conf”配置文件,在passwd、shadow、group的files后面添加LDAP。
- 执行以下命令,打开“/etc/nsswitch.conf”。vi /etc/nsswitch.conf
- 按“i”进入编辑模式,修改以下内容。
# Example:
#passwd: db files nisplus nis
#shadow: db files nisplus nis
#group: db files nisplus nis
passwd: files  sss  ldap
shadow: files  sss  ldap
group:  files  sss  ldap- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 可选:若环境操作系统为“CentOS”,则修改“/etc/sysconfig/authconfig”文件;否则跳过本步骤。
- 执行以下命令,打开“/etc/sysconfig/authconfig”。vi /etc/sysconfig/authconfig
- 按“i”进入编辑模式,修改以下内容。
USELDAP=yes- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行以下命令,开机自启动nslcd进程。
 systemctl enable nslcd.service
- 执行以下命令,加载nslcd进程。
 systemctl restart nslcd.service
- 执行以下命令,开机自启动oddjobd进程。
 systemctl enable oddjobd.service
- 执行以下命令,启动进程。
 systemctl restart oddjobd.service
- 执行以下命令,安装nscd。
 yum -y install nscd
- 修改“/etc/nscd.conf”配置文件。
- 执行以下命令,打开“/etc/nscd.conf”。vi /etc/nscd.conf
- 按“i”进入编辑模式,修改以下内容。
positive-time-to-live   passwd          600
positive-time-to-live   group          600
reload-count            10- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行以下命令,开机自启动nscd进程。
 systemctl enable nscd.service
- 执行以下命令,启动nscd进程。
 systemctl restart nscd.service
- 执行以下命令查询Linux是否成功加入LDAP域。
 ldapsearch -x -h 192.168.1.240 -b dc=huawei,dc=com(-h 192.168.1.240可以不要)
- 192.168.1.240:表示LDAP Server的IP地址,若为HA模式,配置为LDAP Server的虚拟IP地址。
- 若执行失败,可能原因为LDAP连接用户非LDAP默认用户(root)。则需要参见18修改默认连接LDAP用户。
- 可选:修改默认连接LDAP用户。
- 执行以下命令,查看配置文件“/etc/nslcd.conf”。vi /etc/nslcd.conf
- 输入“i”,进行编辑,修改“binddn”为LDAP连接用户,“bindpw”为LDAP连接用户密码。
binddn cn=ldapuser,dc=huawei,dc=com
bindpw 密码- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行以下命令查询Linux是否成功加入LDAP域。ldapsearch -x -h 192.168.1.240 -b dc=huawei,dc=com -D cn=ldapuser,dc=huawei,dc=com -W
 根据提示输入LDAP连接用户密码。
- 以LDAP中的用户donau_guest为例,进行验证是否成功加入LDAP域。
- 执行以下命令,查询用户donau_guest。id donau_guest
uid=1012(donau_guest) gid=1012(donau_guest) groups=1012(donau_guest)- 执行以下命令切换到用户donau_guest,用户家目录一般为“/home/donau_guest”。su - donau_guest
服务端配置TLS/SSL
LDAP服务端证书可以CA签名或自签名。本节介绍如何制作自签名证书,并将证书添加至服务端配置文件,然后设置服务端启动方式,建议开启安全连接,即打开安全加密端口“636”。
操作步骤
- 使用PuTTY工具,以root用户身份登录LDAP Server节点(若启用HA方式,登录主LDAP Server节点)。
- Server制作自签名证书。
 DOMAIN_NAME=
 IP_ADD=192.168.1.240
 [ ! -d /etc/openldap/certs ] && mkdir /etc/openldap/certs
 cd /etc/openldap/certs
 openssl genrsa -aes256 -out /etc/openldap/certs/ca.key 3072
 设置自定义CA私钥密码
 再次确认自定义CA私钥密码
 openssl req -x509 -new -nodes -key /etc/openldap/certs/ca.key -sha256 -subj "/C=CN/ST=GuangDong/L=ShenZhen/O=HW/OU=IT/CN=${DOMAIN_NAME}" -days 7300 -out ca.crt
 输入自定义CA私钥密码
 openssl genrsa -out /etc/openldap/certs/ldap.key 3072
 openssl req -new -subj "/C=CN/ST=GuangDong/L=ShenZhen/O=HW/OU=IT/CN=${DOMAIN_NAME}" -key /etc/openldap/certs/ldap.key -out /etc/openldap/certs/ldap.csr
 cat > /etc/openldap/certs/my-ssl.conf <<EOF
 authorityKeyIdentifier=keyid,issuer
 basicConstraints=CA:TRUE
 keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
 extendedKeyUsage = serverAuth, clientAuth
 subjectAltName = @alt_names
 [ alt_names ]
 DNS.1 = ${DOMAIN_NAME}
 IP.1 = ${IP_ADD}
 EOF
 openssl x509 -req -in /etc/openldap/certs/ldap.csr -out /etc/openldap/certs/ldap.crt -days 3650 -CAcreateserial -CA /etc/openldap/certs/ca.crt -CAkey /etc/openldap/certs/ca.key -CAserial serial -extfile /etc/openldap/certs/my-ssl.conf
 输入自定义CA私钥密码
 openssl x509 -in /etc/openldap/certs/ldap.crt -text -noout
- :表示LDAP Server的域名。
- 192.168.1.240:表示LDAP Server的IP。若为HA模式,则为LDAP Server的虚拟IP。
- 修改目录权限及所有者。
 chown ldap:ldap -R /etc/openldap/certs/
- 修改配置文件,添加证书文件。
- 打开配置文件。vi /etc/openldap/slapd.d/cn\=config.ldif
- 按“i”进入编辑模式,新增以下配置项,将以前同名的变量注释或者删除掉。
olcTLSCACertificateFile: /etc/openldap/certs/ca.crt
olcTLSCertificateFile: /etc/openldap/certs/ldap.crt
olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.key
olcAllows: bind_v2- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 修改LDAP服务启动方式。
- 若环境操作系统为“CentOS”、“openEuler”或“Red Hat Enterprise Linux”
- 打开配置文件。vi /etc/sysconfig/slapd
- 按“i”进入编辑模式,配置SLAPD_URLS属性,追加“ldaps:///”。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 重启LDAP服务器服务。systemctl restart slapd.service
- 启动成功,查看端口。netstat -anp|grep 636
 如果回显信息如下所示,则表示服务端已配置完毕。
tcp        0      0 0.0.0.0:636             0.0.0.0:*               LISTEN      1479/slapd
tcp6       0      0 :::636                  :::*                    LISTEN      1479/slapd
…- 若环境操作系统为“麒麟”
- 打开配置文件。vi /usr/lib/systemd/system/slapd.service
- 按“i”进入编辑模式,配置ExecStart属性,追加“ldaps:///”。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 重启LDAP服务器服务。systemctl daemon-reload
 systemctl restart slapd.service
- 启动成功,查看端口。netstat -anp|grep 636
 如果回显信息如上所示,则表示服务端已配置完毕。
tcp        0      0 0.0.0.0:636             0.0.0.0:*               LISTEN      1479/slapd
tcp6       0      0 :::636                  :::*                    LISTEN      1479/slapd
…- 修改“sync-ha.ldif”文件,配置安全端口。
- 执行以下命令,打开“sync-ha.ldif”。vi/path/to/sync-ha.ldif
“/path/to”请按实际情况替换。
- 按“i”进入编辑模式。
- “CentOS”系统和“Red Hat Enterprise Linux”系统:
- 修改或补充以下粗体内容。
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSyncRepl
olcSyncRepl: rid=001
             provider=ldaps://192.168.1.240:636
             bindmethod=simple
             binddn="cn=root,dc=huawei,dc=com"
             credentials=密码
             searchbase="dc=huawei,dc=com"
             tls_reqcert=allow
             scope=sub
             schemachecking=on
             type=refreshAndPersist
             retry="30 5 300 3"
             interval=00:00:05:0
olcSyncrepl: rid=002
             provider=ldaps://192.168.1.241:636
             bindmethod=simple
             binddn="cn=root,dc=huawei,dc=com"
             credentials=密码
             searchbase="dc=huawei,dc=com"
             tls_reqcert=allow
             scope=sub
             schemachecking=on
             type=refreshAndPersist
             retry="30 5 300 3"
             interval=00:00:05:00
-- 删除以下内容。
replace: olcMirrorMode
olcMirrorMode: TRUE- “麒麟”系统和“openEuler”系统:
- 修改或补充以下粗体内容。
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcSyncRepl
olcSyncRepl: rid=001
             provider=ldaps://192.168.1.240:636
             bindmethod=simple
             binddn="cn=root,dc=huawei,dc=com"
             credentials=密码
             searchbase="dc=huawei,dc=com"
             tls_reqcert=allow
             scope=sub
             schemachecking=on
             type=refreshAndPersist
             retry="30 5 300 3"
             interval=00:00:05:0
olcSyncrepl: rid=002
             provider=ldaps://192.168.1.241:636
             bindmethod=simple
             binddn="cn=root,dc=huawei,dc=com"
             credentials=密码
             searchbase="dc=huawei,dc=com"
             tls_reqcert=allow
             scope=sub
             schemachecking=on
             type=refreshAndPersist
             retry="30 5 300 3"
             interval=00:00:05:00
-- 删除以下内容。
replace: olcMirrorMode
olcMirrorMode: TRUE- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行以下命令,配置同步。ldapmodify -Y EXTERNAL -H ldapi:/// -f /path/to/sync-ha.ldif
- 重启LDAP服务器服务。systemctl restart slapd.service
- 可选:若启用HA方式,则将LDAP Server主节点生成的LDAP证书文件“/etc/openldap/certs/ldap.csr”、“/etc/openldap/certs/ldap.key”、“/etc/openldap/certs/ldap.crt”复制一份到备节点“/etc/openldap/certs”目录下,并在备节点执行3到6。
客户端配置证书连接服务端
前提条件
- LDAP服务端已配置。
- LDAP服务端已提供可用证书,例如下文中的“ldap.crt”。
TLS必须在TLS1.2版本及以上,否则可能存在安全风险。
操作步骤
- 将服务端证书“ldap.crt”拷贝到客户端“/etc/openldap/cacerts/”目录下。
LDAP Server安装配置后,一般会自动生成证书在“/etc/openldap/certs/ldap.crt”;若没有自生成证书,用户可以手动自生成证书或使用第三方的证书,保证服务端与客户端使用同一套证书即可。
- 修改“/etc/openldap/cacerts”目录权限。
 chmod -R 755 /etc/openldap/cacerts
- 修改“ldap.conf”文件。
- 打开文件。vi /etc/openldap/ldap.conf
- 按“i”进入编辑模式,修改如下内容。
TLS_REQCERT allow
TLS_CACERTDIR /etc/openldap/cacerts
TLS_CACERT /etc/openldap/cacerts/ldap.crt
URI ldaps://192.168.1.240
192.168.1.240:表示LDAP Server节点IP,HA场景下为LDAP Server虚拟IP。
- 按“Esc”,输入:wq!,按“Enter”保存并退出文件编辑。
- 修改“/etc/hosts”配置映射关系。
- 打开文件。vi /etc/hosts
- 按“i”进入编辑模式,修改如下内容。
192.168.1.240   node240
- 192.168.1.240:表示LDAP Server节点IP。HA场景下,LDAP Server主备节点IP都需要配置,每个IP配置一行。
- :表示LDAP Server的域名。
- node240:表示LDAP Server的主机名。
- 按“Esc”,输入:wq!,按“Enter”保存并退出文件编辑。
- 修改“/etc/nslcd.conf”文件中以下参数。
- 打开文件。vi /etc/nslcd.conf
- 按“i”进入编辑模式,修改如下内容。
uri ldaps://:636/ 
base dc=huawei,dc=com
ssl yes
tls_reqcert allow
tls_cacertdir /etc/openldap/cacerts
tls_cacert /etc/openldap/cacerts/ldap.crt
:表示LDAP Server的域名,也可配置为IP或主机名。HA场景,请修改为LDAP Server虚拟IP。
- 按“Esc”,输入:wq!,按“Enter”保存并退出文件编辑。
- 执行以下命令,加载nslcd进程。
 systemctl restart nslcd.service
- 执行以下命令,查看nslcd进程状态。
 systemctl status nslcd.service
 显示如下内容表示进程启动成功。
Oct 22 17:52:48 ldapclient01 nslcd[49524]: version 0.8.13 starting
ldapclient01:表示本节点主机名。
- 执行以下命令,查看是否连接成功。
 ldapsearch -b "dc=huawei,dc=com" -D "cn=root,dc=huawei,dc=com" -H ldaps://:636 -W
 根据提示输入LDAP连接用户密码。
- cn=root,dc=huawei,dc=com:连接LDAP服务端的用户名。
- :LDAP Server的域名,也可配置为IP或主机名。HA场景,请修改为LDAP Server虚拟IP。
显示如下内容表示客户端通过SSL成功连接LDAP服务器。
# search result
search: 2
result: 0 success- 以LDAP中的用户donau_guest为例,进行验证LDAP服务是否安装成功。
- 执行以下命令,查询用户donau_guest。id donau_guest
uid=1012(donau_guest) gid=1012(donau_guest) groups=1012(donau_guest)- 执行以下命令切换到用户donau_guest,用户家目录一般为“/home/donau_guest”。su - donau_guest
- 进入“/home”目录,查看是否有用户donau_guest的家目录。ll /home
 
 
                     
            
        













 
                    

 
                 
                    