设为首页 收藏本站
查看: 450|回复: 0

[经验分享] 在CentOS 6.5上配置Openldap客户端

[复制链接]

尚未签到

发表于 2018-4-25 07:24:37 | 显示全部楼层 |阅读模式
  网上有很多Openldap安装部署的文章,往往这些文章都浓墨重彩的描述服务端(Server)的安装和部署,以及排错等过程及说明,但是作为一个C/S架构的软件,可能很多技术牛人认为客户端(Client)的安装就不过如此而已了(虽然有的博客贴出了在桌面环境下设置,不过我觉得生产服务器大部分都是没有桌面环境的),所以大多都寥寥几笔带过,于是就导致配置一个服务端可能有各种教程,反正轻易的就能完成,即使出错也有章可循,而客户端则恰恰相反。然而,配置Openldap的初衷就是用来管理客户端和用户、用户组,既然服务器端已经OK了,那么后续肯定要将众多的Linux服务器加入这个ldap域中来,从而实现统一身份认证,所以别的不多说,以CentOS 6.5为例配置Openldap的客户端。
  1、准备工作
#停止iptables,并查看iptables状态
/etc/init.d/iptables stop
iptables -L -n
#禁用SELinux,并查看SELinux状态
setenforce 0
getenforce
#编辑/etc/hosts,添加openldap server的记录
echo "192.168.49.138   ldapsrv01.contoso.com" >>/etc/hosts
#添加成功后,最好ping一下,看是否能解析正常  2、安装openldap客户端软件包
yum -y install nss-pam-ldapd pam_ldap openldap-clients  3、配置/etc/sysconfig/authconfig
  /etc/sysconfig/authconfig 文件由authconfig-5.3.21-3.e15RPM包生成系统默认安装。配置该文件用来跟踪LDAP身份认证机制是否正确启用。
cp /etc/sysconfig/authconfig /etc/sysconfig/authconfig.bak$(date +%F)
sed -i '/USESYSNETAUTH/s/no/yes/' /etc/sysconfig/authconfig
sed -i '/USELDAPAUTH/s/no/yes/' /etc/sysconfig/authconfig
sed -i '/USEMKHOMEDIR/s/no/yes/' /etc/sysconfig/authconfig
sed -i '/PASSWDALGORITHM/s/md5/yes/' /etc/sysconfig/authconfig
sed -i '/USELDAP/s/no/yes/' /etc/sysconfig/authconfig  [root@ldapclient ~]# diff /etc/sysconfig/authconfig.bak2016-09-11 /etc/sysconfig/authconfig
  2c2
  < USEMKHOMEDIR=no
  ---
  > USEMKHOMEDIR=yes
  12,13c12,13
  < PASSWDALGORITHM=md5
  < USELDAPAUTH=no
  ---
  > PASSWDALGORITHM=yes
  > USELDAPAUTH=yes
  21c21
  < USELDAP=no
  ---
  > USELDAP=yes
  24c24
  < USESYSNETAUTH=no
  ---
  > USESYSNETAUTH=yes
  补充一点,也可以用authconfig-tui命令打开一个图形化的界面来配置,但是不推荐使用,因为字符或语言的关系,你可能看到的是乱码的界面,当然字符和语言都能调整,问题是耗费了事假;另外就是,如果你自己已经配置过/etc/openldap/ldap.conf,再通过authconfig-tui图形界面配置ldapserver信息后,可能会造成你的/etc/openldap/ldap.conf文件多出一些字符,就是因为图形界面的一些空格或者其他看不到的字符造成的更改。
  4、配置/etc/nsswith.conf

  /etc/nsswith.conf文件由glibc-2.5-24生成,CentOS5.2中缺省安装。该文件用于名称转换服务。通常LINUX系统身份验证读取本地文件,要使身份验证查询通过LDAP服务器必须在该文件中找到passwd;shadow;group;三行在files后空格添加“ldap”
