配置Linux使用LDAP用户认证的方法

我这里使用的是CentOS完成的LDAP用户管理,可能与网上的大部分教程不同,不过写出来了,那么是肯定能用的了,不过会有部分文件,忘指教。
这里使用的 OPENLdap 配合 CentOS7 完成的用户管理,需要配置 nssswitch 、pam 和 sssd 3个服务,需要先有一定的了解才能完成本文的配置。

基础配置#

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用户认证,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/162554.html<

(0)
管理的头像管理
上一篇2025-03-18 18:02
下一篇 2025-03-18 18:04

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注