OpenLDAP客户端配置,实现用户认证(原创)

1.工作过程

        OpenLDAP服务分为客户端和服务端两个部分,服务端的配置过程这里不再赘述。当服务端配置结束后,在服务端的ldap数据库中,应存放着用户的信息,客户端通过安装nss-pam-ldapd(一个瘦身版本的 PAM 模块和一个瘦身版本的 NSS 模块集合),以及配置/etc/pam.d下的system-auth文件和password-auth两个文件来完成客户端的配置。下面给出具体配置过程以及一些坑的解答。

2.配置过程

1)yum install nss-pam-ldapd openldap-clients openldap -y

        nss-pam-ldapd,是pam模块和nss模块的集合,主要作用是使存在于服务端ldap数据库中的用户,进行ssh登陆客户端时,可以通过pam方式进行验证,而这种情况下此用户是不存在于客户端的服务器上的。
        openldap-clients,就是OpenLDAP的客户端软件包,此软件包安装后,不需要像服务端一样运行起来,他的作用主要是集成了类似ldapsearch,ldapadd之类的命令,可以用户验证服务端或者对服务端数据库中的用户信息进行查询,添加等。
        openldap,主要包含了OpenLDAP所必须的库文件,当通过pam验证时,这些库文件是必须有的。

2)vim /etc/openldap/ldap.conf


3)authconfig-tui # 将下图中红框中的选中,然后next,按照提示操作完成即可。


4)分别查看以下文件的内容,是否已经自动更改成如下所示,若没有,请手动更改,手动更改后,请勿再执行authconfig-tui命令,否则会将手动更改的内容覆盖掉!

vim /etc/nsswitch.conf
passwd: files ldap
shadow: files ldap
group: files ldap
automount: files sss ldap


vim /etc/pam.d/system-auth
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 100 quiet_success
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only retry=3
authtok_type=
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0022
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_ldap.so


vim /etc/pam.d/password-auth
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 100 quiet_success
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so

account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so

password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok

password required pam_deny.so

session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0022
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_ldap.so


vim /etc/sysconfig/authconfig
USELDAP=yes
USELDAPAUTH=yes


vim /etc/ssh/sshd_config #确保没有其他禁止用户登陆的选项,将使用pam模块选项改成yes
UsePAM yes

systemctl restart nslcd
systemctl restart sshd


尝试从服务端查看ldap用户信息

ldapsearch -H ldap://你的ldap服务端ip -x -b "ou=你自己的,dc=你自己的,dc=你自己的" | grep dn


若能查看到,使用id命令,查看ldap用户在客户端本机是否能查看到,能的话,再尝试ssh使用ldap用户登录,登录成功,即完毕!

3.常见问题解答

1)
问:在网上的有些文档中,经常看到再重启nslcd之前,要先停掉sssd服务,很多人可能不知道sssd是什么服务,而且当去停止sssd服务的时候,发现根本就没有这个服务。
答:新版RedHat/CentOS默认改为使用SSSD来处理有关系统安全服务的名称查询请求,因为sssd服务本身已经具备缓存的功能,因此可以不使用nscd后台进程(重复缓存并无好处),因此如果你此时发现你并没有sssd服务,那么你就可以跳过停掉sssd服务这一步。
2)
问:ldapsearch和id命令都可以查看到用户,但是当用su切过去的时候,却说此用户不在sudoers文件中。
答:按照此文档,配置ldap中的用户到sudoers文件中, https://www.jb51.net/article/113902.htm
3)
问:远程ssh登陆时候,总是permission rufused
答:将/etc/pam.d/system-auth  和 password-auth中的uid >=1000改为100,如下
auth        requisite     pam_succeed_if.so uid >= 100 quiet_success
4)
问:执行ldapsearch的时候,总是报这个错误
ldap_bind: Can‘t contact LDAP server (-1)
答:首先从客户端ping服务端,看是否能通
        其次,查看服务端的389端口是否开启
        以及是否关闭了防火墙,若是开着防火墙,将389端口放行
5)
问:ldapsearch可以查看到用户,但是id查看不到,su和ssh也不行
答:systemctl stop nscd ; systemctl restart nslcd
注意这里的nslcd和nscd并不是一个服务,nslcd在上面已经介绍过,nscd服务是一个缓存服务,主要缓存passwd group hosts,所以它会记录三个库,分别对应源/etc/passwd, /etc/hosts 和 /etc/resolv.conf每个库保存两份缓存,一份是找到记录的,一份是没有找到记录的,因此由于缓存的存在,查看不到更新的ldap用户信息。

