如何在Ubuntu14.04服务器上安装和配置OpenLDAP和phpLDAPadmin
介绍
LDAP,即轻量级目录访问协议,是一种旨在管理和访问集中式分层文件和目录结构中的相关信息的协议。
在某些方面,它的操作类似于关系数据库,但这并不适用于所有情况。 层次结构是数据关联方式的主要区别。 它可用于存储任何类型的信息,并且通常用作集中式身份验证系统的一个组件。
在本指南中,我们将讨论如何在 Ubuntu 14.04 服务器上安装和配置 OpenLDAP 服务器。 然后,我们将安装并保护一个 phpLDAPadmin 界面,以提供一个简单的 Web 界面。
安装 LDAP 和 Helper 实用程序
在开始之前,我们必须安装必要的软件。 幸运的是,这些软件包都在 Ubuntu 的默认存储库中可用。
这是我们在本次会议中第一次使用 apt
,因此我们将刷新本地包索引。 之后我们可以安装我们想要的包:
sudo apt-get update sudo apt-get install slapd ldap-utils
在安装过程中,系统会要求您选择并确认 LDAP 的管理员密码。 您实际上可以将任何内容放在这里,因为您将有机会在短时间内更改它。
重新配置 slapd 以选择更好的设置
即使该软件包刚刚安装,我们仍将继续并重新配置 Ubuntu 安装时使用的默认设置。
这样做的原因是,虽然软件包能够提出很多重要的配置问题,但在安装过程中会跳过这些问题。 我们可以通过告诉我们的系统重新配置包来访问所有提示:
sudo dpkg-reconfigure slapd
在您完成此过程时,会有很多新问题会被问到。 现在让我们来看看这些:
- 省略 OpenLDAP 服务器配置? 否
- DNS域名? 此选项将确定目录路径的基本结构。 阅读消息以准确了解如何实施。 这实际上是一个相当开放的选择。 您可以选择任何您喜欢的“域名”值,即使您不拥有实际域。 但是,如果您有服务器的域名,那么使用它可能是明智的。 对于本指南,我们将选择 test.com 进行配置。
- 机构名称? 同样,这几乎完全取决于您的喜好。 对于本指南,我们将使用示例作为我们组织的名称。
- 管理员密码? 正如我在安装部分中提到的,这是您选择管理员密码的真正机会。 您在此处选择的任何内容都将覆盖您之前使用的密码。
- 数据库后端? HDB
- 清除 slapd 时删除数据库? 否
- 移动旧数据库? 是
- 允许 LDAPv2 协议? 否
此时,您的 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 界面的方式:
$servers->setValue('server','host',' server_domain_name_or_IP ');
接下来,您需要配置为 LDAP 服务器选择的域名。 请记住,在我们的示例中,我们选择了 test.com
。 我们需要通过将每个域组件(不是点)替换为 dc
规范的值来将其转换为 LDAP 语法。
这意味着我们将不写 test.com
,而是写 dc=test,dc=com
之类的东西。 我们应该找到设置服务器基本参数的参数,并使用我们刚刚讨论的格式来引用我们决定的域:
$servers->setValue('server','base',array('dc= test ,dc= com '));
我们需要在登录的 bind_id 参数中调整同样的内容。 cn
参数已设置为“admin”。 这是对的。 我们只需要再次调整 dc
部分,就像我们上面所做的那样:
$servers->setValue('login','bind_id','cn=admin,dc= test ,dc= com ');
我们需要调整的最后一件事是控制警告消息的可见性的设置。 默认情况下,phpLDAPadmin 将在其 Web 界面中抛出一些关于模板文件的恼人警告消息,这些消息对功能没有影响。
我们可以通过搜索 hide_template_warning
参数、取消注释包含它的行并将其设置为“true”来隐藏它们:
$config->custom->appearance['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
目录中。 创建文件并通过键入以下内容指定要使用的用户名:
sudo htpasswd -c /etc/apache2/htpasswd demo_user
现在,我们准备修改 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
块中。 完成后,它应该如下所示:
别名/superldap /usr/share/phpldapadmin/htdocs
完成后,安全并关闭文件。
配置 HTTP 虚拟主机
接下来,我们需要修改我们当前的 Virtual Hosts 文件。 在编辑器中使用 root 权限打开它:
sudo nano /etc/apache2/sites-enabled/000-default.conf
在里面,你会看到一个相当简单的配置文件,如下所示:
ServerAdmin 站长 @localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log 组合
我们想要添加有关我们的域名或 IP 地址的信息来定义我们的服务器名称,并且我们想要设置我们的重定向以将所有 HTTP 请求指向 HTTPS 接口。 这将匹配我们在上一节中配置的别名。
我们讨论的更改最终将如下所示。 用您自己的值修改红色项目:
ServerAdmin webmaster@ server_domain_or_IP DocumentRoot /var/www/html ServerName server_domain_or_IP重定向永久 /superldap https://server_domain_or_IP/superldap ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combine
完成后保存并关闭文件。
配置 HTTPS 虚拟主机文件
Apache 包含一个默认的 SSL 虚拟主机文件。 但是,默认情况下不启用它。
我们可以通过键入以下内容来启用它:
sudo a2ensite default-ssl.conf
这会将文件从 sites-available
目录链接到 sites-enabled
目录。 我们现在可以通过键入以下内容来编辑此文件:
sudo nano /etc/apache2/sites-enabled/default-ssl.conf
这个文件比上一个文件更复杂一些,所以我们将只讨论我们必须进行的更改。 以下所有更改都应在文件中的虚拟主机块中进行。
首先,再次将 ServerName
值设置为服务器的域名或 IP 地址,并更改 ServerAdmin
指令:
ServerAdmin webmaster@ server_domain_or_IP ServerName server_domain_or_IP
接下来,我们需要将 SSL 证书指令设置为指向我们创建的密钥和证书。 这些指令应该已经存在于您的文件中,因此只需修改它们指向的文件:
SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key
我们需要做的最后一件事是设置位置块,该块将为整个 phpLDAPadmin 安装实施密码保护。
我们通过引用我们为 phpLDAPadmin 提供服务的位置并使用我们生成的文件设置身份验证来做到这一点。 我们将要求任何试图访问此内容的人作为有效用户进行身份验证:
AuthType Basic AuthName “受限文件” AuthUserFile /etc/apache2/htpasswd需要有效用户
完成后保存并关闭文件。
重新启动 Apache 以实现我们所做的所有更改:
sudo service apache2 restart
我们现在可以进入实际界面。
登录 phpLDAPadmin Web 界面
我们已经对 phpLDAPadmin 软件进行了所需的配置更改。 我们现在可以开始使用它了。
我们可以通过访问我们服务器的域名或公共 IP 地址以及我们配置的别名来访问 Web 界面。 在我们的例子中,这是 /superldap
:
http:// server_domain_name_or_IP / superldap
第一次访问时,您可能会看到有关站点 SSL 证书的警告:
警告只是在这里让您知道浏览器无法识别签署您的证书的证书颁发机构。 由于我们签署了我们的 own 证书,因此这是意料之中的,不是问题。
单击“继续”按钮或浏览器为您提供的任何类似选项。
接下来,您将看到为 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 服务器进行系统身份验证。