cp /etc/nsswitch.conf /etc/nsswitch.conf.bak$(date +%F)
sed -i '/^passwd:/s/files/files   ldap/' /etc/nsswitch.conf
sed -i '/^shadow:/s/files/files   ldap/' /etc/nsswitch.conf
sed -i '/^group:/s/files/files   ldap/' /etc/nsswitch.conf  [root@ldapclient ~]# egrep "^passwd|^shadow|^group" /etc/nsswitch.conf
  passwd:     files   ldap
  shadow:     files   ldap
  group:      files   ldap
  5、配置/etc/pam.d/system-auth
  身份验证服务是实际向LDAP验证用户身份的服务。可插入身份验证模块(PAM)提供了本地Linux身份验证服务。pam_unix.so模块是通用模块,使PAM机制对本地的/etc/passwd文件检查用户帐号。PAMLDAP模块可以用来将身份验证重定向到LDAP目录上。身份验证本身是由PAM程序执行的,它从身份验证候选机制中获取用户名,将其绑定到openLDAP 服务器上。如果绑定成功,PAM会报告说这个用户已经成功通过了pam_ldap.so提供的身份验证测试。根据PAM的配置不同,在用户看到命令提示符之前可能会执行其它测试。
  /etc/pam.d/system-auth文件是CentOS的系统认证PAM文件。在该文件的auth,account,password,session四段中pam_unix.so模块后添加pam_ldap.so模块使身份验证先对本地的/etc/passwd文件检查用户帐号,然后再对LDAP服务器进行检查。同时因为是LDAP认证需要为用户创建根目录,所以还必须在会话(SESSION)阶段增加pam_mkhomedir.so模块,为用户登录自动创建宿主目录。
  [root@ldapclient sysconfig]# cat /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_fprintd.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     required      pam_unix.so
  account     sufficient    pam_localuser.so
  account     sufficient    pam_succeed_if.so uid < 500 quiet
  account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
  account     required      pam_permit.so
  

  password    requisite     pam_cracklib.so try_first_pass retry=3 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     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
  session     required      pam_unix.so
  session     required      pam_mkhomedir.so skel=/etc/skel/ umask=0077
  session     optional      pam_ldap.so
  #蓝色部分为添加的配置
  6、配置/etc/openldap/ldap.conf
