添加组织单位

我们可以添加组织单位 (ou)。
首先,创建一个新的 LDIF 文件。
让我们将其命名为 users.ldif,然后输入:

dn: ou=users,dc=onitroad,dc=local
objectClass: organizationalUnit
ou: users

然后我们使用 ldapadd 添加单元:

$ ldapadd -f users.ldif -D cn=admin,dc=onitroad,dc=local -w mypass

此组织单位包含所有 LDAP 用户。

LDAP 的用途

LDAP 不仅保留用户列表,而且我们还可以将其用作文件的存储。

如上所述,我们可以使用它来验证用户身份。
此外,我们可以将 DNS 记录存储在 LDAP 服务器中。

LDAP 的另一种用法,我们可以将其用作组织的黄页目录服务,以提供有关用户或者员工、部门、联系信息、电话号码、地址、私有数据等的信息。

使用 LDAP 验证用户

默认情况下,Linux 使用 /etc/passwd 文件对用户进行身份验证。

现在我们将看到如何使用 OpenLDAP 对用户进行身份验证。

确保系统上允许 OpenLDAP 端口(389、636)。

如果我们正在使用 iptables 防火墙,我建议我们查看 iptables 帖子以了解 Linux iptables 防火墙的这些命令。

$ authconfig --enableldap --enableldapauth --ldapserver ver=192.168.1.10 --ldapbasedn="dc=onitroad,dc=local" --enableldaptls --update

现在证书位于 /etc/openldap/cacerts 中。

当我们创建一个用户时,你必须定义一些需要的字段。

如果要创建用户 adam,则将创建 adam.ldif 文件并写入以下内容:

dn: uid=adam,ou=users,dc=onitroad,dc=local
uid: adam
cn: adam
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: mypass
shadowLastChange: 14846
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 1000
homeDirectory: /home/adam

如果我们使用 CentOS 7,我们应该在将密码放入 LDIF 文件之前使用 slappasswd 命令加密密码,如下所示:

$ slappasswd

然后我们把加密后的密码复制到ldif文件上,这样文件就会是这样的:

uid: adam
cn: adam
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: {SSHA}sathXSo3XTWrbi20Fp+MsqJHjXkHGhT/
shadowLastChange: 14846
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 1000
homeDirectory: /home/adam

现在我们可以使用 ldapadd 添加用户:

$ ldapadd -f adam.ldif -x -D cn=admin,dc=onitroad,dc=local -w mypass

安装 OpenLDAP

要安装 OpenLDAP,我们必须安装 openldap、openldap-servers 和 openldap-clients 包。

$ yum -y install openldap openldap-servers openldap-clients

或者,如果我们使用的是 CentOS 7,则可以使用 dnf 或者 Dandified Yum。

$ dnf -y install openldap openldap-servers openldap-clients

如果你使用像 Ubuntu 这样的基于 Debian 的系统,你可以像这样安装它:

$ sudo apt-get install slapd
$ sudo apt-get install ldap-utils

然后我们可以让服务在启动时自动运行:

$ systemctl enable slapd

修改条目

OpenLDAP 将其信息存储在 bdb 或者 hdb 文件中。
我们可以在以下位置找到 hdb 文件:

/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

文件。

要标识元素,请使用 dn(专有名称)属性。
所以我们的 LDIF 文件中的第一行将是:

dn: olcDatabase={2}hdb,cn=config

然后我们指定是要添加(add)还是修改(modify)

changeType: modify

我们还必须澄清我们是替换它(replace)还是删除它(delete)

replace: olcSuffix

最后,我们键入已更改属性的新值。

olcSuffix: dc=onitroad,dc=local

回到我们的文件。
像这样更改以下条目:

olcSuffix: dc=my-domain,dc=com

olcRootDN: cn=Manager,dc=my-domain,dc=com

所以我们的 LDIF 文件将是这样的:

dn: olcDatabase={2}hdb,cn=config
changeType: modify
replace: olcSuffix
olcSuffix: dc=onitroad,dc=local

replace: olcRootDN
olcRootDN: cn=admin,dc=example,dc=local

在我们的文件中

/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

文件。
dn 属性是 dn:

olcDatabase={2}hdb,并且因为文件在 config 文件夹中,所以完整的 dn 属性是 dn:

olcDatabase={2}hdb,cn=config

然后我们保存我们的文件并使用 ldapmodify:

$ ldapmodify -Y EXTERNAL -H ldapi:/// -f myfile.ldif

我们可以使用 ldapsearch 命令来检查更改:

$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase=\*

现在,数据已更改。

此外,我们可以使用 slaptest 命令来检查配置。

$ slaptest -u

什么是LDAP?

我们知道 Linux 将注册用户保存在 /etc/passwd 文件中,所以如果你想访问机器,你必须在该文件上有一个用户。

如果我们正在使用一台或者几台机器,那应该没问题,但是如果我们有数百台或者数千台机器,我们将如何维护用户管理任务(例如密码修改)或者任何其他管理任务(例如有人离开工作而我们)需要关闭他的账户,你会去每台机器上这样做吗?

这可能是一场噩梦,或者我们需要创建一个新帐户。
在这种情况下,我们需要一个集中的用户帐户管理系统,一个数据库来保存与用户帐户相关的所有信息。

此问题最常用的解决方案是轻量级目录访问协议 (LDAP)。

LDAP 使用通常的客户端/服务器范例。

添加条目

要添加条目,请使用 ldapadd 命令。

首先,我们创建我们的 ldif 文件:

dn: dc=onitroad,dc=local
objectClass: dcObject
objectClass: organization
dc: onitroad
o: onitroad

我们指定了一系列属性,如域组件 (dc)、专有名称 (dn) 和组织 (o)。

根据我们正在创建的对象的类型,在我们的例子中是 dcObject,一些属性是必需的,其他的则是可选的。

我们可以根据系统检查架构。

在 CentOS 6 上,

/etc/openldap/slapd.d/cn=config/cn=schema

在 CentOS 7 上,

/etc/openldap/schema

或者我们可以使用 grep 命令从系统中获取 .schema 文件。

我们示例中的对象组织在

core.schema

CentOS 7 上的文件。

正如我们所见,唯一需要的属性是 o,组织(organization)。

现在我们可以使用 ldapadd 命令来添加我们的对象:

$ ldapadd -f myobj.ldif -D cn=admin,dc=onitroad,dc=local -w mypass

我们使用 -f 指定文件名,使用 -D 指定管理员用户,使用 -w 指定密码。

要搜索条目,我们可以使用 ldapsearch 命令:

$ ldapsearch -x -b dc=onitroad,dc=local

添加用户

我们可以将用户添加到新创建的组织单位。

首先,我们创建我们的 ldif 文件:

dn: cn=adam,ou=users,dc=onitroad,dc=local
cn: adam
sn: USA
objectClass: myorg
userPassword: mypass
uid: adam

然后使用 ldapadd 命令添加用户:

$ ldapadd -f adam.ldif -x -D cn=admin,dc=onitroad,dc=local 2 -w mypass
安装和配置 Linux LDAP 服务器

LDAP 术语

如果我们要处理 LDAP 协议,我们需要了解一些术语,因为我们会经常使用它们。

Entry 条目(或者对象):LDAP 中的每个单元都被视为一个条目。

dn :条目名称。

o:组织名称。

dc :域组件。
例如,我们可以像这样写 onitroad.com dc=onitroad,dc=com。

cn : 通用名称,如人名或者某些对象的名称。

删除条目

删除条目非常简单,只需使用带有我们想要的 cn 的 ldapdelete 命令:

$ ldapdelete "cn=adam,ou=users,dc=onitroad,dc=local" -D cn=admin,dc=onitroad,dc=local -w mypass

我们可以使用 ldapsearch 检查该条目是否已删除:

$ ldapsearch -x -b "dc=onitroad,dc=local"

使用 LDAP Web 界面 (phpldapadmin)

对于新手来说,从终端工作可能有点棘手。
但是,我们可以使用一个基于 Web 的工具 phpldapadmin,它是用 PHP 编写的,以简化 OpenLDAP 的使用。

我们可以像这样安装它:

$ yum -y install phpldapadmin

上面的命令将安装 Apache Web 服务器,因此我们不需要安装它。

现在我们需要配置 phpldapadmin。

编辑此文件:

/etc/phpldapadmin/config.php

并更改此行:

$servers->setValue('server','host','PUT YOUR SERVER IP OR DOMAIN HERE');

如果你想使用 onitroad.local 作为域,你应该这样写:

$servers->setValue('server','base',array('dc=onitroad,dc=local'));

此外,我们需要像这样更改 bind_id 的行:

$servers->setValue('login','bind_id','cn=admin,dc= onitroad,dc=local');

并且不要忘记放置 apache 别名:

<IfModule mod_alias.c>
    Alias /ldap /usr/share/phpldapadmin/htdocs
</IfModule>

现在我们可以像这样访问 phpldapadmin:

http://服务器域名或者ip/ldap

在登录 DN 字段中,我们将使用以下内容:

cn=admin,dc=onitroad,dc=local

我们可以在此 Web 界面中完成 添加用户、组织和组等操作。

LDAP 服务器实现

LDAP 是一个开放的标准协议,许多都在实施该协议。

有 LDAP 的商业实现,例如:

  • 微软的Active Directory活动目录。
  • 甲骨文的Internet Directory互联网目录。
  • Oracle 的统一目录。
  • IBM 的 Security Directory Server安全目录服务器。
  • UnboundID 目录服务器。
  • NetIQ eDirectory 或者 eDirectory。
  • CA 目录或者 CA eTrust 目录。

以及免费的开源实现,例如:

  • OpenLDAP.
  • ForgeRock OpenDJ.
  • Apache DS.
  • 389 Directory Server.

在这篇文章中,我们将使用 OpenLDAP。

OpenLDAP 是在 Linux/UNIX 系统上运行的 LDAP 的开源实现。

添加组

此外,我们首先创建 ldif 文件:

dn: cn=developers,ou=users,dc=onitroad,dc=local
cn: developers
objectClass: groupOfNames
member: cn=adam,ou=users,dc=onitroad,dc=local

然后运行 ldapadd 添加组:

$ ldapadd -f groups.ldif -x -D cn=admin,dc=onitroad,dc=local -w mypass

配置 LDAP

安装成功后,需要使用ldappasswd命令为admin用户设置密码:

$ ldappasswd

OpenLDAP 的配置文件位于 /etc/openldap/slapd.d 目录中。

我们可以直接修改这些文件或者使用 ldapmodify 命令。
强烈建议使用 ldapmodify 命令修改 OpenLDAP。

LDAP 端口

LDAP 端口为 389,如果我们使用 TLS 保护 LDAP,则该端口将为 636.

我们可以使用 netstat 命令确保 OpenLDAP 正在运行的端口。

$ netstat -ntlp | grep slapd
日期:2020-07-15 11:16:50 来源:oir作者:oir