OpenLDAP步骤及命令解释: ubuntu 16.04 / 18.04 / 20.04 / centos 7

原创
2022/09/25 00:11
阅读数 180

零、基础知识

多看几遍,大有益处:https://magiclen.org/ubuntu-server-ldap/

怎么加密码:https://www.jianshu.com/p/f1c82b1fc847

提醒:

  1. ou可以拿migrationtools生成Groups和People,passwd不要用,集成gitlab需要email,migrationtools生成的passwd.ldif是account类型,但只有inetOrgPerson类型才可以加email;
  2. 我没有管hostname,全程ip。

一、基础安装

ubuntu 16.04 / 18.04 / 20.04

Server端

ubuntu 16.04: https://www.cnblogs.com/tonglin0325/p/13661323.html

ubuntu 18.04直接apt安装的phpldapadmin有点问题,不能添加entry,解决方法有两个:
https://stackoverflow.com/questions/50698477/cant-create-new-entry-phpldapadmin

https://iter01.com/587553.html

这个亲试不行:https://www.techrepublic.com/article/how-to-install-phpldapadmin-on-ubuntu-18-04/ 原因好像是适合手动编译到/www文件夹下的phpldapadmin。

Client端

https://computingforgeeks.com/how-to-configure-ubuntu-as-ldap-client/
可以先把所有的Server端配好,配client的时候把所有的Server都填上。

centos 7

Server端

https://www.cyberithub.com/best-steps-to-install-and-configure-openldap-server-on-rhel-centos-7-8/

https://blog.csdn.net/weixin_41004350/article/details/89521170

https://www.jianshu.com/p/3f02bd5080da

上面三个对比着看,第三个有phpadmin的设置,比上面ubuntu的设置好。

这个用了ssl: https://linuxhostsupport.com/blog/how-to-install-ldap-on-centos-7/ 但我觉得没必要,放在这里做参考。

这个提醒我加memberof: https://segmentfault.com/a/1190000014683418?sort=newest

Client端

https://www.cnblogs.com/rusking/p/8109873.html

https://aws.amazon.com/cn/blogs/china/amazon-emr-authentication-scheme-based-on-openldap-and-kerberos-ii-synchronize-ldap-accounts-based-on-sssd/

https://www.jianshu.com/p/af295531eaf6

https://blog.csdn.net/weixin_33862188/article/details/93631992

上面4个先看,看懂了之后你就明白加下来这一段话: 与ubuntu不同,这里需要关闭selinux才能自动生成文件夹。另外不要用sssd,否则无法像ubuntu一样让用户在客户端用passwd自己改密码,也就是说:sudo authconfig --enableforcelegacy --enableldap --enableldapauth --ldapserver=xxx --ldapbasedn="dc=xxx,dc=com" --enablemkhomedir --updateall就够了,不会启用sssd。如果不小心启用了,就加上--enablesssd --disablesssdauth,再--updateall即可。

多个server:--ldapserver=xxx,xxx

假的: https://forums.centos.org/viewtopic.php?t=72987

关闭匿名查询,也就是不需要-D就可以ldapsearch:https://www.cyrill-gremaud.ch/howto-disallow-global-anonymous-bind-with-cnconfig/

但是centos关闭匿名查询会出问题,开启匿名查询:https://stackoverflow.com/questions/50497256/how-to-re-enable-anonymous-login-in-openldap

二、N-Way Multi-Master Replication: 多主模式同步

ubuntu:

https://www.server-world.info/en/note?os=Ubuntu_22.04&p=openldap&f=6

https://www.golinuxcloud.com/multi-master-replication-openldap/

https://www.modb.pro/db/395923

https://tylersguides.com/guides/openldap-multi-master-replication/

centos:

https://linoxide.com/setup-openldap-multi-master-replication-centos-7/

https://kifarunix.com/setup-openldap-master-master-replication-on-centos-8/

官方文档:

https://www.zytrax.com/books/ldap/ch7/

提醒:

  1. 第一次添加sync模块的olcOverlay之后,在rid那边的最后没必要再加了;
  2. 有些帖子既同步了database还同步了config,我觉得config没必要同步,可能会有问题,就只同步了database。

三、Memberof Overlay 设置

https://kifarunix.com/how-to-create-openldap-member-groups/

https://blog.csdn.net/rockstics/article/details/108239475

https://tylersguides.com/guides/openldap-referential-integrity-overlay/

https://blog.csdn.net/u011607971/article/details/119037796

https://robertmunn.com/blog/install-and-configure-openldap-on-ubuntu-1804/

注:

  1. 先用sudo slapcat -n0 | grep olcModuleLoad看一下有没有module,没有就add,如果有的话继续add会添加新module,每个module都可以load模块,尽量不要添加新的,也就是说用{0}module
  2. refint模块是为了在修改member的属性比如cn时,上级也会自动修改。因为上面的帖子都只加了关键字membermemberOf,有一些帖子最后加了refint的managerowner的overlay,manager是inetOrgPerson的一个属性,我试了下如果正常配置memberof好像不能实现owner,我一向多不如少,再加上用不到managerowner,所以走到load refint.la就停了。如果想对groupOfUniqueNamesuniqueMember启用memberOf和refint功能,应该需要在memeberOf的overlay那里添加关键字,否则只能使用groupOfNamesmember关键字。
    另外,多主同步时,一台机器load refint.la之后,另一台不需要load也可以自动起作用,但为了保险我都load了。原因应该是load的那台机器起了作用,entry更新后,另一台机器也“假装”有了refint功能。

四、命令

  1. config的配置只能用:sudo ldapmodify -Y EXTERNAL -H ldapi:// -f xxx。我非常奇怪为什么要-H,但确实管用。
  2. overlay或者模块配置可以在/etc/ldap/slapd.d/下面及内层的文件看到,直接cat即可。事实上这些文件可以修改,但官方命令禁止手动修改,只能用ldapmodify/ldapadd进行操作。

五、配置LDAP端sudoer

首先明白schema和ldif的区别:

https://serverfault.com/questions/915105/adding-nis-schema-throwing-error-invalid-format-line-2-entry

如何删除schema:

https://www.cyrill-gremaud.ch/deleting-custom-schema-in-openldap-2-4/

ubuntu需要先装sudo-ldap,cent不需要:

https://ubuntuforums.org/showthread.php?t=2184141

https://ubuntuforums.org/showthread.php?t=1421998

https://forums.centos.org/viewtopic.php?t=73807

https://raduzaharia.medium.com/adding-sudoers-to-openldap-e0a6b0c4c7ab

http://pig.made-it.com/ldap-sudoers.html#327

https://kifarunix.com/how-to-configure-sudo-via-openldap-server/

官方manual:

https://manpages.ubuntu.com/manpages/xenial/man8/sudoers.ldap.8.html

注:

  1. /etc/sudo-ldap.conf 直接不要,bak一下,把 /etc/ldap.conf (centos: /etc/openldap/ldap.conf) 软链接到 /etc/sudo-ldap.conf , 然后加一行就好了;

  2. SUDOers那边我没有default,只做了一个entry:

dn: cn=sudoers,ou=SUDOers,dc=EDAlab,dc=com
objectClass: top
objectClass: sudoRole
cn: sudoers
sudoUser: xxxx,xxxx
sudoHost: ALL
sudoRunAsUser: ALL
sudoCommand: ALL

连sudoOrder都没设置,也可以正常使用,我觉得没有问题,如果需要加人,就modify添加就好了。

展开阅读全文
加载中

作者的其它热门文章

0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部