cp /etc/openldap/ldap.conf /etc/openldap/ldap.conf.bak$(date +%F)
echo "BASE    dc=contoso,dc=com" >>/etc/openldap/ldap.conf
echo "URI    ldap://ldapsrv01.contoso.com" >>/etc/openldap/ldap  [root@ldapclient ~]# tail -2 /etc/openldap/ldap.conf
  BASE    dc=contoso,dc=com
  URI    ldap://ldapsrv01.contoso.com
  7、使用ldapsearch命令测试能否读取openldap server中的数据
  [root@ldapclient ~]# ldapsearch -x -b "dc=contoso,dc=com"
  # extended LDIF
  #
  # LDAPv3
  # base <dc=contoso,dc=com> with scope subtree
  # filter: (objectclass=*)
  # requesting: ALL
  #
  

  # contoso.com
  dn: dc=contoso,dc=com
  objectClass: organization
  objectClass: dcObject
  dc: contoso
  o: contoso
  

  # People, contoso.com
  dn: ou=People,dc=contoso,dc=com
  objectClass: organizationalUnit
  ou: People
  

  # group, contoso.com
  dn: ou=group,dc=contoso,dc=com
  objectClass: organizationalUnit
  ou: group
  

  # machines, contoso.com
  dn: ou=machines,dc=contoso,dc=com
  objectClass: organizationalUnit
  ou: machines
  

  # sudoers, group, contoso.com
  dn: cn=sudoers,ou=group,dc=contoso,dc=com
  objectClass: posixGroup
  description: sudoers
  gidNumber: 10000
  cn: sudoers
  

  # charles lv, People, contoso.com
  dn: cn=charles lv,ou=People,dc=contoso,dc=com
  objectClass: posixAccount
  objectClass: inetOrgPerson
  objectClass: organizationalPerson
  objectClass: person
  homeDirectory: /home/charleslv
  loginShell: /bin/bash
  uid: charleslv
  cn: charles lv
  uidNumber: 10000
  gidNumber: 10000
  userPassword:: e1NTSEF9YW8wUkhDdElFYTh0Yy9RU3Q0QitXdDY4ckJsU2VGQm8=
  description: charles lv
  sn: lv
  givenName: charles
  initials: charles lv
  

  # eric li, People, contoso.com
  dn: cn=eric li,ou=People,dc=contoso,dc=com
  objectClass: posixAccount
  objectClass: inetOrgPerson
  objectClass: organizationalPerson
  objectClass: person
  homeDirectory: /home/ericli
  loginShell: /bin/bash
  uid: ericli
  cn: eric li
  uidNumber: 10001
  gidNumber: 10000
  userPassword:: e1NTSEF9eE00RFB0VkhmM2FGQnRpRUJUSTdHSnZ3S0kxdUxsSkU=
  description: eric li
  sn: li
  givenName: eric
  initials: eric li
  

  # developers, contoso.com
  dn: ou=developers,dc=contoso,dc=com
  ou: developers
  objectClass: organizationalUnit
  objectClass: top
  

  # app, developers, contoso.com
  dn: ou=app,ou=developers,dc=contoso,dc=com
  ou: app
  objectClass: organizationalUnit
  objectClass: top
  

  # web, developers, contoso.com
  dn: ou=web,ou=developers,dc=contoso,dc=com
  ou: web
  objectClass: organizationalUnit
  objectClass: top
  

  # java, developers, contoso.com
  dn: ou=java,ou=developers,dc=contoso,dc=com
  ou: java
  objectClass: organizationalUnit
  objectClass: top
  

  # bryanz, sudoers, group, contoso.com
  dn: cn=bryanz,cn=sudoers,ou=group,dc=contoso,dc=com
  givenName: bryan
  sn: zhao
  uid: bryanz
  userPassword:: e01ENX00UXJjT1VtNldhdStWdUJYOGcrSVBnPT0=
  uidNumber: 1000
  gidNumber: 10000
  homeDirectory: /home/bryanz
  loginShell: /bin/sh
  objectClass: inetOrgPerson
  objectClass: posixAccount
  objectClass: top
  cn: bryanz
  

  # zhangs, People, contoso.com
  dn: uid=zhangs,ou=People,dc=contoso,dc=com
  objectClass: posixAccount
  objectClass: top
  objectClass: inetOrgPerson
  gidNumber: 10000
  givenName: zhang
  sn: san
  displayName: zhang san
  uid: zhangs
  homeDirectory: /home/zhangs
  loginShell: /bin/bash
  cn: zhang san
  uidNumber: 47180
  userPassword:: e1NTSEF9Nmk2cm1wbXpyK3JzVEwyZk0wanR6d2tKOFNWMk9FdEs=
  

  # search result
  search: 2
  result: 0 Success
  

  # numResponses: 14
  # numEntries: 13
  这里成功读取了ldap中的数据,网上给出的大部分教程,到此之后就直接service nscd restart,然后就可以使用getent测试获取ldap中的用户信息,我分别在CentOS 5.5和CentOS 6.5上做了测试,都无法获取,而且也无法使用id user这个命令查询ldap上用户的信息,所以该方法不可取,至少在CentOS 6上是不行的。
  补充:如果出现“ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)”,那么解决该问题的方法是:
        1)检查/etc/hosts文件,是否有ldapserver的记录,最好能ping一下,看能否解析成功
        2)到openldap server上检查slapd服务是否正在运行,如果没有,启动slapd服务
        3)检查/etc/openldap/ldap.conf文件,查看里面的BASE和URI是否正确,很有可能是在图形界面中的设置,导致配置文件多了一些字符,从而出错   
  8、使用authconfig命令启动nslcd
authconfig --enableldap --enableldapauth --ldapserver=ldapsrv01.contoso.com --ldapbasedn="dc=contoso,dc=com" --enablemkhomedir --update
#该命令要包含ldapserver和basedn的信息  9、测试ldap用户登录

  [root@ldapclient ~]# getent passwd|grep charleslv
  charleslv:{SSHA}ao0RHCtIEa8tc/QSt4B+Wt68rBlSeFBo:10000:10000:charles lv:/home/charleslv:/bin/bash
  [root@ldapclient ~]# id charleslv
  uid=10000(charleslv) gid=10000(sudoers) groups=10000(sudoers)
  [root@ldapclient ~]# id zhangs
  uid=47180(zhangs) gid=10000(sudoers) groups=10000(sudoers)
  [root@ldapclient ~]# id bryanz
  uid=1000(bryanz) gid=10000(sudoers) groups=10000(sudoers)
  [root@ldapclient ~]# id ericli
  uid=10001(ericli) gid=10000(sudoers) groups=10000(sudoers)
  [root@ldapclient ~]# su - zhangs
  Creating directory '/home/zhangs'.
  [zhangs@ldapclient ~]$ ll
  total 0
  [zhangs@ldapclient ~]$ pwd
  /home/zhangs
  到此,CentOS 6.5配置openldap客户端成功。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-451561-1-1.html 上篇帖子: CentOS 7 改运行级别 下篇帖子: centos安装kvm
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表