在本指南中,我们将学习如何在 Rocky Linux 8 上安装 phpLDAPadmin。phpLDAPadmin 是用 PHP 编写的用于管理 LDAP 的 Web 应用程序,因此对于以 gui 为中心的系统管理员来说非常方便。 有了它,您可以通过浏览器管理 LDAP。
在继续之前,请通过以下链接了解如何在 Rocky Linux 8 上安装 OpenLDAP;
在 Rocky Linux 8 上安装和设置 OpenLDAP
在 Rocky Linux 8 上安装 phpLDAPadmin
安装所需的第三方存储库
一些必需的软件包,例如 phpLDAPadmin 和 php-ldap 模块,在默认的 Rocky Linux 8 存储库中不可用。
因此,您需要安装一些第三方存储库。
- 在 Rocky Linux 上安装 EPEL 存储库:
dnf install epel-release
- 安装 Lux YUM 存储库,它提供 phpLDAPadmin 包:
dnf install https://repo.iotti.biz/CentOS/8/noarch/lux-release-8-1.noarch.rpm
- 安装 Remi 存储库,它提供所需的 PHP-LDAP 模块:
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
启用 PHP 7.4 Remi 模块
dnf module reset php
dnf module enable php:remi-7.4
在 Rocky Linux 8 上安装 phpLDAPadmin
一旦存储库就位,然后运行以下命令在 Rocky Linux 8 上安装 phpLDAPadmin。
dnf install phpldapadmin
Dependencies resolved. ============================================================================================================================================================================ Package Architecture Version Repository Size ============================================================================================================================================================================ Installing: phpldapadmin noarch 1.2.6.2-1.el8.lux lux 799 k Installing dependencies: oniguruma5php x86_64 6.9.7.1-1.el8.remi remi-safe 210 k php-common x86_64 7.4.20-1.el8.remi remi-modular 1.2 M php-fpm x86_64 7.4.20-1.el8.remi remi-modular 1.6 M php-gd x86_64 7.4.20-1.el8.remi remi-modular 93 k php-json x86_64 7.4.20-1.el8.remi remi-modular 77 k php-ldap x86_64 7.4.20-1.el8.remi remi-modular 97 k php-mbstring x86_64 7.4.20-1.el8.remi remi-modular 529 k php-xml x86_64 7.4.20-1.el8.remi remi-modular 215 k Transaction Summary ============================================================================================================================================================================ Install 9 Packages Total download size: 4.8 M Installed size: 26 M Is this ok [y/N]: y
在 Rocky Linux 8 上配置 phpLDAPadmin
安装 phpLDAPadmin 后,继续配置它以连接到您的 openLDAP 服务器。
首先,备份提供的默认配置文件;
cp /etc/phpldapadmin/config.php{,.orig}
打开配置文件, /etc/phpldapadmin/config.php
用于编辑;
vim /etc/phpldapadmin/config.php
将配置文件向下滚动到该部分;
/********************************************* * Define your LDAP servers in this section * *********************************************/
为您的 LDAP 服务器定义一个合适的名称。 此名称将出现在 phpLDAPadmin Web 界面上。
$servers->setValue('server','name','Kifarunix-demo LDAP master');
设置您的 OpenLDAP 地址,这可以是可解析的主机名或 IP 地址。
$servers->setValue('server','host','192.168.60.29');
如果您的 OpenLDAP 服务器正在侦听非默认端口,请取消注释下面突出显示的行并定义端口。 (默认端口,这里使用389/tcp)
/* The port your LDAP server listens on (no quotes). 389 is standard. */ // $servers->setValue('server','port',389);
定义您的 OpenLDAP 基本 DN。
$servers->setValue('server','base',array('dc=ldapmaster,dc=kifarunix-demo,dc=com'));
如果要定义静态绑定DN,则在section下设置;
/* The DN of the user for phpLDAPadmin to bind with. For anonymous binds or 'cookie','session' or 'sasl' auth_types, LEAVE THE LOGIN_DN AND LOGIN_PASS BLANK. If you specify a login_attr in conjunction with a cookie or session auth_type, then you can also specify the bind_id/bind_pass here for searching the directory for users (ie, if your LDAP server does not allow anonymous binds. */ // $servers->setValue('login','bind_id',''); # $servers->setValue('login','bind_id','cn=Manager,dc=example,dc=com'); /* Your LDAP password. If you specified an empty bind_id above, this MUST also be blank. */ // $servers->setValue('login','bind_pass',''); # $servers->setValue('login','bind_pass','secret');
在本指南中,我们选择不定义静态绑定 DN。 阅读上面突出显示的部分。
定义 phpLDAPadmin 登录属性。 我们在本指南中使用 dn。 如果需要,您可以使用 uid。
// $servers->setValue('login','attr','uid'); $servers->setValue('login','attr','dn');
这将需要完整的 DN 才能登录。
这些只是本指南中所做的一些 phpLDAPadmin 配置。 请务必进行配置以满足您的需求。
为 phpLDAPadmin 创建 Web 服务器配置
首先,您需要一个 Web 服务器,它可以是 Apache 或 Nginx 以便能够从 Web 浏览器访问 phpLDAPadmin。
我们用 Apache 在这个设置中。 因此安装它。
dnf install httpd
接下来,您需要为 phpLDAPadmin 创建 Web 配置以定义如何从浏览器访问它。
cat > /etc/httpd/conf.d/phpldapadmin.conf << 'EOL' Alias /phpldapadmin /usr/share/phpldapadmin/htdocs <Directory /usr/share/phpldapadmin/htdocs> <IfModule mod_authz_core.c> Require all granted </IfModule> </Directory> EOL
Save 并退出配置文件。
使用此配置,您将必须使用 URL 在浏览器上访问 phpLDAPadmin, https://ldap-server-hostname-OR-IP/phpldapadmin
.
另一方面,您可以创建一个 Apache phpLDAPadmin 的 VirtualHost 如下所示。 请务必在配置中进行适当的替换。
cat > /etc/httpd/conf.d/phpldapadmin.conf 'EOL' <VirtualHost *:80> ServerName ldapmaster.kifarunix-demo.com DocumentRoot /usr/share/phpldapadmin/htdocs <Directory /usr/share/phpldapadmin/htdocs> <IfModule mod_authz_core.c> # Apache 2.4 Require all granted </IfModule> </Directory> ErrorLog /var/log/httpd/phpldapadmin.error.log CustomLog /var/log/httpd/phpldapadmin.access.log combined </VirtualHost> EOL
通过此配置,您可以使用 URL 访问 phpLDAPadmin, https://ldap-server-hostname-OR-IP
.
设置文档根的正确所有权,如下所示;
chown -R apache:apache /usr/share/phpldapadmin
检查 apache 是否存在语法错误。
httpd -t
如果你得到输出, Syntax OK
,那你就可以走了。 否则,在继续之前修复任何错误。
配置防火墙D
允许外部访问 Apache 在 firewalld 上,如果它正在运行。
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
配置 SELinux
如果 SELinux 正在运行,请运行以下命令;
允许 httpd 连接到网络。
setsebool -P httpd_can_network_connect 1
允许 httpd 连接到 OpenLDAP 服务器。
setsebool -P httpd_can_connect_ldap 1
直接从 ldap 解析用户密码条目
setsebool -P authlogin_nsswitch_use_ldap 1
允许系统与 NIS 一起运行。
setsebool -P nis_enabled 1
跑步 Apache
启动并启用 Apache 在系统启动时运行。
systemctl enable --now httpd
在 Rocky Linux 8 上访问 phpLDAPadmin
您现在可以使用 url 从任何浏览器访问 phpLDAPadmin。 https://server-hostname-or-IP/phpldapadmin
或者 https://server-hostname-or-IP
取决于您的配置。
这将带您进入 phpLDAPadmin Web 界面。
点击 登录 就在您的 LDAP 服务器名称下方以获取登录界面。 要登录,您可以指定您的 DN,例如, cn=admin,dc=ldapmaster,dc=kifarunix-demo,dc=com
.
成功登录后,您应该能够看到您的 LDAP 结构。
如果通过单击架构,您会收到以下错误;
我们试图找到您的 SCHEMA 失败(对象类)
然后您需要在前端 LDAP 数据库上启用对 Subschema 的匿名读取访问以解决此问题。
如果您按照我们的指南在上面提供了链接的 Rocky Linux 8 上安装和设置 OpenLDAP 服务器,那么我们当前在前端数据库上的访问控制列表是;
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(olcDatabase={-1}frontend)' olcAccess
dn: olcDatabase={-1}frontend,cn=config olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=externa l,cn=auth" manage by * none
要允许任何人读取 LDAP 模式,您只需将下面的 ACL 添加到前端数据库作为第一个 ACL。
to dn.base="cn=Subschema" by * read
使用 LDIF 文件来实现此更改。
vim read-access-to-subschema.ldif
dn: olcDatabase={-1}frontend,cn=config changetype: modify add: olcAccess olcAccess: {0}to dn.base="cn=Subschema" by * read
更新数据库。
ldapadd -H ldapi:/// -Y EXTERNAL -f read-access-to-subschema.ldif
再次列出访问控制列表。
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(olcDatabase={-1}frontend)' olcAccess
dn: olcDatabase={-1}frontend,cn=config olcAccess: {0}to dn.base="cn=Subschema" by * read olcAccess: {1}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=externa l,cn=auth" manage by * none
重新启动 LDAP 和 Apache 服务。
systemctl restart httpd slapd
您现在应该能够读取 OpenLDAP 架构和目录树,以及使用 phpLDAPadmin 从 Web 管理 OpenLDAP 服务器。
这标志着我们关于如何在 Rocky Linux 8 上安装 phpLDAPadmin 的指南结束。
相关 OpenLDAP 教程
在 Rocky Linux 8 上为 LDAP 身份验证配置 SSSD
设置 Apache 鳄梨酱 OpenLDAP 身份验证
在 pfSense 上配置 Squid 代理 OpenLDAP 身份验证