介绍
LDAP(Lightweight Directory Access Protocol)是旨在在管理和访问集中式的文件和目录结构中的相关信息的协议。
在某些方面,它运作类似于关系数据库,但这并不适用于所有内容. 层次结构是数据如何关联的主要区别。
在本指南中,我们将讨论如何在 Ubuntu 14.04 服务器上安装和配置 OpenLDAP 服务器,然后我们将安装和保护一个 phpLDAPadmin 接口,以提供一个简单的 Web 接口。
安装 LDAP 和辅助工具
在我们开始之前,我们必须安装必要的软件. 幸运的是,这些包都在Ubuntu的默认存储库中。
这是我们第一次在本会中使用apt
,所以我们会更新我们的本地包索引,然后我们可以安装我们想要的包:
1sudo apt-get update
2sudo apt-get install slapd ldap-utils
在安装过程中,您将被要求选择并确认 LDAP 的管理员密码. 您实际上可以把任何东西放在这里,因为您将有机会在一瞬间改变它。
重新配置 slapd 以选择更好的设置
尽管该包刚刚安装,但我们将继续前进并重新配置Ubuntu安装的默认设置。
原因是,虽然该包有能力提出许多重要的配置问题,但这些问题在安装过程中被忽略,我们可以通过告诉我们的系统重新配置该包来获得所有提示:
1sudo dpkg-reconfigure slapd
有幾個新的問題將被問到,當你通過這個過程. 讓我們現在通過這些:
- Omit OpenLDAP 服务器配置 ? No
- DNS域名?
- 此选项将决定您目录路径的基础结构 。 阅读信息以准确理解如何实施。
- 这是一个相当开放的选项 。 您可以选择您想要的"域名"值, 即使您没有实际的域名 。 然而,如果你有服务器的域名,使用这个可能很明智.
- 对于本向导,我们将选择test.com 进行配置.
- 组织名称?
- 这再次完全取决于你的喜好.
- 对于本指南,我们将使用例 作为我们组织的名称.
- 管理员密码?
- 我在安装部分提到,这是您选择管理员密码的真正机会. 您在此选择的任何内容都会覆盖您之前使用的密码 。
- 数据库后端? HDB
- 被打掉后删除数据库? * 移动旧数据库? * 允许 LDAPv2 协议吗 ? 页:1
在这一点上,你的LDAP应该以相当合理的方式配置。
安装 phpLDAPadmin 以使用 Web 接口管理 LDAP
虽然很可能通过命令行管理LDAP,但大多数用户会发现使用Web界面更容易。我们将安装提供此功能的phpLDAPadmin,以帮助消除一些学习LDAP工具的摩擦。
Ubuntu 存储库包含 phpLDAPadmin 包,您可以通过键入来安装:
1sudo apt-get install phpldapadmin
这应该安装管理界面,启用必要的Apache虚拟主机文件,并重新加载Apache。
我们需要配置phpLDAPadmin以使用我们为LDAP配置的域架构,我们也将做一些调整来保护我们的配置一点点。
设置 phpLDAPadmin
现在该包已安装,我们需要配置一些东西,以便它可以连接到在OpenLDAP配置阶段创建的LDAP目录结构。
首先,请在文本编辑器中打开 root 权限的主要配置文件:
1sudo nano /etc/phpldapadmin/config.php
在此文件中,我们需要添加我们为 LDAP 服务器设置的配置细节,开始搜索主机参数并将其设置为您的服务器的域名或公共 IP 地址。
$servers->setValue('server','host','server_domain_name_or_IP');
接下来,您需要为您的 LDAP 服务器配置您选择的域名。记住,在我们的示例中,我们选择了 test.com
. 我们需要将此转换为 LDAP 语法,将每个域组件(一切不是点)替换为 dc
规格的值。
所有这一切都意味着,而不是写‘test.com’,我们会写一些像‘dc=test,dc=com’这样的东西,我们应该找到设置服务器基数参数的参数,并使用我们刚刚讨论的格式来参考我们选择的域:
$servers->setValue('server','base',array('dc=test,dc=com'));
我们需要在我们的 login bind_id 参数中调整相同的东西. 参数 cn
已经设置为 "admin". 这是正确的. 我们只需要重新调整 `dc' 部分,正如我们上面所做的:
$servers->setValue('login','bind_id','cn=admin,dc=test,dc=com');
我们需要调整的最后一件事是控制警告消息的可见性的设置. 默认情况下,phpLDAPadmin将在其Web接口中投放一些令人烦恼的警告消息,这对模板文件的功能没有影响。
我们可以通过搜索hide_template_warning
参数来隐藏这些,不评论包含它的行,并将其设置为真
:
$config->custom->appearance['hide_template_warning'] = true;
这是我们需要调整的最后一件事. 您可以在完成后保存和关闭文件。
创建一个SSL证书
我们希望通过SSL保护我们与LDAP服务器的连接,以便外部人无法拦截我们的通信。
由于管理员界面正在与本地网络上的LDAP服务器进行交谈,我们不需要使用SSL来进行这种连接,我们只需要在连接时确保外部连接到我们的浏览器。
要做到这一点,我们只需要设置一个自签名的SSL证书,我们的服务器可以使用,这不会帮助我们验证服务器的身份,但它将允许我们加密我们的消息。
OpenSSL 包应该默认安装在您的系统上. 首先,我们应该创建一个目录,以保留我们的证书和密钥:
1sudo mkdir /etc/apache2/ssl
接下来,我们可以通过键入一个动作创建密钥和证书:
1sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
您将需要回答一些问题,以便实用程序正确地填写证书中的字段。唯一真正重要的是提示说共同名称(例如服务器FQDN或您的名称)
。
完成后,您的证书和密钥将被写入 /etc/apache2/ssl
目录。
创建密码身份验证文件
我们还希望通过密码保护我们的 phpLDAPadmin 位置. 尽管 phpLDAPadmin 具有密码验证,但这将提供额外的保护水平。
我们需要的实用程序包含在一个Apache实用程序包中。
1sudo apt-get install apache2-utils
现在你有实用程序可用,你可以创建一个密码文件,其中将包含你选择的用户名和相关的哈希密码。
我们会将此保存在 /etc/apache2
目录中. 创建文件并输入您想要使用的用户名:
sudo htpasswd -c /etc/apache2/htpasswd demo_user
现在,我们已经准备好修改Apache,以利用我们的安全升级。
安全的Apache
我们应该做的第一件事是在Apache中启用SSL模块,我们可以通过键入:
1sudo a2enmod ssl
这将允许模块,允许我们使用它,我们仍然需要配置Apache来利用这一点。
目前,Apache正在阅读一个名为000-default.conf
的文件,用于正常的,未加密的HTTP连接,我们需要告诉它将我们的phpLDAPadmin接口的请求重定向到我们的HTTPS接口,以便连接被加密。
当我们重定向流量以使用我们的SSL证书时,我们还将执行密码文件来验证用户。
更改phpLDAPadmin Apache配置
我们要做的第一件事是修改设置为服务我们的 phpLDAPadmin 文件的名称。
在文本编辑器中打开 root 特权的文件:
1sudo nano /etc/phpldapadmin/apache.conf
这是我们需要决定我们想要访问我们的接口的URL位置的地方。默认是/phpldapadmin
,但我们希望改变这一点,以减少机器人和恶意方的随机登录尝试。
对于本指南,我们将使用位置 /superldap
,但您应该选择自己的值。
我们需要修改指定Alias
的行,这应该是在IfModule mod_alias.c
块中。
<IfModule mod_alias.c>
Alias /superldap /usr/share/phpldapadmin/htdocs
</IfModule>
完成后,保存并关闭文件。
配置 HTTP 虚拟主机
接下来,我们需要修改当前的 Virtual Hosts 文件,并在编辑器中使用 root 特权打开它:
1sudo nano /etc/apache2/sites-enabled/000-default.conf
在里面,你会看到一个相当裸体的配置文件,看起来像这样:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
我们想添加有关我们的域名或IP地址的信息来定义我们的服务器名称,我们想设置我们的重定向,以便将所有HTTP请求指向HTTPS接口。
我们讨论的更改将最终看起来像这样. 用您自己的值修改红色项目:
<VirtualHost *:80> ServerAdmin webmaster@server_domain_or_IP DocumentRoot /var/www/html ServerName server_domain_or_IP Redirect permanent /superldap https://server_domain_or_IP/superldap ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
保存并关闭文件,当你完成。
配置 HTTPS 虚拟主机文件
Apache 包含默认 SSL 虚拟主机文件,但默认情况下未启用。
我们可以通过键入来实现:
1sudo a2ensite default-ssl.conf
这将将文件从可用网站
目录链接到可用网站
目录。我们现在可以通过键入编辑此文件:
1sudo 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 的位置,并使用我们生成的文件设置身份验证,我们将要求任何试图访问此内容的用户作为有效用户进行身份验证:
<Location /superldap> AuthType Basic AuthName "Restricted Files" AuthUserFile /etc/apache2/htpasswd Require valid-user </Location>
保存并关闭文件,当你完成。
重新启动 Apache 以实现我们所做的所有更改:
1sudo service apache2 restart
现在我们可以转到实际的界面。
登录到 phpLDAPadmin Web 界面
我们已经对phpLDAPadmin软件进行了所需的配置更改,现在我们可以开始使用它。
我们可以通过访问我们的服务器的域名或公共IP地址访问网络接口,然后是我们配置的名称。
http://server_domain_name_or_IP/superldap
第一次访问时,您可能会看到有关网站的SSL证书的警告:
警告只是在这里,让你知道浏览器无法识别签署您的证书的证书授权机构. 由于我们签署了我们的 own 证书,这是预期而不是一个问题。
点击无论如何继续
按钮或您浏览器提供的任何类似选项。
接下来,您将看到您为 Apache 配置的密码提示:
填写您用httpasswd
命令创建的帐户凭证,您将看到主要的phpLDAPadmin登陆页面:
点击您可以在页面左侧看到的登录
链接。
登录DN
类似于您将使用的用户名,它包含cn
下的帐户名称和您为服务器选择的域名,分为dc
部分,如上所述。
如果您正确配置了 phpLDAPadmin,它应该预先填充对管理员帐户的正确值。
1cn=admin,dc=test,dc=com
对于密码,请输入您在 LDAP 配置过程中配置的管理员密码。
您将被带到主界面:
添加组织单位、组和用户
在此时,您已登录到 phpLDAPadmin 界面,您可以添加用户、组织单位、组和关系。
LDAP 在您想要如何结构数据和目录等级方面是灵活的,您基本可以创建您想要的任何类型的结构,并为它们的互动创建规则。
由于此过程在 Ubuntu 14.04 上与 Ubuntu 12.04 上相同,您可以按照 Ubuntu 12.04 的 LDAP 安装文章的添加组织单位、组和用户
部分中所述的步骤进行操作(LINK0)。
此安装的步骤将完全相同,所以请跟上,以获得与接口合作的一些实践,并了解如何构建您的单位。
结论
你现在应该在 Ubuntu 14.04 服务器上安装和配置 OpenLDAP. 你还安装并配置了一个 Web 界面来管理你的结构,通过 phpLDAPadmin 程序。
我们设置的系统非常灵活,您应该能够根据您的需求设计自己的组织方案并管理资源组,在下一个指南中,我们将讨论如何配置您的网络机器以使用这个LDAP服务器进行系统身份验证。