LDAP搭建,实现linux账号统一管理

LDAP简介

ldap是开源的轻量级目录访问协议,英文全称是Lightweight Directory Access Protocol,它本身是一个小型文件数据库,能够通过server + client(服务端+客户端)的方式,进行统一的用户账号管理。随着公司研发人员越来越多,在各个研发服务器上添加重复账号就变得麻烦,如果使用ldap来管理,就只需要在ldap服务中创建一次就可以了,账号清理也是类似的道理。我们通过控制一台ldap server服务器,即可管理所有ldap client服务器上的账号,这样就方便很多了。

系统搭建环境

  1. Ubuntu 18.04 LTS,内网IP:192.168.0.1,ldap server
  2. Ubuntu 18.04 LTS,内网IP:192.168.0.2,ldap client

LDAP server 搭建

Step1: 设置服务器名称

在内网环境中,服务器名称最好是唯一的,比如改成saturn.com。

sudo hostnamectl set-hostname saturn.com 

修改完成后,可以用以下命令确认:

hostname -f

编辑/etc/hosts文件。

sudo vim /etc/host

在文件底部添加:

192.168.0.1 saturn.com

Step2: 安装OpenLADP server

sudo apt -y install slapd ldap-utils

在安装过程中,会提示设置ldap admin的密码。

LDAP搭建,实现linux账号统一管理_第1张图片

安装完成后可以通过slap命令验证,正常会显示ldap database的内容,重要的是确认database的dn, 这里为dc=saturn,dc=com

sudo slapt

LDAP搭建,实现linux账号统一管理_第2张图片

Step3: 添加users和groups的base dn

ldap database里的内容只能通过文件名后缀为.ldif的文件进行添加,或者通过Web工具(OpenLDAP没有自带的Web工具,下面会介绍LDAP account manager 工具)。

创建basedn.ldif文件并且编辑。

touch basedn.ldif
vim basedn.ldif

在basedn.ldif中添加以下内容,注意dn中要用dc=saturn, dc=com。

dn: ou=people,dc=saturn,dc=com
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=saturn,dc=com
objectClass: organizationalUnit
ou: groups

用下面命令将文件的内容添加到database中:

ldapadd -x -D cn=admin,dc=saturn,dc=com -W -f basedn.ldif

成功的话会显示类似的提示:

adding new entry "ou=people,dc=saturn,dc=com"
adding new entry "ou=groups,dc=saturn,dc=com"

Step4: 添加用户账户

用slappasswd命令生成账户密码,网上查询slappasswd命令是用来修改ldap admin密码的,但是仅仅用这个命令好像不 能直接修改admin的密码,安全起见,可以用网站http://web.chacuo.net/safeldap 在线生成ldap加密的密码。

sudo slappasswd
New password: 
Re-enter new password: 
{SSHA}Zn4/E5f+Ork7WZF/alrpMuHHGufC3x0k

创建ladpuseradd.ldif文件并且编辑。

touch ldapuseradd.ldif 
vim ldapuseradd.ldif 

在ladpuseradd.ldif中添加以下内容, 比如创建一个用户名为han.meimei的ldap账号:

dn: uid=han.meimei,ou=people,dc=saturn,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: han.meimei
sn: meimei
userPassword: {SSHA}Zn4/E5f+Ork7WZF/alrpMuHHGufC3x0k
loginShell: /bin/bash
uidNumber: 2000
gidNumber: 2000
homeDirectory: /home/han.meimei

其中uid跟cn是设置ldap账号的用户名,sn设置用户的昵称,uidNumber跟gidNumber就是linux系统下用户的uid跟gid,注意添加不同账号时uidNumber保持不同,不然在linux terminal中显示的路径可能会有问题,gidNumber可以保持一致,让用户在同一个组里,统一管理权限。userPassword后面可以填写用网站http://web.chacuo.net/safeldap在线生成的其他加密密码,之后用LDAP account manager也可以修改账户信息及密码。

用下面命令将文件的内容添加到database中:

ldapadd -x -D cn=admin,dc=saturn,dc=com -W -f ldapuseradd.ldif 

成功的话会显示类似的提示:

adding new entry "uid=han.meimei,ou=people,dc=saturn,dc=com"

Step5: 安装LDAP Account Manager(推荐)

ldap用命令行管理database比较麻烦,可以用辅助Web工具phpLDAPadmin,LDAP Account Manager等,这里推荐使用 LDAP Account Manager。

安装PHP, Apache。

sudo apt -y install apache2 php php-cgi libapache2-mod-php php-mbstring php-common php-pear

