统一用户登录管理认证LDAP 客户端部署

简介:

1、环境:

操作系统:CentOS release 6.8 (Final)

ip:192.168.31.155

操作系统:CentOS Linux release 7.2.1511 (Core) 

ip:192.168.31.156


2、操作过程:

客户端配置文件

2.1、CentOS5

/etc/nsswitch.conf

/etc/ldap.conf

/etc/pam.d/system-auth


2.2、CentOS6

安装依赖包:

yum install nss-pam-ldap

/etc/nslcd.conf

/etc/pam_ldap.conf

/etc/nsswitch.conf

/etc/pam.d/system-auth


操作过程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@client01-centos6 ~] # yum install nss-pam-ldapd
[root@client01-centos6 ~] # rpm -ql nss-pam-ldapd
/etc/nslcd .conf
/etc/rc .d /init .d /nslcd
/lib64/libnss_ldap .so.2
/usr/lib64/libnss_ldap .so
/usr/sbin/nslcd
/usr/share/doc/nss-pam-ldapd-0 .7.5
/usr/share/doc/nss-pam-ldapd-0 .7.5 /AUTHORS
/usr/share/doc/nss-pam-ldapd-0 .7.5 /COPYING
/usr/share/doc/nss-pam-ldapd-0 .7.5 /ChangeLog
/usr/share/doc/nss-pam-ldapd-0 .7.5 /HACKING
/usr/share/doc/nss-pam-ldapd-0 .7.5 /NEWS
/usr/share/doc/nss-pam-ldapd-0 .7.5 /README
/usr/share/doc/nss-pam-ldapd-0 .7.5 /TODO
/usr/share/man/man5/nslcd .conf.5.gz
/usr/share/man/man8/nslcd .8.gz
/var/run/nslcd
[root@client01-centos6 ~] #


备份配置文件:

1
2
3
4
5
6
[root@client01-centos6 ~] # mkdir configback
[root@client01-centos6 ~] # cp /etc/nsswitch.conf configback/nsswitch.conf.bak
[root@client01-centos6 ~] # cp /etc/pam.d/system-auth configback/system-auth.bak
[root@client01-centos6 ~] # cp /etc/nslcd.conf configback/nslcd.conf.bak
[root@client01-centos6 ~] # cp /etc/pam_ldap.conf configback/pam_ldap.conf.bak
[root@client01-centos6 ~] #


备份当前涉及的配置文件:

[root@client01-centos6 ~]# authconfig --savebackup=openldap.bak

还原当前的配置文件:

[root@client01-centos6 ~]# authconfig --restorebackup=openldap.bak

注意:authconfig命令可以很迅速的将文件恢复到初始状态,相比手动逐一修改配置文件效率要高,准确性更好

CentOS6采用图形界面配置,具体配置步骤如下:

setup--->Run Tool-->Authentication configuration--->Use LDAP && Use LDAP Authentication --->netx-->

Server: ldap:192.168.31.153

Base DN: dc=ldap,dc=com

---->OK--->quit

配置好之后重启nslcd服务即可

1
2
3
4
5
6
7
8
9
[root@client01-centos6 ~] # /etc/init.d/nslcd restart
Stopping nslcd: [  OK  ]
Starting nslcd: [  OK  ]
[root@client01-centos6 ~] # id user01
uid=1000(user01) gid=1010(Host)  groups =1010(Host)
[root@client01-centos6 ~]
[root@client01-centos6 ~]
[root@client01-centos6 ~] # grep user01 /etc/passwd
[root@client01-centos6 ~] #

用user01测试登录:

1
2
3
4
5
6
7
8
9
[root@ldapclient01 ~] # ssh user01@192.168.31.155
user01@192.168.31.155's password: 
Last login: Wed Oct 25 17:19:16 2017 from 192.168.31.154
Could not chdir to home directory  /home/user01 : No such  file  or directory
- bash -4.1$  id
uid=1000(user01) gid=1010(Host)  groups =1010(Host)
- bash -4.1$  hostname
client01-centos6
- bash -4.1$

发现登录成功,但是不能创建家目录,接下来解决创建家目录问题(用参数--enablemkhomedir)

[root@client01-centos6 ~]# authconfig --enableldap  --enableldapauth --ldapserver=ldap://192.168.31.153 --disableldaptls  --enablemkhomedir --ldapbasedn="dc=ldap,dc=com" --update

[root@client01-centos6 ~]#

提示:如果执行上述命令没效果,可以执行authconfig --restorebackup=openldap.bak恢复初始配置,再执行authconfig --enableldap  --enableldapauth --ldapserver=ldap://192.168.31.153 --disableldaptls  --enablemkhomedir --ldapbasedn="dc=ldap,dc=com" --update命令,具体操作如下:

1
2
3
4
5
6
7
8
9
[root@client01-centos6 ~] # authconfig  --restorebackup=openldap.bak
[root@client01-centos6 ~] # authconfig --enableldap  --enableldapauth --ldapserver=ldap://192.168.31.153 --disableldaptls  --enablemkhomedir --ldapbasedn="dc=ldap,dc=com" --update
Starting nslcd: [  OK  ]
[root@client01-centos6 ~] # id user01
uid=1000(user01) gid=1010(Host)  groups =1010(Host)
[root@client01-centos6 ~] #
[root@client01-centos6 ~] # getent passwd user01
user01:x:1000:1010:user01: /hoome/user01 : /bin/bash
[root@client01-centos6 ~] #

查看文件/etc/pam.d/system-auth,其中增加了如下一行:

session     optional      pam_mkhomedir.so umask=0077

再测试获取ldap账户user01:

1
2
3
4
5
6
7
8
[user01@client01-centos6 ~]$  id
uid=1000(user01) gid=1010(Host)  groups =1010(Host) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[user01@client01-centos6 ~]$  pwd
/hoome/user01
[user01@client01-centos6 ~]$ 
[user01@client01-centos6 ~]$  whoami
user01
[user01@client01-centos6 ~]$

继续登陆测试:

1
2
3
4
5
6
7
8
9
[root@ldapclient01 ~] # ssh user01@192.168.31.155
user01@192.168.31。155's password: 
Creating directory  '/home/user01' .
Last login: Wed Oct 25 17:24:43 2017 from 192.168.31.154
[user01@client01-centos6 ~]$  pwd
/home/user01
[user01@client01-centos6 ~]$  whoami
user01
[user01@client01-centos6 ~]$

说明:登陆成功,顺利创建家目录.创建家目录参数是"--enablemkhomedir"


2.3、CentOS7

/etc/nslcd.conf

/etc/pam_ldap.conf

/etc/nsswitch.conf

/etc/pam.d/system-auth


安装配置文件和相应的工具包

1
[root@client01-centos7 ~] # yum install nss-pam-ldapd setuptool


备份配置文件:

1
2
3
4
5
[root@client01-centos7 ~] # authconfig --savebackup=openldap.bak
[root@client01-centos7 ~] # id user01
id : user01: no such user
[root@client01-centos7 ~] # getent passwd user01
[root@client01-centos7 ~] # getent shadow user01


恢复配置文件:

1
[root@client01-centos7 ~] # authconfig  --restorebackup=openldap.bak


运行添加命令:

1
2
3
4
5
6
7
8
9
[root@client01-centos7 ~] # authconfig --enableldap  --enableldapauth --ldapserver=ldap://192.168.31.153 --disableldaptls  --enablemkhomedir --ldapbasedn="dc=ldap,dc=com" --update
[root@client01-centos7 ~] # getent shadow user01
user01:*:::::::0
[root@client01-centos7 ~] # getent passwd user01
user01:x:1000:1010:user01: /hoome/user01 : /bin/bash
[root@client01-centos7 ~]
[root@client01-centos7 ~] # id user01
uid=1000(user01) gid=1010(Host)  groups =1010(Host)
[root@client01-centos7 ~] #


同样进行登录测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@client01-centos6 ~] # ssh user01@192.168.31.156
user01@192.168.31.156's password: 
Creating directory  '/home/user01' .
Last login: Tue Oct 24 13:04:39 2017 from 192.168.31.100
[user01@client01-centos7 ~]$  whoami
user01
[user01@client01-centos7 ~]$  id
uid=1000(user01) gid=1010(Host)  groups =1010(Host) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[user01@client01-centos7 ~]$  pwd
/home/user01
[user01@client01-centos7 ~]$ 
- bash -4.2$  cat  /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
- bash -4.2$


总结:

ldap客户端配置方法有如下三种:

1、修改配置文件

2、authconfig

3、setup配置


说明:第1种方法修改最复杂,也是最不可靠,很容易出错,所以一般不建议使用,第2、3种方法可以根据请考虑,个人建议用第2种,操作便捷准确性搞,另外在进行任何配置的时候切记要进行备份(即:authconfig --savebackup=</backupfile.bak>)


一、无论是CentOS6还是CentOS7都要装一个组件 nss-pam-ldapd

yum install nss-pam-ldapd -y

在进行配置之前切记要将文件进行备份,这里推荐用"authconfig --savebackup=openldap.bak"命令

authconfig --savebackup=openldap.bak(备份)

如果想快速还原配置文件至初始状态,则进行如下操作:

authconfig --restorebackup=openldap.bak(还原)

将客户端加入ldap服务进行统一管理,运行以下命令,切记服务器地址和对应参数必须保持正确:

authconfig --enableldap  --enableldapauth --ldapserver=ldap://192.168.31.153 --disableldaptls  --enablemkhomedir --ldapbasedn="dc=ldap,dc=com" --update

  在实际工作中由于自己的疏忽漏掉了参数"--enbaleldapauth",结果导致无法远程ssh登陆服务器,后来不得不跑到机房将配置文件恢复回来,然后添加该参数重新执行。


二、环境上需要注意的问题

①确保selinux和iptables必须是关闭状态,即getenforce返回结果为disabled,iptables状态为stop

