LDAP实现Linux用户统一认证

Posted by bluesky blog on December 14, 2016

目录



LDAP实现Linux用户统一认证

1、背景

随着团队人数、服务器增多,每台服务器的账号都独立,带来的缺点是:管理员维护成本高、员工操作不便、没有明确的权限划分,通过配置统一认证,可以达到的效果有:

  • 员工增减,快速开通、注销账号
  • 所有用户具有权限的服务器,统一一套用户名、密码,方便操作(有强制密码策略、定期修改策略)
  • 可以方便、统一的划分权限
  • 可以通过软件界面来管理账号
  • 后期可以打通SVN、VPN等服务,进行统一账号管理

##2、前提条件 ##

  • 已经关闭了防火墙、seLiunx

  • 已经配置好了LDAP服务端、客户端

  • 已经将系统用户导入到LDAP中

以上操作步骤,详见:Open LDAP部署

3、安装

身份验证服务是实际向 LDAP 验证用户身份的服务。通过可插入身份验证模块(PAM)提供了本地 Linux 身份验证服务。

PAM 先对本地的 /etc/passwd 文件检查用户帐号,然后再对 LDAP 服务器进行检查。

PAM LDAP 模块可以用来将身份验证重定向到 LDAP 目录上。

安装PAM模块:

yum install pam_ldap nss-pam-ldapd -y

4、修改配置文件

总共需要修改4个配置你文件,含义分别如下:

文件名 作用
/etc/openldap/ldap.conf ldap配置
/etc/nsswitch.conf 名称转换服务,系统验证用户身份所读取本地文件或远程验证服务器
/etc/pam.d/system-auth 认证模块配置,增加ldap模块,实现用户账户身份验证
/etc/nslcd.conf 缓存用户认证信息

编辑 /etc/openldap/ldap.conf 文件:

BASE	dc=douyu,dc=com
URI	ldap://xxx:389/  #LDAP Server地址

编辑 /etc/nsswitch.conf 文件:

passwd:     files ldap
shadow:     files ldap
group:      files ldap

编辑 /etc/pam.d/system-auth 文件

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth       sufficient   pam_ldap.so use_first_pass   # 增加
auth        required      pam_deny.so

account    sufficient   pam_ldap.so # 增加
account     required      pam_unix.so
account     sufficient    pam_localuser.so 
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password   sufficient   pam_ldap.so use_authtok use_first_pass # 增加
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
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  # 增加

编辑 /etc/nslcd.conf 文件,在尾部增加:

uri ldap://xxxx/
base dc=douyu,dc=com

5、启动及验证

启动服务:

service nslcd start

验证步骤:

  1. 在LDAP client的主机上,查看/etc/passwd 文件,确认不存在testldap用户

  2. 在LDAP中,添加testldap用户,分配用户组、用户权限、初始密码等

  3. 在LDAP client的主机上,使用testldap,测试能否登录

  4. 在LDAP中,删除testldap用户

  5. 在LDAP client的主机上,再次使用testldap,测试能否登录

6、排查错误

查看/var/log/message日志信息,根据错误进行排查

7、其他

  • 以上配置,未涉及用户家的设置
  • LDAP可以进行主从配置
  • SVN、VPN等其他账户都可以通过LDAP进行统一管理

参考资料:

使用OpenLDAP实现集中式认证:https://wiki.gentoo.org/wiki/Centralized_authentication_using_OpenLDAP/zh#.E9.AB.98.E5.8F.AF.E9.9D.A0.E6.80.A7