配置Linux使用LDAP用户认证
配置Linux使用LDAP用户认证本文首发:https://www.cnblogs.com/somata/p/LinuxLDAPUserAuthentication.html 我这里使用的是CentOS完成的LDAP用户管理,可能与网上的大部分教程不同,不过写出来了,那么是肯定能用的了,不过会有部分文件,忘指教。 基础配置
mkdir /root/back tar -Jcvf /root/back/yum.repos.d-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /etc/yum.repos.d/ rm -rf /etc/yum.repos.d/* curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum,repos.d/CentOS-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum makecache
yum -y install vim bash-completion openldap-servers openldap-clients nss-pam-ldapd sssd OPENLdap服务初始化初始化过程就不再过多赘述,详细查询《OPENLDAP 服务搭建和后期管理》。
systemctl stop slapd
# 首先备份文件,以免无法复原 mkdir /root/back tar -Jcvf /root/back/slapd.config-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /etc/openldap/slapd.d/ tar -Jcvf /root/back/slapd.data-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /var/lib/ldap/ # 然后再删除配置文件 rm -rf /etc/openldap/slapd.d/* rm -rf /var/lib/ldap/* # 复制配置文件到临时目录 mkdir /root/ldap cd /root/ldap
# file: /root/ldap/slapd.ldif dn: cn=config objectClass: olcGlobal cn: config olcArgsFile: /var/run/openldap/slapd.args olcPidFile: /var/run/openldap/slapd.pid olcTLSCertificateFile: /etc/openldap/certs/server.crt olcTLSCertificateKeyFile: /etc/openldap/certs/server.key olcTLSCACertificateFile: /etc/openldap/cacerts/cacert.pem dn: cn=schema,cn=config objectClass: olcSchemaConfig cn: schema include: file:///etc/openldap/schema/core.ldif include: file:///etc/openldap/schema/cosine.ldif include: file:///etc/openldap/schema/nis.ldif include: file:///etc/openldap/schema/inetorgperson.ldif dn: olcDatabase=frontend,cn=config objectClass: olcDatabaseConfig objectClass: olcFrontendConfig olcDatabase: frontend dn: olcDatabase=config,cn=config objectClass: olcDatabaseConfig olcDatabase: config olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none dn: olcDatabase=monitor,cn=config objectClass: olcDatabaseConfig olcDatabase: monitor olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=auth" read by dn.base="cn=Manager,dc=black,dc=com" read by * none dn: olcDatabase=hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: hdb olcSuffix: dc=black,dc=com olcRootDN: cn=Manager,dc=com olcRootPW: {SSHA}l1vBI/HOMKLEiQZgcm3Co+hFQI68rH1Q olcDbDirectory: /var/lib/ldap olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
# 首先是创建CA服务的证书文件 cd /etc/pki/CA openssl genrsa -out private/cakey.pem 2048 openssl req -new -x509 -key private/cakey.pem -out cacert.pem # 这里的证书创建过程就省略不写了。 # 不过需要注意的是,必须要保证后面服务器证书申请的开头部分必须与证书开头相同,否则无法通过CA签发证书。 touch index.txt echo "01" > serial # 然后申请签发服务器证书 cd /etc/openldap/certs/ openssl genrsa -out server.key 2048 openssl ca -in server.csr -out server.crt -days 365 # 复制CA证书到指定位置 mkdir /etc/openldap/cacerts cp /etc/pki/CA/cacert.pem /etc/openldap/cacerts/
slapadd -F "/etc/openldap/slapd.d/" -b "cn=config" -l slapd.ldif # 这里还需要注意文件属主还是root的,需要改回为openldap chown -R ldap:ldap /etc/openldap/slapd.d/* # 然后再开启服务即可 systemctl start slapd
dn: dc=black,dc=com dc: black objectClass: top objectClass: domain dn: cn=Manager,dc=com objectClass: organizationalRole cn: Manager description: LDAP Manager dn: ou=People,dc=com ou: People objectClass: top objectClass: organizationalUnit objectClass: domainRelatedObject associatedDomain: black.com dn: ou=Group,dc=com ou: Group objectClass: top objectClass: organizationalUnit objectClass: domainRelatedObject associatedDomain: black.com
ldapadd -x -D "cn=Manager,dc=com" -w 123456 -f base.ldif # 将基础信息导入数据库。
首先先将防火墙开启 firewall-cmd --add-service=ldap
NSS 、PAM 和 SSSD 配置NSS服务配置如果想使 nss 可以查询ldap,那么首先就需要启用一个叫 nslcd 的服务, 以下是该服务的配置文件。 # file: /etc/nslcd.conf uid nslcd gid ldap uri ldap://127.0.0.1/ base dc=black,dc=com binddn cn=Manager,dc=com bindpw 123456 ssl no tls_cacertdir /etc/openldap/cacerts 启动服务 chmod 600 /etc/nslcd.conf systemctl start nslcd systemctl enable nslcd 配置nss # file: /etc/nsswitch.conf passwd: files ldap # 主要就是 passwd、shadow 和 group 这3行需要后面添加ldap shadow: files ldap group: files ldap hosts: files dns myhostname bootparams: nisplus [NOTFOUND=return] files ethers: files netmasks: files networks: files protocols: files rpc: files services: files sss netgroup: nisplus sss publickey: nisplus automount: files nisplus sss aliases: files nisplus 测试是否可用: getent passwd | grep black
PAM服务配置这里PAM的配置文件我是从另一台使用authconfig-tui 配置内容拷过来的。 # file: /etc/pam.d/system-auth auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet auth [default=1 ignore=ignore success=ok] pam_localuser.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_sss.so forward_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_sss.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 [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_sss.so PAM不用进行服务重启,直接可以使用 sssd服务配置针对LDAP用户登入,PAM配置会将其转发给SSSD,由SSSD来认证用户。 # file: /etc/sssd/sssd.conf [domain/black.com] autofs_provider = ldap cache_credentials = True ldap_search_base = dc=black,dc=com id_provider = ldap auth_provider = ldap chpass_provider = ldap ldap_uri = ldap://127.0.0.1/ ldap_id_use_start_tls = True ldap_tls_reqcert = never ldap_tls_cacertdir = /etc/openldap/cacerts [sssd] services = nss,pam,autofs domains = black.com [nss] homedir_substring = /home [pam] [sudo] [autofs] [ssh] [pac] [ifp] [secrets] [session_recording] 配置启动服务,并且设置开机自启动。 chmod 600 /etc/sssd/sssd.conf # 注意权限的配置,否则无法启动。 systemctl start sssd systmctl enable sssd 测试那么这样用户认证的部分就制作好了,那么现在来测试一下: 脚本我为这个LDAP用户认证写了一个脚本,方便添加用户。我这里还是要强调一下,CentOS虽然有提供 migrationtools 工具用于将用户存放至LDAP数据库,但是如果你把本地用户全都提到 LDAP 数据库,不保留本地用户,那么你就会发现,电脑就会无法重启了,所以推荐不要把UID小于1000的用户存放到 LDAP 服务器。 然后再测试一下这个添加的用户是否可以登入: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |