如何在 Ubuntu 16.04 上使用 Nginx 安装和保护 phpMyAdmin如何在 Ubuntu 16.04 上使用 Nginx 安装和保护 phpMyAdmin如何在 Ubuntu 16.04 上使用 Nginx 安装和保护 phpMyAdmin如何在 Ubuntu 16.04 上使用 Nginx 安装和保护 phpMyAdmin
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 16.04 上使用 Nginx 安装和保护 phpMyAdmin

介绍

虽然许多用户需要像 MySQL 这样的数据库管理系统的功能,但它的命令行界面对某些人来说可能不太直观和用户友好,从而构成进入障碍。

创建 phpMyAdmin 以便用户可以通过 Web 界面与 MySQL 交互。在本指南中,我们将讨论如何安装和保护 phpMyAdmin,以便您可以安全地使用它从 Ubuntu 16.04 系统管理您的数据库。我们将在 Nginx Web 服务器之上构建此设置,它具有良好的性能配置文件,并且可以比其他一些 Web 服务器更好地处理重负载。

先决条件

在开始使用本指南之前,请确保您已完成以下先决条件步骤:

  • 首先,我们假设您使用的是具有 sudo 权限的非根用户,如 Ubuntu 16.04 初始服务器设置的步骤 1-4 中所述。
  • 我们还假设您已经在 Ubuntu 16.04 服务器上完成了 LEMP(Linux、Nginx、MySQL 和 PHP)安装。如果你还没有这样做,你可以按照在 Ubuntu 16.04 上安装 LEMP 堆栈的指南进行操作。请务必记下您的 MySQL 数据库管理员密码。

最后,在使用 phpMyAdmin 等软件时需要注意一些重要的安全注意事项:它直接与您的 MySQL 安装通信,使用 MySQL 凭据处理身份验证,并执行和返回任意 SQL 查询的结果。

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

完成这些先决条件步骤后,您就可以开始使用本指南了。

第 1 步 — 安装 phpMyAdmin

有了我们的 LEMP 平台,我们可以从安装 phpMyAdmin 开始,它可以从 Ubuntu 的默认存储库中获得。

首先,我们将更新服务器的本地包索引以确保它有一组对可用包的新引用。然后,我们将使用 apt 打包工具从存储库中提取软件并将其安装在我们的系统上:

  1. sudo apt-get update
  2. sudo apt-get install phpmyadmin

在安装过程中,系统会提示您输入一些信息。它会询问您希望软件自动配置哪个 Web 服务器。由于我们使用的网络服务器 Nginx 不是可用选项之一,您只需点击 TAB,然后点击 ENTER 即可绕过此提示。

下一个提示将询问您是否希望 dbconfig-common 配置一个数据库供 phpMyAdmin 使用。选择“是”继续。您需要输入您在 MySQL 安装期间配置的数据库管理员密码以允许这些更改。

现在将要求您选择并确认 phpMyAdmin 应用程序及其数据库(将在此步骤中创建)的密码。选择并确认安全密码并记下它。

安装现在将完成。为了让 Nginx Web 服务器正确找到并提供 phpMyAdmin 文件,我们需要创建一个从安装文件到 Nginx 文档根目录的符号链接:

  1. sudo ln -s /usr/share/phpmyadmin /var/www/html

最后,我们需要启用 phpMyAdmin 所依赖的 mcrypt PHP 模块。这是与 phpMyAdmin 一起安装的,因此我们将打开它并重新启动我们的 PHP 处理器:

  1. sudo phpenmod mcrypt
  2. sudo systemctl restart php7.0-fpm

这样,我们的 phpMyAdmin 安装就可以运行了。要访问该界面,请转到您的服务器的域名或公共 IP 地址,然后在您的 Web 浏览器中输入 /phpmyadmin :

http://server_domain_or_IP/phpmyadmin

要登录,请使用一组有效 MySQL 用户的凭据。例如,root 用户和 MySQL 管理密码是入门的不错选择。然后您应该能够访问管理界面:

单击周围以熟悉界面。

在接下来的两节中,我们将采取措施保护我们新的 phpMyAdmin Web 控制台。

第 2 步 — 更改默认的 phpMyAdmin URL

此时 phpMyAdmin 安装应该可以完全正常运行。但是,通过安装 Web 界面,我们将 MySQL 数据库服务器暴露给了外界。由于 phpMyAdmin 的流行以及它可能提供的大量数据访问权限,此类安装是攻击的常见目标。

在本节中,我们将“加强”或锁定我们的安装,方法是将界面的 URL 从 /phpmyadmin 更改为非标准的内容,以避开一些自动 bot 暴力尝试。

在前面的步骤中,我们创建了一个从 phpMyAdmin 目录到文档根目录的符号链接,以便我们的 Nginx Web 服务器找到并提供我们的 phpMyAdmin 文件。要更改 phpMyAdmin 界面的 URL,我们将重命名此符号链接。

首先,让我们导航到 Nginx 文档根目录,以更好地了解我们将进行的更改:

  1. cd /var/www/html/
  2. ls -l

