2023年6月21日发(作者:)
配置Linux使⽤LDAP⽤户认证的⽅法我这⾥使⽤的是CentOS完成的LDAP⽤户管理,可能与⽹上的⼤部分教程不同,不过写出来了,那么是肯定能⽤的了,不过会有部分⽂件,忘指教。这⾥使⽤的 OPENLdap 配合 CentOS7 完成的⽤户管理,需要配置 nssswitch 、pam 和 sssd 3个服务,需要先有⼀定的了解才能完成本⽂的配置。基础配置#1.完成yum源的配置mkdir /root/backtar -Jcvf /root/back/.d-`date '+(%Y.%m.%d_%H:%M:%S)'`. /etc/.d/rm -rf /etc/.d/*curl -o /etc/.d/ /repo/rl -o /etc/yum,repos.d/ /repo/m makecache1.安装必要软件yum -y install vim bash-completion openldap-servers openldap-clients nss-pam-ldapd sssdOPENLdap服务部分配置#初始化过程就不再过多赘述,详细查询《》。1.⾸先停⽌数据库服务:systemctl stop slapd1.然后编辑⽂件:# ⾸先备份⽂件,以免⽆法复原mkdir /root/backtar -Jcvf /root/back/-`date '+(%Y.%m.%d_%H:%M:%S)'`. /etc/openldap/slapd.d/tar -Jcvf /root/back/-`date '+(%Y.%m.%d_%H:%M:%S)'`. /var/lib/ldap/# 然后再删除配置⽂件rm -rf /etc/openldap/slapd.d/*rm -rf /var/lib/ldap/*# 复制配置⽂件到临时⽬录mkdir /root/ldapcd /root/ldap1.编写slapd的配置⽂件。这⾥的配置⽂件是从 /usr/share/openldap-servers/ 中演变⽽来的,主要修改了baseDN(suffix), OPENLDAPTLS,olcRootPW(密码由 slappasswd ⽣成,本⽂中的密码为: 123456) 和 include。# file: /root/ldap/: cn=configobjectClass: olcGlobalcn: configolcArgsFile: /var/run/openldap/cPidFile: /var/run/openldap/TLSCertificateFile: /etc/openldap/certs/TLSCertificateKeyFile: /etc/openldap/certs/TLSCACertificateFile: /etc/openldap/cacerts/: cn=schema,cn=configobjectClass: olcSchemaConfigcn: schemainclude: file:///etc/openldap/schema/clude: file:///etc/openldap/schema/clude: file:///etc/openldap/schema/clude: file:///etc/openldap/schema/: olcDatabase=frontend,cn=configobjectClass: olcDatabaseConfigobjectClass: olcFrontendConfigolcDatabase: frontenddn: olcDatabase=config,cn=configobjectClass: olcDatabaseConfigolcDatabase: configolcAccess: to *
by ="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
by * nonedn: olcDatabase=monitor,cn=configobjectClass: olcDatabaseConfigolcDatabase: monitorolcAccess: to *
by ="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
by ="cn=Manager,dc=black,dc=com" read
by * nonedn: olcDatabase=hdb,cn=configobjectClass: olcDatabaseConfigobjectClass: olcHdbConfigolcDatabase: hdbolcSuffix: dc=black,dc=comolcRootDN: cn=Manager,dc=black,dc=comolcRootPW: {SSHA}l1vBI/HOMKLEiQZgcm3Co+hFQI68rH1QolcDbDirectory: /var/lib/ldapolcDbIndex: objectClass eq,presolcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub1.配置OPENSSL的证书。为openldap服务器的加密隧道使⽤。# ⾸先是创建CA服务的证书⽂件cd /etc/pki/CAopenssl genrsa -out private/ 2048openssl req -new -x509 -key private/ -out # 这⾥的证书创建过程就省略不写了。# 不过需要注意的是,必须要保证后⾯服务器证书申请的开头部分必须与证书开头相同,否则⽆法通过CA签发证书。touch o "01" > serial# 然后申请签发服务器证书cd /etc/openldap/certs/openssl genrsa -out 2048openssl ca -in -out -days 365# 复制CA证书到指定位置mkdir /etc/openldap/cacertscp /etc/pki/CA/ /etc/openldap/cacerts/1.根据配置⽣成服务器的配置⽂件slapadd -F "/etc/openldap/slapd.d/" -b "cn=config" -l # 这⾥还需要注意⽂件属主还是root的,需要改回为openldapchown -R ldap:ldap /etc/openldap/slapd.d/*# 然后再开启服务即可systemctl start slapd_#################### 100.00% eta none elapsed none fast! 1.初始化数据库dn: dc=black,dc=comdc: blackobjectClass: topobjectClass: domaindn: cn=Manager,dc=black,dc=comobjectClass: organizationalRolecn: Managerdescription: LDAP Managerdn: ou=People,dc=black,dc=comou: PeopleobjectClass: topobjectClass: organizationalUnitobjectClass: domainRelatedObjectassociatedDomain: : ou=Group,dc=black,dc=comou: GroupobjectClass: topobjectClass: organizationalUnitobjectClass: domainRelatedObjectassociatedDomain: 1.导⼊⾄数据库ldapadd -x -D "cn=Manager,dc=black,dc=com" -w 123456 -f # 将基础信息导⼊数据库。adding new entry "dc=black,dc=com" adding new entry "cn=root,dc=black,dc=com" adding new entry "ou=People,dc=black,dc=com" adding new entry "ou=Group,dc=black,dc=com"1.那么再使⽤apache directory studio来查看 服务器是否配置成功。⾸先先将防⽕墙开启firewall-cmd --add-service=ldap1.我们这⾥先导⼊⼀个⽤户⽤于后⾯的测试使⽤Linux ⽤户认证部分配置#我这⾥设计的⽤户认证和解析是这样完成的:与⽹上其他⼈写的会有所不同,需要注意。NSS服务配置#如果想使 nss 可以查询ldap,那么⾸先就需要启⽤⼀个叫 nslcd 的服务, 以下是该服务的配置⽂件。# file: /etc/d nslcdgid ldapuri ldap://127.0.0.1/base dc=black,dc=combinddn cn=Manager,dc=black,dc=combindpw 123456ssl notls_cacertdir /etc/openldap/cacerts启动服务chmod 600 /etc/stemctl start nslcdsystemctl enable nslcd配置nss# file: /etc/sswd: files ldap # 主要就是 passwd、shadow 和 group 这3⾏需要后⾯添加ldapshadow: files ldapgroup: files ldaphosts: files dns myhostnamebootparams: nisplus [NOTFOUND=return] filesethers: filesnetmasks: filesnetworks: filesprotocols: filesrpc: filesservices: files sssnetgroup: nisplus ssspublickey: nisplusautomount: files nisplus sssaliases: files nisplus测试是否可⽤:getent passwd | grep blackblack:x:1001:1001:black:/home/black:/bin/bashPAM服务配置#pam模块已经有通过SSSD认证的相关模块配置了,我们这⾥引⽤以下即可。cd /etc/pam.d/ mv system-auth{,.bak} ln -s system-auth-ac system-authPAM不⽤进⾏服务重启,直接可以使⽤sssd服务配置#针对LDAP⽤户登⼊,PAM配置会将其转发给SSSD,由SSSD来认证⽤户。下⾯就是 的配置⽂件了:# file: /etc/sssd/[domain/]autofs_provider = ldap # 配置 autofs 的提供程序为 ldapid_provider = ldap # id 的提供程序为 ldapauth_provider = ldap # 配置 auth 认证的提供程序为 ldapchpass_provider = ldap # 更改密码 操作时的对⽤应⽤cache_credentials = True # 开启缓存ldap_search_base = dc=black,dc=com # ldap 查询的base dnldap_uri = ldap://127.0.0.1/ # ldap 的 URL 路径ldap_id_use_start_tls = True # 开启 ldap 的 tls 加密。ldap_tls_reqcert = never # 不强制要求 tls 加密(这⾥可以设置为 hard 强制 TLS 加密,如果 tls ⽆法使⽤则可能导致服务失败; 由于ldap 与 sssd在同⼀台,所以不需要 tls 加密)ldap_tls_cacertdir = /etc/openldap/cacerts # ldap 服务 tls 加密信任证书(CA根证书)。[sssd]services = nss, pam, autofs # 提供的服务domains = # 设置启⽤的域[nss]homedir_substring = /home[pam][sudo][autofs][ssh][pac][ifp][secrets][session_recording]配置启动服务,并且设置开机⾃启动。chmod 600 /etc/sssd/ # 注意权限的配置,否则⽆法启动。systemctl start sssdsystmctl enable sssd测试#那么这样⽤户认证的部分就制作好了,那么现在来测试⼀下:因为配置的 system-auth ⽂件,并没有配置 ssh ⽂件,所以ssh是连接不进去的。这⾥使⽤login来测试可⾏性。 这⾥我们也能看到,⽤户时能登⼊了的,还有⼀个瑕疵就是提⽰没有家⽬录下⾯通过脚本来解决。脚本#我为这个LDAP⽤户认证写了⼀个脚本,⽅便添加⽤户。我这⾥还是要强调⼀下,CentOS虽然有提供 migrationtools ⼯具⽤于将⽤户存放⾄LDAP数据库,但是如果你把本地⽤户全都提到 LDAP 数据库,不保留本地⽤户,那么你就会发现,电脑就会⽆法重启了,所以推荐不要把UID⼩于1000的⽤户存放到 LDAP 服务器。使⽤⽅法很简单然后再测试⼀下这个添加的⽤户是否可以登⼊:总结以上所述是⼩编给⼤家介绍的配置Linux使⽤LDAP⽤户认证,希望对⼤家有所帮助,如果⼤家有任何疑问欢迎给我留⾔,⼩编会及时回复⼤家的!
2023年6月21日发(作者:)
配置Linux使⽤LDAP⽤户认证的⽅法我这⾥使⽤的是CentOS完成的LDAP⽤户管理,可能与⽹上的⼤部分教程不同,不过写出来了,那么是肯定能⽤的了,不过会有部分⽂件,忘指教。这⾥使⽤的 OPENLdap 配合 CentOS7 完成的⽤户管理,需要配置 nssswitch 、pam 和 sssd 3个服务,需要先有⼀定的了解才能完成本⽂的配置。基础配置#1.完成yum源的配置mkdir /root/backtar -Jcvf /root/back/.d-`date '+(%Y.%m.%d_%H:%M:%S)'`. /etc/.d/rm -rf /etc/.d/*curl -o /etc/.d/ /repo/rl -o /etc/yum,repos.d/ /repo/m makecache1.安装必要软件yum -y install vim bash-completion openldap-servers openldap-clients nss-pam-ldapd sssdOPENLdap服务部分配置#初始化过程就不再过多赘述,详细查询《》。1.⾸先停⽌数据库服务:systemctl stop slapd1.然后编辑⽂件:# ⾸先备份⽂件,以免⽆法复原mkdir /root/backtar -Jcvf /root/back/-`date '+(%Y.%m.%d_%H:%M:%S)'`. /etc/openldap/slapd.d/tar -Jcvf /root/back/-`date '+(%Y.%m.%d_%H:%M:%S)'`. /var/lib/ldap/# 然后再删除配置⽂件rm -rf /etc/openldap/slapd.d/*rm -rf /var/lib/ldap/*# 复制配置⽂件到临时⽬录mkdir /root/ldapcd /root/ldap1.编写slapd的配置⽂件。这⾥的配置⽂件是从 /usr/share/openldap-servers/ 中演变⽽来的,主要修改了baseDN(suffix), OPENLDAPTLS,olcRootPW(密码由 slappasswd ⽣成,本⽂中的密码为: 123456) 和 include。# file: /root/ldap/: cn=configobjectClass: olcGlobalcn: configolcArgsFile: /var/run/openldap/cPidFile: /var/run/openldap/TLSCertificateFile: /etc/openldap/certs/TLSCertificateKeyFile: /etc/openldap/certs/TLSCACertificateFile: /etc/openldap/cacerts/: cn=schema,cn=configobjectClass: olcSchemaConfigcn: schemainclude: file:///etc/openldap/schema/clude: file:///etc/openldap/schema/clude: file:///etc/openldap/schema/clude: file:///etc/openldap/schema/: olcDatabase=frontend,cn=configobjectClass: olcDatabaseConfigobjectClass: olcFrontendConfigolcDatabase: frontenddn: olcDatabase=config,cn=configobjectClass: olcDatabaseConfigolcDatabase: configolcAccess: to *
by ="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
by * nonedn: olcDatabase=monitor,cn=configobjectClass: olcDatabaseConfigolcDatabase: monitorolcAccess: to *
by ="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
by ="cn=Manager,dc=black,dc=com" read
by * nonedn: olcDatabase=hdb,cn=configobjectClass: olcDatabaseConfigobjectClass: olcHdbConfigolcDatabase: hdbolcSuffix: dc=black,dc=comolcRootDN: cn=Manager,dc=black,dc=comolcRootPW: {SSHA}l1vBI/HOMKLEiQZgcm3Co+hFQI68rH1QolcDbDirectory: /var/lib/ldapolcDbIndex: objectClass eq,presolcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub1.配置OPENSSL的证书。为openldap服务器的加密隧道使⽤。# ⾸先是创建CA服务的证书⽂件cd /etc/pki/CAopenssl genrsa -out private/ 2048openssl req -new -x509 -key private/ -out # 这⾥的证书创建过程就省略不写了。# 不过需要注意的是,必须要保证后⾯服务器证书申请的开头部分必须与证书开头相同,否则⽆法通过CA签发证书。touch o "01" > serial# 然后申请签发服务器证书cd /etc/openldap/certs/openssl genrsa -out 2048openssl ca -in -out -days 365# 复制CA证书到指定位置mkdir /etc/openldap/cacertscp /etc/pki/CA/ /etc/openldap/cacerts/1.根据配置⽣成服务器的配置⽂件slapadd -F "/etc/openldap/slapd.d/" -b "cn=config" -l # 这⾥还需要注意⽂件属主还是root的,需要改回为openldapchown -R ldap:ldap /etc/openldap/slapd.d/*# 然后再开启服务即可systemctl start slapd_#################### 100.00% eta none elapsed none fast! 1.初始化数据库dn: dc=black,dc=comdc: blackobjectClass: topobjectClass: domaindn: cn=Manager,dc=black,dc=comobjectClass: organizationalRolecn: Managerdescription: LDAP Managerdn: ou=People,dc=black,dc=comou: PeopleobjectClass: topobjectClass: organizationalUnitobjectClass: domainRelatedObjectassociatedDomain: : ou=Group,dc=black,dc=comou: GroupobjectClass: topobjectClass: organizationalUnitobjectClass: domainRelatedObjectassociatedDomain: 1.导⼊⾄数据库ldapadd -x -D "cn=Manager,dc=black,dc=com" -w 123456 -f # 将基础信息导⼊数据库。adding new entry "dc=black,dc=com" adding new entry "cn=root,dc=black,dc=com" adding new entry "ou=People,dc=black,dc=com" adding new entry "ou=Group,dc=black,dc=com"1.那么再使⽤apache directory studio来查看 服务器是否配置成功。⾸先先将防⽕墙开启firewall-cmd --add-service=ldap1.我们这⾥先导⼊⼀个⽤户⽤于后⾯的测试使⽤Linux ⽤户认证部分配置#我这⾥设计的⽤户认证和解析是这样完成的:与⽹上其他⼈写的会有所不同,需要注意。NSS服务配置#如果想使 nss 可以查询ldap,那么⾸先就需要启⽤⼀个叫 nslcd 的服务, 以下是该服务的配置⽂件。# file: /etc/d nslcdgid ldapuri ldap://127.0.0.1/base dc=black,dc=combinddn cn=Manager,dc=black,dc=combindpw 123456ssl notls_cacertdir /etc/openldap/cacerts启动服务chmod 600 /etc/stemctl start nslcdsystemctl enable nslcd配置nss# file: /etc/sswd: files ldap # 主要就是 passwd、shadow 和 group 这3⾏需要后⾯添加ldapshadow: files ldapgroup: files ldaphosts: files dns myhostnamebootparams: nisplus [NOTFOUND=return] filesethers: filesnetmasks: filesnetworks: filesprotocols: filesrpc: filesservices: files sssnetgroup: nisplus ssspublickey: nisplusautomount: files nisplus sssaliases: files nisplus测试是否可⽤:getent passwd | grep blackblack:x:1001:1001:black:/home/black:/bin/bashPAM服务配置#pam模块已经有通过SSSD认证的相关模块配置了,我们这⾥引⽤以下即可。cd /etc/pam.d/ mv system-auth{,.bak} ln -s system-auth-ac system-authPAM不⽤进⾏服务重启,直接可以使⽤sssd服务配置#针对LDAP⽤户登⼊,PAM配置会将其转发给SSSD,由SSSD来认证⽤户。下⾯就是 的配置⽂件了:# file: /etc/sssd/[domain/]autofs_provider = ldap # 配置 autofs 的提供程序为 ldapid_provider = ldap # id 的提供程序为 ldapauth_provider = ldap # 配置 auth 认证的提供程序为 ldapchpass_provider = ldap # 更改密码 操作时的对⽤应⽤cache_credentials = True # 开启缓存ldap_search_base = dc=black,dc=com # ldap 查询的base dnldap_uri = ldap://127.0.0.1/ # ldap 的 URL 路径ldap_id_use_start_tls = True # 开启 ldap 的 tls 加密。ldap_tls_reqcert = never # 不强制要求 tls 加密(这⾥可以设置为 hard 强制 TLS 加密,如果 tls ⽆法使⽤则可能导致服务失败; 由于ldap 与 sssd在同⼀台,所以不需要 tls 加密)ldap_tls_cacertdir = /etc/openldap/cacerts # ldap 服务 tls 加密信任证书(CA根证书)。[sssd]services = nss, pam, autofs # 提供的服务domains = # 设置启⽤的域[nss]homedir_substring = /home[pam][sudo][autofs][ssh][pac][ifp][secrets][session_recording]配置启动服务,并且设置开机⾃启动。chmod 600 /etc/sssd/ # 注意权限的配置,否则⽆法启动。systemctl start sssdsystmctl enable sssd测试#那么这样⽤户认证的部分就制作好了,那么现在来测试⼀下:因为配置的 system-auth ⽂件,并没有配置 ssh ⽂件,所以ssh是连接不进去的。这⾥使⽤login来测试可⾏性。 这⾥我们也能看到,⽤户时能登⼊了的,还有⼀个瑕疵就是提⽰没有家⽬录下⾯通过脚本来解决。脚本#我为这个LDAP⽤户认证写了⼀个脚本,⽅便添加⽤户。我这⾥还是要强调⼀下,CentOS虽然有提供 migrationtools ⼯具⽤于将⽤户存放⾄LDAP数据库,但是如果你把本地⽤户全都提到 LDAP 数据库,不保留本地⽤户,那么你就会发现,电脑就会⽆法重启了,所以推荐不要把UID⼩于1000的⽤户存放到 LDAP 服务器。使⽤⽅法很简单然后再测试⼀下这个添加的⽤户是否可以登⼊:总结以上所述是⼩编给⼤家介绍的配置Linux使⽤LDAP⽤户认证,希望对⼤家有所帮助,如果⼤家有任何疑问欢迎给我留⾔,⼩编会及时回复⼤家的!
发布评论