原文地址:http://blog.51cto.com/11093860/2161809

时间: 2024-10-25 05:19:07

OpenLDAP客户端配置,实现用户认证(原创)的相关文章

nginx rewrite标签配置以及用户认证配置

一.nginx  rewrite标签 rewrite 实现URL的改写主要是实现伪静态 1.  rewrite指令语法 指令语法:rewrite regex replacement[flag] 默认值:none 应用位置:server,location,if rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement部分内容,结尾是flag标记,下面是一个简单的URL Rewrite跳转 Rewrite ^/(.*)http://www.eti

LNMP第二部分nginx、php配置(用户认证、域名重定向、日志、配置缓存、防盗链)

一.nginx的配置( nginx.conf) 1.nginx的主配置文件位置: /usr/local/nginx/conf/nginx.con 2.清空  /usr/local/nginx/conf/nginx.con默认的配置文件内容 [[email protected] ~]# > /usr/local/nginx/conf/nginx.conf >:重定向的意思,单独使用,可以把一个文本文档快速清空 3.拷贝一下代码到/usr/local/nginx/conf/nginx.conf文件

lamp配置之用户认证

有时候,我们需要给一些特殊的访问设置一个用户认证机制,增加安全.比如我们刚刚安装好的discuz论坛,是有一个管理后台的,虽然管理后台本身就有密码,但我们为了更加安全,可以再设置一层用户认证. # vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 在对应的虚拟主机配置中加入如下配置: <Directory /data/www/admin.php> AllowOverride AuthConfig AuthName "alksdjf

Nginx安装配置实现用户认证、反向代理、隐藏版本号

一.Nginx安装 1.检查并且安装依赖组件           检查安装nginx的模块需要第三方库的支持,检查是否安装下列库:zlib.zlib-devel.openssl.openssl-devel.pcre.pcre-devel如果没有,则全部装上          # rpm -qa | grep pcre  ##没有任何信息则没安装 2.安装pcre,pcre-devel # tar -zxvf pcre-6.6.9.tar.gz          # cd pcre-6.6.9/ 

Apache配置用户认证、域名跳转、日志轮询、静态文件缓存、防盗链

使用版本为httpd-2.2.29 源码编译安装环境. 1.配置网站用户认证 编辑虚拟机主机配置文件 /usr/local/apache2/conf/extra/httpd-vhosts.conf,在虚拟主机配置文件段内加入绿色标示代码: <VirtualHost *:80> DocumentRoot "/data/www" ServerName www.123.com ServerAlias www.a.com www.b.com     <Directory *&

CentOS6服务管理之WEB-httpd用户认证控制和https在httpd上的实现

通过上面两篇博客 CentOS6服务管理之WEB-http协议详解 CentOS6服务管理之WEB-Apache httpd配置文件详解 我们学习了Apache httpd的基础知识,下面我们就可以通过设置用户认证和实现https加密传输的实验来配置httpd了,下面是本次实验的要求: 实验环境: CentOS release6.6(Final)   1台 Windows XP             1台 IP地址: 172.16.31.31      www.stu31.com       

Nginx简介及用户认证、访问控制和反向代理配置

Nginx 是一个很强大的高性能Web和反向代理服务器及及电子邮件(IMAP/POP3)代理服务器,由俄罗斯程序员设计师Igor Syaoev所开发,官方网站:http://nginx.org/  特点是占有内存少.并发能力强. Nginx配置文件及目录简介: - /usr/local/nginx/                                                           安装目录 - /usr/local/nginx/conf/nginx.conf  

在CentOS 6.5上安装OpenLDAP并配置LDAP方式用户登录

1.安装PHP和apache 如果没有EPEL的源需要安装下 yum install epel-release 若没有下载下来,就创建/etc/yum.repo.d/epel.repo [epel] name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedo

centos7下利用httpd2.4配置svn并使用Ldap用户认证

应用场景:Windows下有AD活动目录,类Unix系统下有Ldap,在运维开发工具平台逐步丰富的现在,统一用户管理大大便捷了管理人员. 其中不乏经典版本控制管理工具svn,与Ldap组合的用户认证方式. 测试环境: 配置步骤: 1. 安装相关软件  ~]# yum install httpd subversion mod_dav_svn mod_ldap 注:在CentOS7或RHEL7中,httpd版本为2.4:而且不在有mod_authz_ldap,该模块软件功能都已经整合到mod_lda