在 CentOS 7 服务器上安装和保护 phpMyAdmin 与 Apache 的方法

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 在 CentOS 7 服务器上安装和保护 phpMyAdmin 与 Apache 的方法

简介

像 MySQL 和 MariaDB 这样的关系型数据库管理系统是许多网站和应用程序所必需的。然而,并非所有用户都习惯于通过命令行来管理他们的数据。

为了解决这个问题,创建了一个名为 phpMyAdmin 的项目,以提供基于 web 的管理界面作为替代方案。在本指南中,我们将演示如何在 CentOS 7 服务器上安装和保护 phpMyAdmin 配置。我们将在全球最流行的 Apache web 服务器上构建此设置。

先决条件

在开始之前,有一些要求需要解决。

为了确保您有一个坚实的基础来构建这个系统,您应该先完成我们的 CentOS 7 初始服务器设置指南。其中,这将指导您设置一个具有 sudo 访问权限的非 root 用户以执行管理命令。

在开始本指南之前,必须满足的第二个先决条件是在您的 CentOS 7 服务器上安装 LAMP(Linux、Apache、MariaDB 和 PHP)堆栈。这是我们将用来提供 phpMyAdmin 界面的平台(MariaDB 也是我们希望管理的数据库管理软件)。如果您的服务器上还没有 LAMP 安装,请按照我们的在 CentOS 7 上安装 LAMP 的教程进行操作。

当您按照这些指南使服务器处于正常运行状态后,您可以继续进行本页的其余部分。

步骤一 — 安装 phpMyAdmin

在我们的 LAMP 平台已经就绪的情况下,我们可以立即开始安装 phpMyAdmin 软件。不幸的是,phpMyAdmin 在 CentOS 7 的默认仓库中不可用。

为了获取我们需要的软件包,我们需要向系统添加一个额外的仓库。EPEL 仓库(Extra Packages for Enterprise Linux)包含许多额外的软件包,包括我们正在寻找的 phpMyAdmin 软件包。

通过安装一个名为 epel-release 的特殊软件包,可以使 EPEL 仓库对您的服务器可用。这将重新配置您的仓库列表,并为您提供对 EPEL 软件包的访问权限。

要安装,请输入:

sudo yum install epel-release

现在 EPEL 仓库已配置好,您可以使用 yum 包管理系统安装 phpMyAdmin 软件包,输入以下命令:

sudo yum install phpmyadmin

安装将立即完成。安装包含一个已经放置好的 Apache 配置文件。我们需要对此进行一些修改,以使其正确地为我们的安装工作。

现在打开文件编辑器,以便我们可以进行一些更改:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

在文件中,我们看到一些目录块,其中包含一些条件逻辑来解释我们目录的访问策略。定义了两个不同的目录,并在这些目录中配置了对 Apache 2.2 和 Apache 2.4(我们正在运行的版本)都有效的配置。

目前,此设置被配置为拒绝除了从服务器本身发出的连接之外的任何连接。由于我们是远程在服务器上工作,我们需要修改一些行来指定您 家庭 连接的 IP 地址。

更改任何读取 Require ip 127.0.0.1Allow from 127.0.0.1 的行,以引用您家庭连接的 IP 地址。如果您需要帮助找到您家庭连接的 IP 地址,请查看下一节。文件中必须更改四个位置:

. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .

完成后,通过输入以下命令重新启动 Apache web 服务器以实施您的修改:

sudo systemctl restart httpd.service

至此,我们的 phpMyAdmin 安装现在已经可用。要访问界面,请在您的 web 浏览器中输入服务器的域名或公共 IP 地址,后面加上 /phpMyAdmin

http://server_domain_or_IP/phpMyAdmin

!phpMyAdmin 登录界面

要登录,请使用有效的 MariaDB 用户的用户名/密码对。root 用户和 MariaDB 管理密码是一个不错的选择以开始。然后,您将能够访问管理界面:

!phpMyAdmin 管理界面

查找您的 IP 地址

为了完成上面的步骤,您需要知道您用于访问数据库的计算机的 IP 地址。这是一项安全预防措施,以防止未经授权的人连接到您的服务器。

注意:这不是您 VPS 的 IP 地址,而是您家庭或工作计算机的 IP 地址。

您可以通过访问以下网站之一来了解外部网络如何看到您的 IP 地址:

  • What’s My IP Address?
  • What’s My IP?
  • My IP Address

比较几个不同的网站,并确保它们都给出相同的值。在上面的配置文件中使用此值。

第二步 — 安全设置你的 phpMyAdmin 实例

在我们的服务器上安装的 phpMyAdmin 实例应该在这一步骤中完全可用。然而,通过安装一个 Web 界面,我们已经将我们的 MySQL 系统暴露给了外部世界。

即使包含了身份验证屏幕,这仍然是一个大问题。由于 phpMyAdmin 的流行程度以及它提供访问的大量数据,这些安装通常是攻击者的目标。

我们将实施两种简单的策略来减少我们的安装被攻击和 compromise 的机会。我们将把接口的位置从 /phpMyAdmin 更改为其他位置,以规避一些自动化的恶意尝试。我们还将创建一个额外的、基于 Web 服务器级别的身份验证网关,必须在进入 phpMyAdmin 登录界面之前通过。

更改应用程序的访问位置

为了使我们的 Apache Web 服务器与 phpMyAdmin 协同工作,我们的 phpMyAdmin Apache 配置文件使用别名来指向文件的目录位置。

要更改我们的 phpMyAdmin 接口可以访问的 URL,我们只需要重命名别名。现在打开 phpMyAdmin Apache 配置文件:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

在文件的顶部,你会看到两行像这样的内容:

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

这两行是我们的别名,这意味着如果我们访问我们站点的域名或 IP 地址,后面跟着 /phpMyAdmin/phpmyadmin,我们将会得到 /usr/share/phpMyAdmin 的内容。

我们想要禁用这些特定的别名,因为它们经常成为恶意用户和机器人攻击的目标。相反,我们应该决定我们自己的别名。它应该易于记忆,但不易猜测。它不应该指示 URL 位置的目的。在我们的情况下,我们将使用 /nothingtosee

要应用我们的修改,我们应该删除或注释掉现有的行并添加我们自己的行:

# Alias /phpMyAdmin /usr/share/phpMyAdmin
# Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /nothingtosee /usr/share/phpMyAdmin

完成后,保存并关闭文件。

要实施更改,重新启动 Web 服务:

sudo systemctl restart httpd.service

现在,如果你去到你的 phpMyAdmin 安装的先前位置,你会得到一个 404 错误:

http://server_domain_or_IP/phpMyAdmin

!phpMyAdmin 404 错误

然而,你的 phpMyAdmin 接口将会在我们选择的新位置可用:

http://server_domain_or_IP/nothingtosee

!phpMyAdmin 登录界面

设置 Web 服务器身份验证网关

我们想要为我们的安装添加的下一个功能是,用户在看到 phpMyAdmin 登录界面之前需要通过的身份验证提示。

幸运的是,大多数 Web 服务器,包括 Apache,都可以原生地提供这种功能。我们只需要修改我们的 Apache 配置文件来使用授权文件。

再次在你的文本编辑器中打开 phpMyAdmin Apache 配置文件:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

/usr/share/phpMyAdmin 目录块内,但不在任何内部块内,我们需要添加一个覆盖指令。它看起来像这样:

. . .
<Directory /usr/share/phpMyAdmin/>
   AllowOverride All
   <IfModule mod_authz_core.c>
   . . .
</Directory>
. . .

这将允许我们在 phpMyAdmin 目录本身内部设置一个名为 .htaccess 的文件中指定额外的配置细节。我们将使用这个文件来设置我们的密码身份验证。

完成后保存并关闭文件。

重新启动 Web 服务以实施此更改:

sudo systemctl restart httpd.service

创建一个 .htaccess 文件

现在我们在配置中有了覆盖指令,Apache 将在 /usr/share/phpMyAdmin 目录中寻找一个名为 .htaccess 的文件。如果找到,它将使用其中包含的指令来补充其先前的配置数据。

我们的下一步是在该目录中创建 .htaccess 文件。现在使用你的文本编辑器来执行:

sudo nano /usr/share/phpMyAdmin/.htaccess

在这个文件中,我们需要输入以下信息:

AuthType Basic
AuthName "Admin Login"
AuthUserFile /etc/httpd/pma_pass
Require valid-user

让我们来看看每一行的含义:

  • AuthType Basic:这一行指定我们正在实施的身份验证类型。这种类型将使用密码文件实现密码身份验证。
  • AuthName:这设置了身份验证对话框的消息。你应该保持这个通用,这样未经授权的用户就不会获得关于被保护内容的知识。
  • AuthUserFile:这设置了实际用于身份验证的密码文件的位置。这应该在正在提供服务的目录之外。我们将在一会儿创建这个文件。
  • Require valid-user:这指定只有经过身份验证的用户才能访问这个资源。这实际上阻止了未经授权的用户进入。

