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

#同步系统时间 ntpdate

#编辑/etc/hosts,添加openldap server的记录, #添加成功后,最好ping一下,看是否能解析正常


操作步骤

  1. 使用PuTTY工具,以root用户身份登录HPC集群所有节点。
  2. 执行以下命令,安装nss-pam-ldapd,pam_ldap,openldap-clients,oddjob及oddjob-mkhomedir。
    yum -y install nss-pam-ldapd pam_ldap openldap-clients oddjob oddjob-mkhomedir
  3. 修改“/etc/nslcd.conf”配置文件。
  1. 执行以下命令,打开“/etc/nslcd.conf”。vi /etc/nslcd.conf
  2. 按“i”进入编辑模式,修改以下内容。
  1. 修改文件中如下参数。
uri ldap://192.168.1.240
base dc=huawei,dc=com

OpenEuler Openldap客户端配置_配置文件


  • 192.168.1.240:表示LDAP Server的IP地址,若为HA模式,配置为LDAP Server的虚拟IP地址。
  • dc:表示服务端的域名。
  1. 添加如下内容。
ssl no
tls_cacertdir /etc/openldap/cacerts
nss_initgroups_ignoreusers ALLLOCAL

OpenEuler Openldap客户端配置_Server_02


  • 若目录“/etc/openldap/cacerts”不存在,需执行命令mkdir /etc/openldap/cacerts创建目录,否则nsld服务启动失败。
  • ALLLOCAL:表示所有的OS本地帐号不再到LDAP服务器同步用户组。
  1. 取消以下命令行的注释,并修改参数内容。
binddn cn=root,dc=huawei,dc=com
bindpw 绑定ldapserver的密码
idle_timelimit 180
timelimit 120
bind_timelimit 120

OpenEuler Openldap客户端配置_Server_03


  • cn:表示服务端管理员的用户名。
  • 密码:表示LDAP服务端管理员密码。
  • 建议“binddn”配置的用户仅对LDAP服务端用户拥有只读权限。
  1. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  2. 修改“/etc/nslcd.conf”配置文件权限。chown root /etc/nslcd.conf
    chmod 600 /etc/nslcd.conf
  1. 修改“/etc/openldap/ldap.conf”文件中的以下参数。
  1. 执行以下命令,打开“/etc/openldap/ldap.conf”。vi /etc/openldap/ldap.conf
  2. 按“i”进入编辑模式,修改以下内容。
uri ldap://192.168.1.240
base dc=huawei,dc=com
ssl no
tls_cacertdir /etc/openldap/cacerts

OpenEuler Openldap客户端配置_Server_04


192.168.1.240:表示LDAP Server的IP地址,若为HA模式,配置为LDAP Server的虚拟IP地址。

  1. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  1. 修改“/etc/pam.d/system-auth”配置文件。
  1. 执行以下命令,打开“/etc/pam.d/system-auth”。vi /etc/pam.d/system-auth
  2. 按“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

OpenEuler Openldap客户端配置_ci_05


“account sufficient”行中的1000表示LDAP用户与OS本地用户的UID分界值,用户可根据实际情况设置。

  • 当UID≥1000时,表明当前用户为LDAP用户。
  • 当UID<1000时,表明当前用户为OS本地用户。
  1. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  1. 修改“/etc/pam.d/password-auth”配置文件(这个不设置ssh无法登陆,还有/etc/pam.d/sshd文件也要加上)
  1. 执行以下命令,打开“/etc/pam.d/password-auth”。vi /etc/pam.d/password-auth
  2. 按“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

OpenEuler Openldap客户端配置_配置文件_06


“account sufficient”行中的1000表示LDAP用户与OS本地用户的UID分界值,用户可根据实际情况设置。

  • 当UID≥1000时,表明当前用户为LDAP用户。
  • 当UID<1000时,表明当前用户为OS本地用户。
  1. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  1. 修改“/etc/nsswitch.conf”配置文件,在passwd、shadow、group的files后面添加LDAP。
  1. 执行以下命令,打开“/etc/nsswitch.conf”。vi /etc/nsswitch.conf
  2. 按“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
  1. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  1. 可选:若环境操作系统为“CentOS”,则修改“/etc/sysconfig/authconfig”文件;否则跳过本步骤。
  1. 执行以下命令,打开“/etc/sysconfig/authconfig”。vi /etc/sysconfig/authconfig
  2. 按“i”进入编辑模式,修改以下内容。
