如何在Ubuntu 18.04上安装并保护phpMyAdmin

phpMyAdmin是一个允许用户通过Web界面与MySQL数据库交互的应用程序。本教程介绍在Ubuntu 18.04服务器上安装和保护phpMyAdmin的过程。

本教程的早期版本由Brennan Bearnes编写

介绍

虽然许多用户需要像MySQL这样的数据库管理系统的功能,但他们可能不愿意仅仅从MySQL提示符与系统进行交互。

创建了phpMyAdmin ,以便用户可以通过Web界面与MySQL进行交互。 在本指南中,我们将讨论如何安装和保护phpMyAdmin,以便您可以安全地使用它来从Ubuntu 18.04系统管理数据库。

先决条件

在开始使用本指南之前,您需要完成一些基本步骤。

首先,我们假设你的服务器有一个非root用户,它具有sudo权限,并且具有用ufw配置的防火墙,如Ubuntu 18.04初始服务器设置指南中所述。

我们还会假设您已经在Ubuntu 18.04服务器上安装了LAMP(Linux,Apache,MySQL和PHP)安装。 如果尚未完成,您可以按照本指南在Ubuntu 18.04安装LAMP

最后,使用像phpMyAdmin这样的软件时有一些重要的安全考虑,因为它:

  • 直接与您的MySQL安装进行通信
  • 使用MySQL凭证处理认证
  • 执行并返回任意SQL查询的结果

出于这些原因,并且由于它是一个广泛部署的PHP应用程序,它经常针对攻击目标,因此您绝不应该在远程系统上通过纯HTTP连接运行phpMyAdmin。 如果您没有配置SSL / TLS证书的现有域,您可以按照本指南在Ubuntu 18.04上使用Let's Encrypt保护Apache

完成这些步骤后,即可开始使用本指南。

第一步 - 安装phpMyAdmin

要开始,我们将从默认的Ubuntu存储库安装phpMyAdmin。

我们可以通过更新我们的本地软件包索引,然后使用apt打包系统来下载文件并将它们安装到我们的系统上:

sudo apt update
sudo apt install phpmyadmin php-mbstring php-gettext

这会问你几个问题,以便正确配置你的安装。

警告:出现提示时,apache2突出显示,但未选中。 如果您不打SPACE选择Apache,则安装过程中安装程序不会移动必要的文件。 点击SPACETAB ,然后按ENTER来选择Apache。

  • 对于服务器选择,请选择apache2
  • 当询问是否使用dbconfig-common设置数据库时,选择yes
  • 然后您将被要求选择并确认phpMyAdmin的MySQL应用程序密码

安装过程将phpMyAdmin Apache配置文件添加到/etc/apache2/conf-enabled/目录中,并在该目录中自动读取。 我们唯一需要做的就是明确地启用mbstring PHP扩展,我们可以通过键入以下命令来实现:

sudo phpenmod mbstring

之后,您需要重新启动Apache才能识别您的更改:

sudo systemctl restart apache2

您现在可以通过访问服务器的域名或公共IP地址,然后访问/phpmyadmin来访问Web界面:

https://your_domain_or_IP/phpmyadmin

phpMyAdmin登录屏幕

您现在可以使用phpmyadmin用户名和在安装期间设置的管理密码登录界面。

当你登录时,你会看到用户界面,它看起来像这样:

phpMyAdmin用户界面

第二步 - 保护您的phpMyAdmin实例

我们能够很容易地启动并运行我们的phpMyAdmin界面。 但是,我们还没有完成。 由于其无处不在,phpMyAdmin是攻击者的热门目标。 我们应该采取额外措施来防止未经授权的访问

最简单的方法之一是在整个应用程序之前放置一个网关。 我们可以使用Apache内置的.htaccess身份验证和授权功能来执行此操作。

为此,我们必须通过编辑我们的Apache配置文件来支持.htaccess文件覆盖的使用。

编辑已放置在我们的Apache配置目录中的链接文件:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

在配置文件的<Directory /usr/share/phpmyadmin>部分中添加AllowOverride All指令,如下所示:

/etc/apache2/conf-available/phpmyadmin.conf
<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All
    . . .

当你添加这一行时,保存并关闭文件。

要实施所做的更改,请重新启动Apache:

sudo systemctl restart apache2

现在我们已经为我们的应用程序启用了.htaccess ,我们需要创建一个来实际实现一些安全性。

为了成功,该文件必须在应用程序目录中创建。 我们可以创建必要的文件,并在我们的文本编辑器中以root权限打开它,只需输入:

sudo nano /usr/share/phpmyadmin/.htaccess

在此文件中输入以下信息:

/usr/share/phpmyadmin/.htaccess
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

以下是每条线的含义:

  • AuthType Basic :这一行指定我们正在实施的认证类型。 这种类型将使用密码文件实现密码认证。
  • AuthName :为验证对话框设置消息。 您应该保留这种通用名称,以便未经授权的用户不会获得有关受保护内容的任何信息。
  • AuthUserFile :设置将用于认证的密码文件的位置。 这应该在正在服务的目录之外。 我们很快就会创建这个文件。
  • Require valid-user :这指定只有经过身份验证的用户才能访问此资源。 这实际上阻止了未经授权的用户进入。

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

我们为密码文件选择的位置是/etc/phpmyadmin/.htpasswd 我们现在可以创建这个文件并使用htpasswd实用程序将它传递给一个初始用户:

sudo htpasswd -c /etc/phpmyadmin/.htpasswd username

系统将提示您为正在创建的用户选择并确认密码。 之后,使用您输入的哈希密码创建文件。

如果你想输入一个额外的用户,你需要这样做, 而不需要-c标志,就像这样:

sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

现在,当您访问phpMyAdmin子目录时,系统会提示您输入刚刚配置的其他帐户名称和密码:

https://domain_name_or_IP/phpmyadmin

phpMyAdmin的apache密码

进入Apache身份验证后,您将进入常规phpMyAdmin身份验证页面以输入其他凭据。 这将增加额外的安全层,因为phpMyAdmin在过去遭受过漏洞。

结论

您现在应该已经配置phpMyAdmin并准备在您的Ubuntu 18.04服务器上使用。 使用这个接口,您可以轻松创建数据库,用户,表等,并执行通常的操作,如删除和修改结构和数据。


分享按钮