完成输入这些信息后,保存并关闭文件。

创建用于身份验证的密码文件

现在我们已经通过在.htaccess文件中使用AuthUserFile指令指定了密码文件的位置,我们需要创建并填充密码文件。

这可以通过使用一个名为htpasswd的Apache实用工具来实现。我们通过向其传递我们想要创建文件的位置和要输入身份验证详细信息的用户名来调用该命令:

sudo htpasswd -c /etc/httpd/pma_pass username

-c标志表示这将创建一个初始文件。目录位置是文件的路径和文件名。用户名是我们想要添加的第一个用户。您将被提示输入并确认用户的密码。

如果您想要添加其他用户进行身份验证,您可以再次调用相同的命令 不带 -c标志,并使用新的用户名:

sudo htpasswd /etc/httpd/pma_pass seconduser

有了我们创建的密码文件,身份验证网关已经实施,下次访问我们的站点时,我们应该会看到一个密码提示:

http://server_domain_or_IP/nothingtosee

一旦输入您的凭据,您将被带到正常的phpMyAdmin登录页面。这一额外的保护层将有助于保持您的MySQL日志清除身份验证尝试,同时还带来了额外的安全益处。

结论

您现在可以从一个相当安全的Web界面管理您的MySQL数据库。这个用户界面暴露了大部分可以从MySQL命令提示符中使用的功能。您可以查看数据库和模式,执行查询,并创建新的数据集和结构。


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
负载均衡 监控 网络协议
CentOS搭建内部网络NTP时间服务器
未尽的音符,等待你去创造,如同未配置的服务器等待着你。环顾四周,这就是你的舞台,你的音乐会,你的 CentOS 内部网络 NTP 时间服务器,为所欲为吧!
509 49
|
1月前
|
Kubernetes Ubuntu Linux
阿里云服务器使用centos还是ubuntu?
在选择阿里云服务器操作系统时,CentOS和Ubuntu各有优势。CentOS以企业级稳定性著称,适合数据库、ERP等长期稳定需求;而Ubuntu开发者友好,支持最新硬件与功能,更适合开发/测试环境及云计算场景。两者在阿里云上均有官方镜像支持,性能差异可忽略。无特殊需求时推荐Ubuntu 22.04 LTS,若需RHEL生态则选AlmaLinux。根据实际需求、团队技术栈及场景灵活决策,阿里云还支持更换系统盘降低试错成本。
|
2月前
|
Ubuntu PHP Apache
在Ubuntu系统中为apt的apache2编译PHP 7.1的方法
以上就是在Ubuntu系统中为apt的apache2编译PHP 7.1的方法。希望这个指南能帮助你成功编译PHP 7.1,并在你的Apache服务器上运行PHP应用。
93 28
|
2月前
|
缓存 PHP 数据库
WordPress网站服务器性能优化方法,站长必备。
最后,当你将这些方法组合起来并实施时,您将发现你的WordPress网站性能有了显著的提高。别忘了,这不是一次性的任务,要定期执行,保持你的车(网站)始终在轨道上飞驰。
120 21
|
7月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
167 9
|
3月前
|
存储 安全 Linux
CentOS 7.9系统备份:每日定期发送最新备份文件到另一台服务器。
注意,这个解决方案忽略了很多细节,例如错误处理和通知、备份版本控制、循环处理旧的备份文件等等。此外,你也应该尽量保持源服务器和目标服务器之间快速,稳定且安全的网络连接,并且目标服务器应该有足够的空间用于存放每天的备份文件。如果你需要更高级的备份解决方案,可能需要考虑一下使用专门的备份工具或者服务。
123 18
|
3月前
|
存储 运维 网络协议
【Syslog】Centos下的syslog服务器配置
通过本文的配置指导,您不仅学会了如何安装和配置 `rsyslog`,还掌握了如何在防火墙中开放必要的端口,并验证服务器的配置是否正确。希望这些知识能够帮助您更好地管理和维护您的Linux系统。
379 15
|
5月前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
123 1
|
6月前
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
315 12
|
6月前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
564 33
The Past, Present and Future of Apache Flink

热门文章

最新文章