UBUNTU_Network Authentication(三)

LDAP认证

一旦您有了一个工作的LDAP服务器,您将需要在客户机上安装库,以便知道如何以及何时与它联系。在Ubuntu上,这通常是通过安装libnss-ldap包来完成的。
这个包将引入其他工具,帮助您完成配置步骤。现在安装这个包:

apt install libnss-ldap

将提示您输入LDAP服务器的详细信息。如果你说错了,你可以用:

dpkg-reconfigure ldap-auth-config

对话框的结果可以在/etc/ldap.conf中看到。如果您的服务器需要菜单中没有涵盖的选项,请相应地编辑此文件。
现在为NSS配置LDAP配置文件:

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

配置系统使用LDAP认证:

sudo pam-auth-update

从菜单中,选择LDAP和您需要的任何其他身份验证机制。
您现在应该能够使用基于ldap的凭据进行登录。
如果使用副本,LDAP客户机将需要引用多个服务器。在/etc/ldap.conf中,你会看到如下内容:

uri ldap://ldap01.example.com ldap://ldap02.example.com

如果提供者(ldap01)失去响应,请求将超时,消费者(ldap02)将试图被访问。

用户和组管理

ldap-utils包提供了足够的实用程序来管理目录,但是所需的一长串选项可能会使它们成为使用的负担。ldapscripts包包含这些实用程序的包装器脚本,有些人认为这些实用程序更容易使用。
安装包:

sudo apt install ldapscripts

然后编辑/etc/ldapscripts/ldapscripts.conf文件,得到类似如下内容:

SERVER=localhost
BINDDN='cn=admin,dc=example,dc=com'
BINDPWDFILE="/etc/ldapscripts/ldapscripts.passwd"
SUFFIX='dc=example,dc=com'
GSUFFIX='ou=Groups'
USUFFIX='ou=People'
MSUFFIX='ou=Computers'
GIDSTART=10000
UIDSTART=10000
MIDSTART=10000

现在,创建ldapscripts.passwd文件允许rootDN访问目录:

sudo sh -c "echo -n 'secret' > /etc/ldapscripts/ldapscripts.passwd"
sudo chmod 400 /etc/ldapscripts/ldapcripts.passwd

将“secret”替换为数据库rootDN用户的实际密码。
这些脚本现在可以帮助管理目录了。以下是一些如何使用它们的例子:

  • 创建用户
sudo ldapadduser george example

创建用户george,设置用户组example

  • 更改用户密码
sudo ldapsetpasswd george
Changing password for user uid=george,ou=People,dc=example,dc=com
New Password:
New Password (verify):
  • 删除用户
sudo ldapdeleteuser george
  • 添加组
sudo ldapaddgroup qa
  • 删除组
sudo ldapdeletegroup qa
  • 添加用户到组
sudo ldapaddusertogroup george qa

现在可以看到qa组中的memberuid中有george。

  • 从组中移除用户
sudo ldapdeleteuserformgroup george qa
  • ldapmodifyuser脚本允许您添加、删除或替换用户的属性。该脚本使用与ldapmodify实用程序相同的语法。例如:
sudo ldapmodifyuser george 
#About to modify the following entry :
dn: uid=george,ou=People,dc=example,dc=com
objectClass: account
objectClass: posixAccount
cn: george
uid: george
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/george
loginShell: /bin/bash
gecos: george
description: User account
userPassword:: e1NTSEF9eXFsTFcyWlhwWkF1eGUybVdFWHZKRzJVMjFTSG9vcHk=
#Enter your modifications here, end with CTRL-D.
dn: uid=george,ou=People,dc=example,dc=com
replace: gecos
gecos: George Carlin
  • •ldapscripts的一个很好的特性是模板系统。模板允许您自定义用户、组和机器对象的属性。例如,要启用用户模板,请编辑/etc/ldapscripts/ ldapscripts.conf修改:
    UTEMPLATE="/etc/ldapscripts/ldapadduser.template"
    在/usr/share/doc/ldapscripts/examples目录中有一些示例模板。将ldapadduser.template.sample文件复制或重命名为/etc/ldapscripts/ldapadduser.template:
sudo cp /usr/share/doc/ldapscripts/examples/ldapadduser.template.sample \
/etc/ldapscripts/ldapadduser.template

编辑新模板以添加所需的属性。下面将使用inetOrgPerson的objectClass创建新用户:

dn: uid=<user>,<usuffix>,<suffix>
objectClass: inetOrgPerson
objectClass: posixAccount
cn: <user>
sn: <ask>
uid: <user>
uidNumber: <uid>
gidNumber: <gid>
homeDirectory: <home>
loginShell: <shell>
gecos: <user>
description: User account
title: Employee

注意sn属性使用的选项。这将使ldapadduser提示您输入它的值。

备份与还原

:现在我们已经按照我们想要的方式运行了ldap,是时候确保我们可以保存所有工作并在需要时恢复它了。
我们需要的是一种备份ldap数据库的方法,特别是后端(cn=config)和前端
(dc =例子,dc = com)。如果我们要将这些数据库备份到/export/backup,我们可以使用如下脚本所示的slapcat,名为/usr/local/bin/ldapbackup:

#!/bin/bash
BACKUP_PATH=/export/backup
SLAPCAT=/usr/sbin/slapcat
nice ${SLAPCAT} -n 0 > ${BACKUP_PATH}/config.ldif
nice ${SLAPCAT} -n 1 > ${BACKUP_PATH}/example.com.ldif
nice ${SLAPCAT} -n 2 > ${BACKUP_PATH}/access.ldif
chmod 640 ${BACKUP_PATH}/*.ldif

注:这些文件是未压缩的文本文件,其中包含ldap数据库中的所有内容,包括树布局、用户名和每个密码。因此,您可能需要考虑将/export/ backup创建为加密分区,甚至让脚本在创建这些文件时对它们进行加密。
理想情况下,您应该两者都做,但这取决于您的安全需求。
然后,只要有一个cron脚本来尽可能频繁地运行这个程序就可以了。对许多人来说,一天一次就足够了。对其他人来说,则需要更多的时间。下面是一个名为/etc/ cron的cron脚本示例。每天晚上22:45运行的D /ldapbackup:

MAILTO=backup-emails@domain.com
45 22 * * * root /usr/local/bin/ldapbackup

现在文件已经创建,它们应该被复制到备份服务器上。
假设我们重新安装ldap,恢复过程可能是这样的:

sudo systemctl stop slapd.service
sudo mkdir /var/lib/ldap/accesslog
#清空安装生成的默认配置,防止影响配置文件的导入
sudo rm -rf /etc/openldap/slapd.d/*
sudo slapadd -F /etc/ldap/slapd.d -n 0 -l /export/backup/config.ldif
sudo slapadd -F /etc/ldap/slapd.d -n 1 -l /export/backup/domain.com.ldif
sudo slapadd -F /etc/ldap/slapd.d -n 2 -l /export/backup/access.ldif
sudo chown -R openldap:openldap /etc/ldap/slapd.d/
sudo chown -R openldap:openldap /var/lib/ldap/
sudo systemctl start slapd.service
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IForFree

整理不易,望多支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值