激活php-cgi PHP extension。
通用命令:

sudo a2enconf php*-cgi
sudo systemctl reload apache2

Ubuntu 18.04:

sudo a2enconf php7.2-cgi
sudo systemctl reload apache2

安装LDAP Account Manager。

sudo apt -y install ldap-account-manager

安装完成后可以在浏览器中登入LAM的管理界面,http://(server’s hostname or IP address)/lam, 在本例中为http://192.168.0.1/lam。界面如下图:

LDAP搭建,实现linux账号统一管理_第3张图片

然后需要设置ldap server profile, 点击登入界面左上角的LAM configuration,然后点击Edit server profiles。

LDAP搭建,实现linux账号统一管理_第4张图片

需要输入登入密码,第一次登入的话默认密码是 lam。

LDAP搭建,实现linux账号统一管理_第5张图片

接下来第一件事情是会让你修改密码。

然后需要设置ldap Server address 和 Tree suffix。

LDAP搭建,实现linux账号统一管理_第6张图片

在Security setting中设置admin。

LDAP搭建,实现linux账号统一管理_第7张图片

点击Account types页,在Active account types中设置LDAP suffix 和List attributes。

LDAP搭建,实现linux账号统一管理_第8张图片

完成后再在部点击Save按钮,重新用admin账号登入,成功跟本地ldap database关联的话,就能看到之前添加的han.meimei账号的信息。我们可以之后直接在LAM上添加账号或者修改账号信息。

LDAP client 搭建

Step1: 添加LDAP server服务器名称

编辑/etc/hosts文件

sudo vim /etc/hosts

在文件底部添加:

192.168.0.1 saturn.com

Step2: 安装OpenLDAP client

sudo apt -y install libnss-ldap libpam-ldap ldap-utils nscd

在安装过程中,会有如下提示:
设置ldap api,这里填写ldap server的IP: 192.168.0.1
设置dn base,填写dc=saturn,dc=com
选择ldap version,选择3
选择Yes 对Make local root Database admin
选择No 对Does the LDAP database require login
设置 LDAP root account,这里为cn=admin,dc=saturn,dc=com
设置LDAP root account密码,与server端保持一致

Step3: 设置ldap.config

安装完成后,安装过程中的配置会保存在/etc/ldap.config中,如果需要修改ldap配置,可以再次修改这个配置文件。在本例中ldap client 一开始没有连上server端,需要将在ldap.config文件中注释的一行#uri ladp://127.0.0.1/ 改成uri ladp://192.168.0.1:389方才可行,ldap server默认使用TCP 389 端口。

Step4: 设置ldap nss profile

sudo auth-client-config -t nss -p lac_ldap

Step5: 更新pam, 确认LDAP authentication被激活

sudo pam-auth-update

Step6: 修改/etc/nsswitch.conf, 在passwd和group后增加ldap

passwd: compat systemd ldap
group: compat systemd ldap
shadow: compat

如果之后这个服务器想取消使用ldap,把增加的ldap删除即可。

Step7: 修改/etc/pam.d/common-password, 把ldap那行中的use_authtok去掉

修改后 应该显示类似的:

password [success=1 user_unknown=ignore default=die] pam_ldap.so try_first_pass

Step8: 激活账号第一次进入的时候自动创建home directory

在/etc/pam.d/common-session中添加:

session optional pam_mkhomedir.so skel=/etc/skel umask=077
LDAP搭建,实现linux账号统一管理_第9张图片

Step9: 重启Name Service Cashe Daemon(NSCD)

sudo systemctl restart nscd
sudo systemctl enable nscd

在上述步骤完成后,可以用很多方式验证ldap client是否与server建立联系:

  1. getent passwd 或者 getent passwd han.meimei (某个ldap账号),会显示ldap server database里用户账号的信息。
  2. ldapsearch -x -h 192.168.0.1 -b dc=saturn,dc=com
  3. 直接在client里输入 sudo su - han.meimei (某个ldap账号)

至此ldap搭建完成,在没有创建local账号的情况下,ldap server端的服务器也能通过ldap账号鉴权登入。

参考资料:
https://computingforgeeks.com/install-and-configure-openldap-server-ubuntu/
https://computingforgeeks.com/install-and-configure-ldap-account-manager-on-ubuntu/
https://computingforgeeks.com/how-to-configure-ubuntu-as-ldap-client/
https://blog.eldernode.com/install-ldap-client-on-ubuntu-20-04/

你可能感兴趣的:(linux,数据库,运维,服务器)