USELDAP=yes
  1. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  1. 执行以下命令,开机自启动nslcd进程。
    systemctl enable nslcd.service
  2. 执行以下命令,加载nslcd进程。
    systemctl restart nslcd.service
  3. 执行以下命令,开机自启动oddjobd进程。
    systemctl enable oddjobd.service
  4. 执行以下命令,启动进程。
    systemctl restart oddjobd.service
  5. 执行以下命令,安装nscd。
    yum -y install nscd
  6. 修改“/etc/nscd.conf”配置文件。
  1. 执行以下命令,打开“/etc/nscd.conf”。vi /etc/nscd.conf
  2. 按“i”进入编辑模式,修改以下内容。
positive-time-to-live   passwd          600
positive-time-to-live   group          600
reload-count            10
  1. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  1. 执行以下命令,开机自启动nscd进程。
    systemctl enable nscd.service
  2. 执行以下命令,启动nscd进程。
    systemctl restart nscd.service
  3. 执行以下命令查询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用户。
  1. 可选:修改默认连接LDAP用户。
  1. 执行以下命令,查看配置文件“/etc/nslcd.conf”。vi /etc/nslcd.conf
  2. 输入“i”,进行编辑,修改“binddn”为LDAP连接用户,“bindpw”为LDAP连接用户密码。
binddn cn=ldapuser,dc=huawei,dc=com
bindpw 密码
  1. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  2. 执行以下命令查询Linux是否成功加入LDAP域。ldapsearch -x -h 192.168.1.240 -b dc=huawei,dc=com -D cn=ldapuser,dc=huawei,dc=com -W
    根据提示输入LDAP连接用户密码。
  1. 以LDAP中的用户donau_guest为例,进行验证是否成功加入LDAP域。
  1. 执行以下命令,查询用户donau_guest。id donau_guest
uid=1012(donau_guest) gid=1012(donau_guest) groups=1012(donau_guest)
  1. 执行以下命令切换到用户donau_guest,用户家目录一般为“/home/donau_guest”。su - donau_guest

服务端配置TLS/SSL

LDAP服务端证书可以CA签名或自签名。本节介绍如何制作自签名证书,并将证书添加至服务端配置文件,然后设置服务端启动方式,建议开启安全连接,即打开安全加密端口“636”。

操作步骤

  1. 使用PuTTY工具,以root用户身份登录LDAP Server节点(若启用HA方式,登录主LDAP Server节点)。
  2. 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。
  1. 修改目录权限及所有者。
    chown ldap:ldap -R /etc/openldap/certs/
  2. 修改配置文件,添加证书文件。
  1. 打开配置文件。vi /etc/openldap/slapd.d/cn\=config.ldif
  2. 按“i”进入编辑模式,新增以下配置项,将以前同名的变量注释或者删除掉。
olcTLSCACertificateFile: /etc/openldap/certs/ca.crt
olcTLSCertificateFile: /etc/openldap/certs/ldap.crt
olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.key
olcAllows: bind_v2
  1. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  1. 修改LDAP服务启动方式。
  • 若环境操作系统为“CentOS”、“openEuler”或“Red Hat Enterprise Linux”
  1. 打开配置文件。vi /etc/sysconfig/slapd
  2. 按“i”进入编辑模式,配置SLAPD_URLS属性,追加“ldaps:///”。
  3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  4. 重启LDAP服务器服务。systemctl restart slapd.service
  5. 启动成功,查看端口。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
…
  • 若环境操作系统为“麒麟”
  1. 打开配置文件。vi /usr/lib/systemd/system/slapd.service
  2. 按“i”进入编辑模式,配置ExecStart属性,追加“ldaps:///”。
  3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  4. 重启LDAP服务器服务。systemctl daemon-reload
    systemctl restart slapd.service
  5. 启动成功,查看端口。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
…
  1. 修改“sync-ha.ldif”文件,配置安全端口。
  1. 执行以下命令,打开“sync-ha.ldif”。vi/path/to/sync-ha.ldif

“/path/to”请按实际情况替换。

  1. 按“i”进入编辑模式。
  • “CentOS”系统和“Red Hat Enterprise Linux”系统:
  1. 修改或补充以下粗体内容。
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
-
  1. 删除以下内容。
