当我们在网络上有数十台计算机时,有必要正确组织数据以及不同用户的凭据。为了创建层次结构,拥有一个像LDAP这样的系统非常重要,它将允许您正确存储,管理和保护所有计算机的信息,并且还将负责管理所有用户和资产。
这是那些押注自由软件的人最常用的协议之一。因此,如果您有兴趣了解它的确切用途,尤其是它的工作原理,您可以在这里找到有关LDAP以及如何在Linux系统上安装和配置它的所有信息。这样,当您开始做生意时,这个过程对您来说会更容易。
什么是LDAP,它的用途是什么?
LDAP(轻量级目录访问协议)是一种 TCP/IP 应用层协议,允许访问有序的分布式目录服务以搜索网络环境中的任何信息。在我们继续解释LDAP的用途之前,我们需要知道“目录”是什么。目录是一组具有以逻辑和分层方式组织的属性的对象,也就是说,它采用树的形式,并根据我们想要的内容完美排序,无论是按字母顺序,还是按用户、地址等。
通常,LDAP服务器负责存储身份验证信息,即用户名和密码,以便以后访问系统的另一个协议或服务。除了存储用户名和密码外,您还可以存储其他信息,例如用户的联系方式、本地网络资源的位置、用户自己的数字证书等等。
LDAP 是一种访问协议,允许我们访问本地网络的资源,而无需在操作系统中创建不同的用户,此外,它的通用性要广泛得多。例如,LDAP 允许不同软件(如 Docker、OpenVPN)、文件服务器(如 QNAP、Synology 或 ASUSTOR 等)的用户执行身份验证和授权任务。
LDAP 既可以由被要求提供访问凭据的用户使用,也可以由应用程序使用,以了解他们是否有权访问某些系统信息。通常,LDAP服务器位于专用网络(即局域网)上,以验证不同的应用程序和用户,但它也可以在公共网络上正常工作,没有任何问题。
支持LDAP的两个最著名的活动目录服务是“Windows Active Directory”,也称为“Windows Active Directory”,以及OpenLDAP。因此,LDAP协议与这两种技术兼容,因此用户可以从任何地方访问所有文件和应用程序,他们只需要进行身份验证,就可以访问他们的计算机。
例如,LDAP版本是LDAPv3,因此,当我们安装和使用此协议时,在绝大多数情况下,我们将使用LDAPv3协议来验证不同的客户端。
LDAP 服务器的工作原理
LDAP 是一种具有客户端-服务器架构的协议,因此,我们将有几个客户端连接到一个或多个 LDAP 服务器。通常,使用单个LDAP服务器,数十或数百个客户端将连接到该服务器以访问本地网络的不同资源。服务器是存储与目录相关的所有数据的地方,它还将负责用户身份验证,验证只有一个用户同时连接或来自不同设备的多个用户,以及我们将在下面解释的其他任务。
LDAP的工作方式非常简单,因为通信就像客户端和服务器之间的任何其他通信一样,就像在Windows中使用Active Directory一样。以下是沟通的三个最重要的步骤:
- 客户端通过 TCP/IP 端口 389 连接到 LDAP 服务器(该过程称为目录系统代理)以启动 LDAP 会话。
- 在客户端和服务器之间建立连接。
- 数据在服务器和客户端之间交换。
客户端在连接时可以执行两个基本操作,但首先我们必须区分身份验证和授权。身份验证是我们根据系统识别自己的机制,例如,通过用户名和密码。授权是我们有权或无权在系统中做某事的机制。在LDAP服务器上,我们可以这样做:
- 读取信息:要读取客户端必须进行身份验证的信息,然后它将尝试从目录中读取和获取信息,在执行此步骤之前,服务器将负责检查该特定用户是否具有读取信息的权限。
- 修改信息:修改信息的过程是一样的,但服务器会检查我们是否对服务器有修改权限。
LDAP还允许我们在多个服务器之间交换信息,如果我们在一台服务器上进行身份验证并且它没有必要的信息,我们可以对在同一本地网络上拥有的另一台服务器进行此查询,以检查我们是否确实拥有此信息。这类似于DNS服务器发生的情况,DNS服务器在树上互相询问,直到它们到达根服务器。
操作类型
在服务器上,我们可以作为客户端执行不同的操作,下面,您可以看到所有可以执行的操作:
- 添加:添加新条目。如果该条目已存在,服务器将通知我们。
- 修改:修改条目。该协议允许三种不同的修改,添加新值,替换值或删除值。
- 删除:删除条目。
- 搜索:搜索或获取目录条目。
- 比较:查看命名条目是否具有特定属性。
- 放弃:中止以前的请求。
- 绑定:向服务器进行身份验证。
- 启动 TLS:使用 LDAPv3 协议中的 TLS 建立安全通信。
- 取消绑定:关闭连接。
组件和结构
为了使此协议执行其任务,既有目录结构又有组件。最重要的组件是:
- 目录:这是目录条目的树。
- 输入:由一组属性组成。这些条目通过列出用户的所有属性来描述用户。每个条目都有一个唯一标识符及其 DN(可分辨名称)。这使得每个名称都成为目录条目的唯一标识符。它可以是个人、组织等的名称。
- 属性:属性具有名称,并且在架构中定义了一个或多个值。在某些情况下,来自输入的某些属性应该是必需的,而其他属性只是可选的。
- LDIF:在这种情况下,它是轻量级目录交换格式,它是用于存储LDAP目录数据的文本文件扩展名,即它是LDAP条目的ASCII文本表示形式。
LDAP 的基本结构可能如下所示:
dn: cn=Redes Zone,dc=example,dc=com
cn: Redes Zone
givenName: Redes
sn: Zone
telephoneNumber: +34 666 111 111
telephoneNumber: +34 666 222 222
mail: redeszone@example.com
manager: cn=RedesZone2,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
- dn(可分辨名称):这是条目的名称,但它不是属性,也不是条目本身的一部分。
- cn(公用名):这是相对可分辨的名称。
- dc(域组件):这是父条目的可分辨名称。
其余的行是条目的属性,例如给定名称,sn,电话号码,邮件以及我们拥有的不同对象类。服务器始终托管以特定条目开头的子树。
要执行搜索,我们必须放置一个URL以获取信息,我们必须使用的语法如下:ldap://host:puerto/DN?attributes?scope?filter?extensions
其中许多组件都是可选的,例如,我们可以简单地调用 DN 来返回与此条目相关的所有信息。
Microsoft活动目录和LDAP之间的差异
Microsoft Active Directory内部使用LDAP协议来执行从客户端到服务器或服务器的所有通信,因此,它负责客户端进行身份验证和访问任何存储的数据,此外,我们必须考虑到该协议是多平台的,我们不仅在Windows操作系统中拥有它, 它还通过该协议与Linux,Unix和macOS兼容。为了给您一个想法,以下目录服务使用此协议进行通信:
- Microsoft活动目录。
- Apache
- 红帽目录服务。
- OpenLDAP.
许多其他服务也使用它,尤其是最新的 OpenLDAP,它是该协议的开源实现,可以安装在任何系统上,因为源代码可用于编译它。此外,它与使用相同协议的其他服务器兼容。但是,在大多数 Linux 发行版中,我们在其存储库中都提供了它。
应该注意的是,有许多工具使用此特定协议在目录服务中进行客户端-服务器通信。尽管很明显,即使是Microsoft的活动目录,也使用此特定协议。
身份验证的类型
由于 LDAP 提供的身份验证方面,用户可以通过三种方法进行身份验证。这些在安全等领域可能有所不同。它们如下。
- 匿名:这是最不安全的身份验证。尝试访问服务的用户的帐户存储在公共 LDAP 数据库中。
- 简单:该系统基于名称组合,其输入名称和密码在许多情况下通过纯文本未加密的方式传递。如果安全措施不充分,这很容易拦截。强烈建议对所有身份验证数据添加SSL加密,以防止任何跟踪器拦截它,这可能导致损害用户和他们有权访问的所有系统。
- 萨斯尔:它是针对 LDAP 进行身份验证的最安全机制。此类型可以集成到某些机制中,例如服务器上的 TLS 或 Kerberos。在 Kerberos 的情况下,加密用于防止针对通过网络移动的身份验证数据的攻击。它与不同的服务兼容,例如OpenVPN或Linux Samba等。
基本安装和配置
在基于 Linux 的操作系统上安装和调试非常简单,您还可以在 QNAP NAS 上激活服务器。接下来,我们将解释如何在 Debian 和 QNAP 中执行基本安装和配置。
此服务可以通过不同的方式实现,具体取决于要使用的需求。它还有不同的供应商,以选择最适合我们的供应商。
最常用的,但逐渐减少的是本地LDAP配置,我们在服务器上托管自己的实例。为此,我们有诸如OpenLDAP之类的服务,这是目前市场上最受欢迎的服务之一。
在云中配置LDAP,所需的维护最少,这是使用它的主要原因之一。这使得有必要订阅LDAP服务器,该服务器取代了我们自己拥有的服务器。
Debian
如果你有一个像Debian这样的基于Linux的操作系统,你将能够通过发行版的官方仓库安装LDAP。为此,我们可以将以下命令放在终端中,从逻辑上讲,我们需要超级用户权限。sudo apt install slapd ldap-utils
- 运行它后,它会询问我们在服务器上放置什么管理员密码,一旦我们设置了它,它将完成软件安装,我们可以开始使用它。
- 为了验证它是否已正确安装,我们放置以下命令,它将向我们显示当前服务器的所有数据。
sudo slapcat
- 以下屏幕截图应显示我们在安装后立即得到的内容:
- 现在我们必须重新配置 slapd 才能放置我们自己的域,我们执行以下命令以从配置向导开始。
sudo dpkg-reconfigure slapd
- 该向导将询问我们服务器的许多方面,我们可以保留以下屏幕截图中显示的所有内容。最重要的是正确放置DN。
- 完成所有操作后,我们将准备好服务器来添加不同的用户。我们要做的第一件事是创建一个所有用户的列表,为此我们在 /etc/ldap 中创建一个名为“users.ldif”的文件。
sudo touch /etc/ldap/users.ldif
- 使用任何文本编辑器,我们继续编辑此文件,内容如下:
dn: ou=People,dc=redeszone,dc=net
objectClass: organizationalUnit
ou: People
- 完成此操作后,我们必须将其输入服务器,如下所示:
sudo ldapadd -D "cn=admin,dc=redeszone,dc=net" -W -H ldapi:/// -f users.ldif
- 它会要求我们提供密码,我们将继续输入密码。它不应该给我们任何类型的错误。
- 最后,如果要执行搜索,可以通过以下方式进行:
sudo ldapsearch -x -b "dc=redeszone,dc=net" ou
服务器的基本配置已经完成,现在我们必须添加具有所需信息的不同条目。
威联通网络存储服务器
如果您使用的是 QNAP NAS 服务器,我们默认安装了 LDAP 服务器。为此,我们转到“控制面板/应用程序/ LDAP服务器”部分。在此菜单中,我们继续输入域名和管理员密码,一旦我们指出它,我们继续单击“应用”。在此之后,请按照以下一系列步骤操作:
- 应用更改后,我们将启动并运行服务器。现在,我们将看到名为“用户”,“组”以及“备份和还原”的新选项卡。
- 在用户部分,我们将能够使用小型配置向导注册不同的用户。您所要做的就是按照这个简单的向导添加任意数量的用户。
- 我们还有可能添加新的用户组,我们还将有一个助手来帮助我们完成该过程。
- 最后,在备份和还原部分,我们将能够备份整个服务器数据库,甚至可以从以前的副本还原它,这是不丢失服务器中包含的所有信息的理想选择。
如您所见,在 QNAP 上设置此 LDAP 服务器非常简单,我们不必通过控制台执行任何命令,一切都通过图形用户界面完成。
LDAP 替代方案
尽管LDAP是世界上使用最广泛的技术之一,但还有其他替代方案也被认为对几乎任何组织都非常好。选择其中之一,超越品味,取决于我们将需要的功能以及在每个特定情况下呈现给我们的具体要求。其中最著名的是Microsoft的Active Directory。
它是一种广泛用于身份验证和访问控制的解决方案。此目录解决方案侧重于将这两个系统应用于网络内的用户、组和设备。同时,您还可以为我们提供基于 LDAP 的目录服务。
另一方面,我们有Kerberos。这是当今用于执行网络身份验证和分布式环境访问控制的另一个伟大的方法。这侧重于用户和服务的身份验证,而不是像LDAP那样管理目录数据。另一方面,在某些情况下,它具有比LDAP更高的安全性和更好的数据加密。
在这些情况下,RADIUS协议也有效。这些广泛用于需要远程访问以验证和授权用户的网络中。为此,它使用 SAML(安全断言标记语言)协议,该协议适用于基于 Web 的应用程序的身份验证和授权。
无论如何,重要的是要注意服务的选择取决于不同的因素。因此,并非所有系统都适合所有希望实施这些系统的组织。必须考虑网络类型、复杂性以及最重要的是每种特定情况所需的安全要求等方面。
结论
LDAP协议广泛用于专业环境中,以验证不同的用户,并且我们将能够以有序和分层的方式存储信息。该协议不仅被OpenLDAP等软件使用,还被其他目录系统(如Windows或RedHat)使用,以及我们已经解释过的许多其他系统。尽管乍一看工作起来似乎很复杂,但一旦我们安装了服务器并开始注册用户和组,您将完全了解与此重要协议相关的所有内容。
该协议是验证公司内部用户身份的最重要协议之一,此外,它通常也与RADIUS服务器一起使用,根据我们的需要,我们可以选择此协议而不是RADIUS,甚至可以两者共存于同一本地网络中用于我们可以提供的不同用途。