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

2025-05-27 0 95

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

基础配置#

1.完成yum源的配置

?

1

2

3

4

5

6
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.安装必要软件

?

1
yum -y install vim bash-completion openldap-servers openldap-clients nss-pam-ldapd sssd

OPENLdap服务部分配置#

初始化过程就不再过多赘述,详细查询《OPENLDAP 服务搭建和后期管理》。

1.首先停止数据库服务:

systemctl stop slapd

1.然后编辑文件:

?

1

2

3

4

5

6

7

8

9

10
# 首先备份文件,以免无法复原

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。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43
# 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服务器的加密隧道使用。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
# 首先是创建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.根据配置生成服务器的配置文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34
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.导入至数据库

?

1

2

3

4

5
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

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

1.我们这里先导入一个用户用于后面的测试使用

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

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

Linux 用户认证部分配置#

我这里设计的用户认证和解析是这样完成的:

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

与网上其他人写的会有所不同,需要注意。

NSS服务配置#

如果想使 nss 可以查询ldap,那么首先就需要启用一个叫 nslcd 的服务, 以下是该服务的配置文件。

?

1

2

3

4

5

6

7

8

9
# 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

启动服务

?

1

2

3
chmod 600 /etc/nslcd.conf

systemctl start nslcd

systemctl enable nslcd

配置nss

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
# 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

测试是否可用:

?

1

2
getent passwd | grep black

black​:x:1001:1001:black:/home/black:/bin/bash

PAM服务配置#

pam模块已经有通过SSSD认证的相关模块配置了,我们这里引用以下即可。

?

1

2

3
cd /etc/pam.d/

mv system-auth{,.bak}

ln -s system-auth-ac system-auth

PAM不用进行服务重启,直接可以使用

sssd服务配置#

针对LDAP用户登入,PAM配置会将其转发给SSSD,由SSSD来认证用户。下面就是sssd.conf 的配置文件了:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25
# 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]

配置启动服务,并且设置开机自启动。

?

1

2

3
chmod 600 /etc/sssd/sssd.conf # 注意权限的配置,否则无法启动。

systemctl start sssd

systmctl enable sssd

测试#

那么这样用户认证的部分就制作好了,那么现在来测试一下:
因为配置的 system-auth 文件,并没有配置 ssh 文件,所以ssh是连接不进去的。这里使用login来测试可行性。

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

这里我们也能看到,用户时能登入了的,还有一个瑕疵就是提示没有家目录下面通过脚本来解决。

脚本#

我为这个LDAP用户认证写了一个脚本,方便添加用户。我这里还是要强调一下,CentOS虽然有提供 migrationtools 工具用于将用户存放至LDAP数据库,但是如果你把本地用户全都提到 LDAP 数据库,不保留本地用户,那么你就会发现,电脑就会无法重启了,所以推荐不要把UID小于1000的用户存放到 LDAP 服务器。

注:该脚本必须在搭建好上述环境后才可使用,其余环境可能有未知问题。
脚本放在gitee上了。https://gitee.com/somata/script/blob/master/ldap_adduser.sh

使用方法很简单

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

然后再测试一下这个添加的用户是否可以登入:

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

总结

以上所述是小编给大家介绍的配置Linux使用LDAP用户认证,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

原文链接:https://www.cnblogs.com/somata/p/LinuxLDAPUserAuthentication.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 配置Linux使用LDAP用户认证的方法 https://www.kuaiidc.com/64109.html

相关文章

发表评论
暂无评论