replace: olcMirrorMode
olcMirrorMode: TRUE
  • “麒麟”系统和“openEuler”系统:
  1. 修改或补充以下粗体内容。
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
-
  1. 删除以下内容。
replace: olcMirrorMode
olcMirrorMode: TRUE
  1. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  2. 执行以下命令,配置同步。ldapmodify -Y EXTERNAL -H ldapi:/// -f /path/to/sync-ha.ldif
  3. 重启LDAP服务器服务。systemctl restart slapd.service
  1. 可选:若启用HA方式,则将LDAP Server主节点生成的LDAP证书文件“/etc/openldap/certs/ldap.csr”、“/etc/openldap/certs/ldap.key”、“/etc/openldap/certs/ldap.crt”复制一份到备节点“/etc/openldap/certs”目录下,并在备节点执行36

客户端配置证书连接服务端

前提条件

  • LDAP服务端已配置。
  • LDAP服务端已提供可用证书,例如下文中的“ldap.crt”。

TLS必须在TLS1.2版本及以上,否则可能存在安全风险。

操作步骤

  1. 将服务端证书“ldap.crt”拷贝到客户端“/etc/openldap/cacerts/”目录下。

LDAP Server安装配置后,一般会自动生成证书在“/etc/openldap/certs/ldap.crt”;若没有自生成证书,用户可以手动自生成证书或使用第三方的证书,保证服务端与客户端使用同一套证书即可。

  1. 修改“/etc/openldap/cacerts”目录权限。
    chmod -R 755 /etc/openldap/cacerts
  2. 修改“ldap.conf”文件。
  1. 打开文件。vi /etc/openldap/ldap.conf
  2. 按“i”进入编辑模式,修改如下内容。
TLS_REQCERT allow
TLS_CACERTDIR /etc/openldap/cacerts
TLS_CACERT /etc/openldap/cacerts/ldap.crt
URI ldaps://192.168.1.240

OpenEuler Openldap客户端配置_配置文件_07


192.168.1.240:表示LDAP Server节点IP,HA场景下为LDAP Server虚拟IP。

  1. 按“Esc”,输入:wq!,按“Enter”保存并退出文件编辑。
  1. 修改“/etc/hosts”配置映射关系。
  1. 打开文件。vi /etc/hosts
  2. 按“i”进入编辑模式,修改如下内容。
192.168.1.240   node240

OpenEuler Openldap客户端配置_ci_08


  • 192.168.1.240:表示LDAP Server节点IP。HA场景下,LDAP Server主备节点IP都需要配置,每个IP配置一行。
  • :表示LDAP Server的域名。
  • node240:表示LDAP Server的主机名。
  1. 按“Esc”,输入:wq!,按“Enter”保存并退出文件编辑。
  1. 修改“/etc/nslcd.conf”文件中以下参数。
  1. 打开文件。vi /etc/nslcd.conf
  2. 按“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

OpenEuler Openldap客户端配置_ci_09


:表示LDAP Server的域名,也可配置为IP或主机名。HA场景,请修改为LDAP Server虚拟IP。

  1. 按“Esc”,输入:wq!,按“Enter”保存并退出文件编辑。
  1. 执行以下命令,加载nslcd进程。
    systemctl restart nslcd.service
  2. 执行以下命令,查看nslcd进程状态。
    systemctl status nslcd.service
    显示如下内容表示进程启动成功。
Oct 22 17:52:48 ldapclient01 nslcd[49524]: version 0.8.13 starting

OpenEuler Openldap客户端配置_ci_10


ldapclient01:表示本节点主机名。

  1. 执行以下命令,查看是否连接成功。
    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
  1. 以LDAP中的用户donau_guest为例,进行验证LDAP服务是否安装成功。
  1. 执行以下命令,查询用户donau_guest。id donau_guest
uid=1012(donau_guest) gid=1012(donau_guest) groups=1012(donau_guest)
  1. 执行以下命令切换到用户donau_guest,用户家目录一般为“/home/donau_guest”。su - donau_guest
  2. 进入“/home”目录,查看是否有用户donau_guest的家目录。ll /home

若使用donau_guest用户登录失败,请参见5~8,检查配置是否正确。