扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
怎么在Linux系统中使用LDAP用户认证?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
专注于为中小企业提供做网站、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业旌德免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。基础配置#
1.完成yum源的配置
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
1.安装必要软件
yum -y install vim bash-completion openldap-servers openldap-clients nss-pam-ldapd sssd
OPENLdap服务部分配置#
初始化过程就不再过多赘述,详细查询《OPENLDAP 服务搭建和后期管理》。
1.首先停止数据库服务:
systemctl stop slapd
1.然后编辑文件:
# 首先备份文件,以免无法复原 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
1.编写slapd的配置文件。这里的配置文件是从 /usr/share/openldap-servers/slapd.ldif 中演变而来的,主要修改了baseDN(suffix), OPENLDAPTLS,olcRootPW(密码由 slappasswd 生成,本文中的密码为: 123456) 和 include。
# 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=peercred,cn=external,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=black,dc=com olcRootPW: {SSHA}l1vBI/HOMKLEiQZgcm3Co+hFQI68rH1Q olcDbDirectory: /var/lib/ldap olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
1.配置OPENSSL的证书。为openldap服务器的加密隧道使用。
# 首先是创建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/
1.根据配置生成服务器的配置文件
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 _#################### 100.00% eta none elapsed none fast! Closing DB... 1.初始化数据库 dn: dc=black,dc=com dc: black objectClass: top objectClass: domain dn: cn=Manager,dc=black,dc=com objectClass: organizationalRole cn: Manager description: LDAP Manager dn: ou=People,dc=black,dc=com ou: People objectClass: top objectClass: organizationalUnit objectClass: domainRelatedObject associatedDomain: black.com dn: ou=Group,dc=black,dc=com ou: Group objectClass: top objectClass: organizationalUnit objectClass: domainRelatedObject associatedDomain: black.com
1.导入至数据库
ldapadd -x -D "cn=Manager,dc=black,dc=com" -w 123456 -f base.ldif # 将基础信息导入数据库。 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=ldap
1.我们这里先导入一个用户用于后面的测试使用
Linux 用户认证部分配置#
我这里设计的用户认证和解析是这样完成的:
与网上其他人写的会有所不同,需要注意。
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=black,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 black:x:1001:1001:black:/home/black:/bin/bash
PAM服务配置#
pam模块已经有通过SSSD认证的相关模块配置了,我们这里引用以下即可。
cd /etc/pam.d/ mv system-auth{,.bak} ln -s system-auth-ac system-auth
PAM不用进行服务重启,直接可以使用
sssd服务配置#
针对LDAP用户登入,PAM配置会将其转发给SSSD,由SSSD来认证用户。下面就是sssd.conf 的配置文件了:
# file: /etc/sssd/sssd.conf [domain/black.com] autofs_provider = ldap # 配置 autofs 的提供程序为 ldap id_provider = ldap # id 的提供程序为 ldap auth_provider = ldap # 配置 auth 认证的提供程序为 ldap chpass_provider = ldap # 更改密码 操作时的对用应用 cache_credentials = True # 开启缓存 ldap_search_base = dc=black,dc=com # ldap 查询的base dn ldap_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 = 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
测试#
那么这样用户认证的部分就制作好了,那么现在来测试一下:
因为配置的 system-auth 文件,并没有配置 ssh 文件,所以ssh是连接不进去的。这里使用login来测试可行性。
这里我们也能看到,用户时能登入了的,还有一个瑕疵就是提示没有家目录下面通过脚本来解决。
脚本#
我为这个LDAP用户认证写了一个脚本,方便添加用户。我这里还是要强调一下,CentOS虽然有提供 migrationtools 工具用于将用户存放至LDAP数据库,但是如果你把本地用户全都提到 LDAP 数据库,不保留本地用户,那么你就会发现,电脑就会无法重启了,所以推荐不要把UID小于1000的用户存放到 LDAP 服务器。
注:该脚本必须在搭建好上述环境后才可使用,其余环境可能有未知问题。
脚本放在gitee上了。https://gitee.com/somata/script/blob/master/ldap_adduser.sh
使用方法很简单
然后再测试一下这个添加的用户是否可以登入:
关于怎么在Linux系统中使用LDAP用户认证问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联成都网站设计公司行业资讯频道了解更多相关知识。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流