②确保客户端连接服务端的地址要正确


三、修改用户初始密码的方法:

默认情况下用户是不能修改用户密码的,示例如下:

[user01@client01-centos7 ~]$ id

uid=1000(user01) gid=1010(Host) groups=1010(Host) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[user01@client01-centos7 ~]$ passwd

Changing password for user user01.

(current) LDAP Password: 

New password: 

Retype new password: 

password change failed: Insufficient access

passwd: Authentication token manipulation error

[user01@client01-centos7 ~]$ 

如果要想用户可以修改初始化密码,则需要到ldapserver中进行修改授权,操作如下:

[root@localhost cn=config]# cat << EOF |ldapmodify -Y EXTERNAL -H ldapi:///

> dn: olcDatabase={2}hdb,cn=config

> changetype: modify

> add: olcAccess

> olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=ldap,dc=com" write by anonymous auth by self write by * none

> olcAccess: {1}to dn.base="" by * read

> olcAccess: {2}to by dn="cn=Manager,dc=ldap,dc=com" write by * read

> EOF

SASL/EXTERNAL authentication started

SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth

SASL SSF: 0

modifying entry "olcDatabase={2}hdb,cn=config"


[root@localhost cn=config]# 

操作代码:

1
2
3
4
5
6
7
8
cat  << EOF |ldapmodify -Y EXTERNAL -H ldapi: ///
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn= "cn=Manager,dc=ldap,dc=com"  write by anonymous auth by self write by * none
olcAccess: {1}to dn.base= ""  by *  read
olcAccess: {2}to by dn= "cn=Manager,dc=ldap,dc=com"  write by *  read
EOF


退出登录,重新执行修改命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
[user01@client01-centos7 ~]$  exit
logout
Connection to 192.168.31.156 closed.
[root@client01-centos6 ~] # ssh user01@192.168.31.156
user01@192.168.31.156's password: 
Last login: Tue Oct 24 13:07:36 2017 from 192.168.31.155
[user01@client01-centos7 ~]$  passwd
Changing password  for  user user01.
(current) LDAP Password: 
New password: 
Retype new password: 
passwd : all authentication tokens updated successfully.
[user01@client01-centos7 ~]$



      本文转自027ryan  51CTO博客,原文链接http://blog.51cto.com/ucode/1975844 :,如需转载请自行联系原作者







相关文章
|
Shell
在Bash中检查变量是否为空的几种方法
在Bash中检查变量是否为空的几种方法
2080 0
在Bash中检查变量是否为空的几种方法
|
并行计算 Linux C语言
PaddleOCR
PaddleOCR
1959 0
|
数据可视化 数据安全/隐私保护 Windows
忘记sa用户密码
忘记sa用户密码
961 0
忘记sa用户密码
|
7月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
1254 2
|
设计模式 负载均衡 API
深入理解微服务架构中的服务发现与注册机制
在微服务架构的海洋中,服务发现和注册机制如同星辰导航,指引着服务的互联。本文将揭开服务发现与注册的神秘面纱,探讨它们如何在动态变化的云环境中确保服务间的高效通信。我们将从基本概念出发,逐步深入到实现原理,最后探讨如何在实际项目中应用这些机制以提升系统的可扩展性、可靠性和敏捷性。
|
Linux Shell 网络安全
Kickstart 自动化安装
Kickstart结合PXE技术实现Linux系统的自动化安装,适用于需批量部署一致版本的服务器场景,以减少重复劳动。通过搭建Kickstart+DHCP+NFS+TFTP+PXE架构,服务器可远程启动并下载安装配置。具体包括:配置TFTP服务以传输启动文件,设置PXE引导参数指向Kickstart脚本,利用DHCP分配IP地址。这种方式极大地提高了部署效率与一致性。
470 2
|
算法 数据挖掘 BI
❤️ Python 利用NetworkX绘制精美网络图 ❤️
NetworkX 是一个用 Python 语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析、仿真建模等工作。networkx支持创建简单无向图、有向图和多重图;内置许多标准的图论算法,节点可为任意数据;支持任意的边值维度,功能丰富。主要用于创造、操作复杂网络,以及学习复杂网络的结构、动力学及其功能。用于分析网络结构,建立网络模型,设计新的网络算法,绘制网络等等。
3195 0
❤️ Python 利用NetworkX绘制精美网络图 ❤️
|
JavaScript Java 关系型数据库
Springboot+vue的图书管理系统(有报告),Javaee项目,springboot vue前后端分离项目。
Springboot+vue的图书管理系统(有报告),Javaee项目,springboot vue前后端分离项目。
Springboot+vue的图书管理系统(有报告),Javaee项目,springboot vue前后端分离项目。
|
存储 安全 文件存储
Android OTA升级后输入法异常和应用丢失的分析
Android OTA升级后输入法异常和应用丢失的分析
586 1
|
网络架构
ping会出现的两种问题-----time out 和 unreachable
ping会出现的两种问题-----time out 和 unreachable
1975 4