如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin

简介

像 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命令提示符中使用的功能。您可以查看数据库和模式,执行查询,并创建新的数据集和结构。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7天前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
96 50
|
25天前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
49 5
Linux系统之安装Ward服务器监控工具
|
29天前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
109 4
Linux系统之Ubuntu安装cockpit管理工具
|
1月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
140 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
3天前
|
Ubuntu Java
Ubuntu之jdk安装
以下是Ubuntu之jdk安装的详细内容
10 0
|
30天前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
113 1
|
1月前
|
Ubuntu Linux
软件安装(五):Ubuntu 18.04安装Teamviewer 看一遍就会
这篇文章介绍了在Ubuntu 18.04系统上通过图形界面和命令行两种方法安装TeamViewer远程控制软件的步骤。
28 2
|
1月前
|
人工智能 安全 大数据
ARM 服务器上安装 OpenEuler (欧拉)
openEuler 是华为于2019年开源的操作系统,支持多种处理器架构,包括X86和鲲鹏。截至2020年底,openEuler 拥有3万社区用户、2万多个拉取请求、2000多名贡献者和7032款软件。openEuler 提供高效、稳定、安全的系统,适用于数据库、大数据、云计算和人工智能等场景。本文介绍了在神州鲲泰 R522 服务器上安装 openEuler 的详细步骤,包括下载镜像、配置 RAID 和 BIOS 设置等。
184 0
ARM 服务器上安装 OpenEuler (欧拉)
|
16天前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
22天前
|
Ubuntu Linux
Ubuntu 16.04下无法安装.deb的解决方法
希望以上策略能有效协助您克服在Ubuntu 16.04中安装.deb文件时遇到的挑战。
20 0