您将收到以下输出:

Output
total 4 -rw-r--r-- 1 root root 612 Apr 10 16:40 index.nginx-debian.html lrwxrwxrwx 1 root root 21 Apr 10 17:06 phpmyadmin -> /usr/share/phpmyadmin

输出显示我们在此目录中有一个名为 phpmyadmin 的符号链接。我们可以将此链接名称更改为我们想要的任何名称。这将反过来改变 phpMyAdmin 的访问 URL,这可以帮助隐藏端点以防止机器人硬编码以搜索常见的端点名称(例如 \phpmyadmin)。

选择一个掩盖端点用途的名称。在本指南中,我们将端点命名为 /nothingtosee,但您应该选择一个备用名称。为此,我们只需重命名链接:

  1. sudo mv phpmyadmin nothingtosee
  2. ls -l

运行上述命令后,您将收到以下输出:

Output
total 4 -rw-r--r-- 1 root root 612 Apr 10 16:40 index.nginx-debian.html lrwxrwxrwx 1 root root 21 Apr 10 17:06 nothingtosee -> /usr/share/phpmyadmin

现在,如果你去旧的 URL,你会得到一个 404 错误:

http://server_domain_or_IP/phpmyadmin

现在,您的 phpMyAdmin 界面将在我们刚刚配置的新 URL 上可用:

http://server_domain_or_IP/nothingtosee

我们现在可以通过设置身份验证网关进一步加强我们的 phpMyAdmin 安装。

第 3 步 — 设置 Nginx 身份验证网关

我们将设置的下一个功能是身份验证提示,用户在看到 phpMyAdmin 登录屏幕之前需要通过该提示。大多数 Web 服务器,包括 Nginx,都在本机提供此功能。我们只需要用细节修改我们的 Nginx 配置文件。

在我们这样做之前,我们将创建一个密码文件来存储身份验证凭据。 Nginx 要求使用 crypt() 函数对密码进行加密。应该已经安装在您的服务器上的 OpenSSL 套件包括此功能。

要创建加密密码,请键入:

  1. openssl passwd

系统将提示您输入并确认您希望使用的密码。然后该实用程序将显示密码的加密版本,如下所示:

Output
O5az.RSPzd.HE

复制此值,因为您需要将其粘贴到我们将创建的身份验证文件中。

现在,创建一个身份验证文件。我们将调用此文件 pma_pass 并将其放在 Nginx 配置目录中:

  1. sudo nano /etc/nginx/pma_pass

在此文件中,您将指定要使用的用户名,后跟一个冒号 (:),然后是您从 openssl passwd实用程序。

我们打算将我们的用户命名为 sammy,但您应该选择一个不同的用户名。该文件应如下所示:

sammy:O5az.RSPzd.HE

完成后保存并关闭文件。

现在,我们准备修改我们的 Nginx 配置文件。在文本编辑器中打开它以开始使用:

  1. sudo nano /etc/nginx/sites-available/default

在这个文件中,我们需要添加一个新的 location 部分。这将针对我们为 phpMyAdmin 界面选择的位置(我们在本指南中选择了/nothingtosee)。

在 server 块内创建此部分,但在任何其他块之外。在我们的示例中,我们将把新的 location 块放在 / 块的下面:

server {
    . . .

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        location /nothingtosee {
        }


    . . .
}

在此块中,我们需要将名为 auth_basic 的变量的值设置为我们的提示将显示给用户的身份验证消息。我们不想向未经身份验证的用户表明我们在保护什么,所以不要提供具体细节。在我们的示例中,我们将只使用 \Admin Login。

然后,我们需要添加一个名为 auth_basic_user_file 的变量,以将我们的 Web 服务器指向我们刚刚创建的身份验证文件。 Nginx 将提示用户输入身份验证详细信息,并检查输入的值是否与它在指定文件中找到的值匹配。

完成后,文件应如下所示:

server {
    . . .

    location / {
        try_files $uri $uri/ =404;
    }

    location /nothingtosee {
        auth_basic "Admin Login";
        auth_basic_user_file /etc/nginx/pma_pass;
    }

    . . .
}

完成后保存并关闭文件。

要激活我们的新身份验证门,我们必须重新启动 Web 服务器:

  1. sudo service nginx restart

现在,如果您在 Web 浏览器中访问 phpMyAdmin URL(如果刷新页面不起作用,您可能必须清除缓存或使用不同的浏览器会话,如果您已经使用过 phpMyAdmin),系统会提示您输入您添加到 pma_pass 文件的用户名和密码:

http://server_domain_or_IP/nothingtosee

输入凭据后,您将被带到标准的 phpMyAdmin 登录页面。

除了提供额外的安全层之外,此网关还有助于保持 MySQL 日志中的垃圾身份验证尝试。

结论

完成本教程后,您现在可以从相当安全的 Web 界面管理您的 MySQL 数据库。此用户界面公开了通过 MySQL 命令行可用的大部分功能。您可以浏览数据库和模式、执行查询以及创建新的数据集和结构。

©2015-2025 艾丽卡 support@alaica.com