如何在 Ubuntu 14.04 服务器上安装和配置 OpenLDAP 和 phpLDAPadmin
介绍
LDAP,即轻量级目录访问协议,是一种旨在管理和访问集中式分层文件和目录结构中的相关信息的协议。
在某些方面,它的操作类似于关系数据库,但这并不适用于所有情况。层次结构是数据关联方式的主要区别。它可用于存储任何类型的信息,并且通常用作集中式身份验证系统的一个组件。
在本指南中,我们将讨论如何在 Ubuntu 14.04 服务器上安装和配置 OpenLDAP 服务器。然后我们将安装并保护 phpLDAPadmin 界面以提供简单的 Web 界面。
安装 LDAP 和助手实用程序
在我们开始之前,我们必须安装必要的软件。幸运的是,这些包都在 Ubuntu 的默认存储库中可用。
这是我们第一次在此会话中使用 apt
,因此我们将刷新本地包索引。之后我们可以安装我们想要的包:
sudo apt-get update
sudo apt-get install slapd ldap-utils
安装期间,系统会要求您选择并确认 LDAP 的管理员密码。实际上,您可以在此处放置任何内容,因为您将有机会在短时间内对其进行更改。
重新配置 slapd 以选择更好的设置
即使该软件包刚刚安装,我们仍将继续并重新配置 Ubuntu 安装时使用的默认设置。
这样做的原因是,虽然该软件包能够询问许多重要的配置问题,但在安装过程中会跳过这些问题。我们可以通过告诉我们的系统重新配置包来访问所有提示:
sudo dpkg-reconfigure slapd
在您完成此过程时,会提出很多新问题。现在让我们回顾一下:
- 省略 OpenLDAP 服务器配置?没有
- DNS 域名?
- 此选项将决定目录路径的基本结构。阅读消息以准确了解这将如何实施。
- 这实际上是一个相当开放的选择。您可以选择任何您喜欢的“域名”值,即使您不拥有实际的域。但是,如果您有服务器的域名,使用它可能是明智的。
- 对于本指南,我们将为我们的配置选择 test.com。
- 同样,这几乎完全取决于您的喜好。
- 对于本指南,我们将使用示例作为我们组织的名称。
- 正如我在安装部分提到的,这是您选择管理员密码的真正机会。您在此处选择的任何内容都将覆盖您之前使用的密码。
此时,您的 LDAP 应该以相当合理的方式配置。
安装 phpLDAPadmin 以使用 Web 界面管理 LDAP
虽然通过命令行管理 LDAP 的可能性很大,但大多数用户会发现使用 Web 界面更容易。我们将安装提供此功能的 phpLDAPadmin,以帮助消除学习 LDAP 工具的一些障碍。
Ubuntu 存储库包含 phpLDAPadmin 包。您可以通过键入以下内容来安装它:
sudo apt-get install phpldapadmin
这应该安装管理界面,启用必要的 Apache 虚拟主机文件,并重新加载 Apache。
Web 服务器现已配置为为您的应用程序提供服务,但我们将进行一些额外的更改。我们需要配置 phpLDAPadmin 以使用我们为 LDAP 配置的域架构,我们还将进行一些调整以稍微保护我们的配置。
配置 phpLDAPadmin
现在包已安装,我们需要配置一些东西,以便它可以连接到在 OpenLDAP 配置阶段创建的 LDAP 目录结构。
首先在文本编辑器中以 root 权限打开主配置文件:
sudo nano /etc/phpldapadmin/config.php
在此文件中,我们需要添加为 LDAP 服务器设置的配置详细信息。首先查找主机参数并将其设置为您服务器的域名或公共 IP 地址。此参数应反映您计划访问 Web 界面的方式:
<前>
接下来,您需要配置为 LDAP 服务器选择的域名。请记住,在我们的示例中,我们选择了
test.com
。我们需要通过将每个域组件(不是点的所有内容)替换为dc
规范的值来将其转换为 LDAP 语法。所有这一切意味着,我们将编写类似
dc=test,dc=com
的内容,而不是编写test.com
。我们应该找到设置服务器基本参数的参数,并使用我们刚刚讨论的格式来引用我们决定的域:<前>
我们需要在我们的登录 bind_id 参数中调整同样的事情。
cn
参数已经设置为\admin。这是正确的。我们只需要再次调整dc
部分,就像我们上面所做的那样:<前>
我们需要调整的最后一件事是控制警告消息可见性的设置。默认情况下,phpLDAPadmin 会在其 Web 界面中抛出一些关于模板文件的恼人警告消息,这些消息对功能没有影响。
我们可以通过搜索
hide_template_warning
参数来隐藏它们,取消注释包含它的行,并将其设置为“true”:<前>
这是我们需要调整的最后一件事。您可以在完成后保存并关闭文件。
创建 SSL 证书
我们希望使用 SSL 保护我们与 LDAP 服务器的连接,以便外部各方无法拦截我们的通信。
由于管理界面正在与本地网络上的 LDAP 服务器本身对话,因此我们不需要为该连接使用 SSL。我们只需要在连接时保护与浏览器的外部连接。
为此,我们只需要设置一个我们的服务器可以使用的自签名 SSL 证书。这不会帮助我们验证服务器的身份,但它可以让我们加密我们的消息。
OpenSSL 包应该默认安装在您的系统上。首先,我们应该创建一个目录来保存我们的证书和密钥:
sudo mkdir /etc/apache2/ssl
接下来,我们可以通过键入以下命令一次性创建密钥和证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
您必须回答一些问题,实用程序才能正确填写证书中的字段。唯一真正重要的是提示
Common Name (e.g. server FQDN or YOUR name)
。输入服务器的域名或 IP 地址。完成后,您的证书和密钥将写入
/etc/apache2/ssl
目录。创建密码验证文件
我们还想用密码保护我们的 phpLDAPadmin 位置。尽管 phpLDAPadmin 有密码验证,这将提供额外的保护级别。
我们需要的实用程序包含在 Apache 实用程序包中。通过键入以下内容获取它:
sudo apt-get install apache2-utils
现在您有了可用的实用程序,您可以创建一个密码文件,其中将包含您选择的用户名和关联的散列密码。
我们将把它保存在
/etc/apache2
目录中。创建文件并通过键入以下内容指定要使用的用户名:<前>
现在,我们已准备好修改 Apache 以利用我们的安全升级。
安全的阿帕奇
我们应该做的第一件事是在 Apache 中启用 SSL 模块。我们可以通过键入以下内容来做到这一点:
sudo a2enmod ssl
这将启用该模块,允许我们使用它。不过,我们仍然需要配置 Apache 以利用这一点。
目前,Apache 正在读取一个名为
000-default.conf
的文件,用于常规的、未加密的 HTTP 连接。我们需要告诉它将对我们的 phpLDAPadmin 接口的请求重定向到我们的 HTTPS 接口,以便连接被加密。当我们重定向流量以使用我们的 SSL 证书时,我们还将实施密码文件来对用户进行身份验证。在我们修改内容的同时,我们还将更改 phpLDAPadmin 界面本身的位置,以最大限度地减少有针对性的攻击。
修改 phpLDAPadmin Apache 配置
我们要做的第一件事是修改为服务我们的 phpLDAPadmin 文件而设置的别名。
在文本编辑器中以 root 权限打开文件:
sudo nano /etc/phpldapadmin/apache.conf
这是我们需要决定访问界面的 URL 位置的地方。默认值为
/phpldapadmin
,但我们希望更改它以减少机器人和恶意方的随机登录尝试。对于本指南,我们将使用位置
/superldap
,但您应该选择自己的值。我们需要修改指定
Alias
的行。这应该在IfModule mod_alias.c
块中。完成后,它应该如下所示:<前>
完成后,安全并关闭文件。
配置 HTTP 虚拟主机
接下来,我们需要修改当前的虚拟主机文件。在编辑器中以 root 权限打开它:
sudo nano /etc/apache2/sites-enabled/000-default.conf
在里面,您会看到一个相当简单的配置文件,如下所示:
<前>
我们想要添加关于我们的域名或 IP 地址的信息来定义我们的服务器名称,我们想要设置我们的重定向以将所有 HTTP 请求指向 HTTPS 接口。这将匹配我们在上一节中配置的别名。
我们讨论的更改最终将如下所示。用你自己的值修改红色的项目:
<前>
完成后保存并关闭文件。
配置 HTTPS 虚拟主机文件
Apache 包括一个默认的 SSL 虚拟主机文件。但是,默认情况下不启用它。
我们可以通过键入以下内容来启用它:
sudo a2ensite default-ssl.conf
这会将文件从
sites-available
目录链接到sites-enabled
目录。我们现在可以通过键入以下内容来编辑此文件:sudo nano /etc/apache2/sites-enabled/default-ssl.conf
这个文件比上一个文件复杂一点,所以我们只讨论我们必须做的更改。下面的所有更改都应该在文件的虚拟主机块中进行。
首先,再次将
ServerName
值设置为服务器的域名或 IP 地址,并更改ServerAdmin
指令:<前>
接下来,我们需要将 SSL 证书指令设置为指向我们创建的密钥和证书。这些指令应该已经存在于您的文件中,因此只需修改它们指向的文件:
<前>
我们需要做的最后一件事是设置位置块,它将为整个 phpLDAPadmin 安装实施密码保护。
我们通过引用我们为 phpLDAPadmin 提供服务的位置并使用我们生成的文件设置身份验证来做到这一点。我们将要求任何试图访问此内容的人以有效用户身份进行身份验证:
<前>
完成后保存并关闭文件。
重新启动 Apache 以实施我们所做的所有更改:
sudo service apache2 restart
我们现在可以转到实际界面。
登录到 phpLDAPadmin Web 界面
我们已经对 phpLDAPadmin 软件进行了所需的配置更改。我们现在可以开始使用它了。
我们可以通过访问我们服务器的域名或公共 IP 地址后跟我们配置的别名来访问 Web 界面。在我们的例子中,这是
/superldap
:<前>
第一次访问时,您可能会看到有关站点 SSL 证书的警告:
此处的警告只是让您知道浏览器无法识别为您的证书签名的证书颁发机构。因为我们签署了我们的自己的证书,所以这是意料之中的,不是问题。
单击“仍然继续”按钮或您的浏览器为您提供的任何类似选项。
接下来,您将看到您为 Apache 配置的密码提示:
填写您使用
htpasswd
命令创建的帐户凭据。您将看到主要的 phpLDAPadmin 登陆页面:单击页面左侧的“登录”链接。
您将被带到登录提示。登录“DN”就像您将要使用的用户名一样。它包含“cn”下的帐户名和您为服务器选择的域名,如上所述,分为“dc”部分。
如果您正确配置了 phpLDAPadmin,它应该预先填充了管理员帐户的正确值。在我们的例子中,这看起来像这样:
cn=admin,dc=test,dc=com
对于密码,请输入您在 LDAP 配置期间配置的管理员密码。
您将被带到主界面:
添加组织单位、组和用户
此时,您已登录到 phpLDAPadmin 界面。您可以添加用户、组织单位、组和关系。
LDAP 在您希望如何构建数据和目录层次结构方面非常灵活。您基本上可以创建您喜欢的任何类型的结构,并为它们的交互方式创建规则。
由于此过程在 Ubuntu 14.04 上与在 Ubuntu 12.04 上相同,您可以按照 Ubuntu 12.04 的 LDAP 安装文章的“添加组织单位、组和用户”部分中列出的步骤进行操作。
此安装的步骤将完全相同,因此请继续练习使用界面并了解如何构建单元。
结论
您现在应该在 Ubuntu 14.04 服务器上安装和配置了 OpenLDAP。您还安装并配置了一个 Web 界面以通过 phpLDAPadmin 程序管理您的结构。通过强制使用 SSL 和密码保护整个应用程序,您已经为应用程序配置了一些基本的安全性。
我们建立的系统非常灵活,您应该能够根据需要设计自己的组织架构和管理资源组。在下一个指南中,我们将讨论如何配置联网机器以使用此 LDAP 服务器进行系统身份验证。