如何安装和一个CentOS 7服务器上使用Nginx的phpMyAdmin的安全

介绍

诸如MySQL和MariaDB的关系数据库管理系统对于大部分网站和应用程序都是需要的。 但是,并非所有用户都能从命令行管理其数据。

为了解决这个问题,创建了一个名为phpMyAdmin的项目,以便提供一种基于Web的管理界面形式的替代方案。 在本指南中,我们将演示如何在CentOS 7服务器上安装和保护phpMyAdmin配置。 我们将在Nginx Web服务器之上构建此设置,该服务器具有良好的性能配置文件,并且可以比其他一些Web服务器更好地处理重负载。

先决条件

在我们开始之前,有几个要求需要解决。

为确保您有一个坚实的基础建立在,你应该通过我们的运行此系统初始服务器设置指南为CentOS 7 。别的不说,这将引导您设置了一个非root用户sudo管理命令的访问。

为了开始本指南,必须满足的第二个先决条件是在CentOS 7服务器上安装LEMP(Linux,Nginx,MariaDB和PHP)。 这是我们将用于为我们的phpMyAdmin接口提供服务的平台(MariaDB也是我们希望管理的数据库管理软件)。 如果您还没有您的服务器上安装的LEMP,请按照我们的教程在CentOS 7安装LEMP

当您的服务器在遵循这些指南后处于正常运行状态时,您可以继续使用此页面的其余部分。

第一步 - 安装phpMyAdmin

我们的LEMP平台已经就位,我们可以立即开始安装phpMyAdmin软件。 不幸的是,phpMyAdmin在CentOS 7的默认存储库中不可用。

要获得我们需要的包,我们必须向我们的系统添加一个额外的repo。 该EPEL回购(E XTRA P ackages对于E nterprise 大号 inux下)包含了许多额外的软件包,包括我们正在寻找phpMyAdmin套件。

幸运的是,添加EPEL存储库的过程变得容易多了。 其实是有一个包叫做epel-release的重新配置我们使用EPEL回购包管理器。

我们现在可以通过键入:

sudo yum install epel-release

现在您可以访问EPEL存储库,您可以通过yum安装phpMyAdmin:

sudo yum install phpmyadmin

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

sudo ln -s /usr/share/phpMyAdmin /usr/share/nginx/html

我们还应该重新启动我们的PHP处理器,以确保它可以加载我们安装的额外的PHP模块:

sudo systemctl restart php-fpm

这样,我们的phpMyAdmin安装现在可以运行。 要访问该界面中,转至服务器的域名或公网IP地址,后跟/phpMyAdmin ,在网页浏览器:

http://server_domain_or_IP/phpMyAdmin

phpMyAdmin登录屏幕

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

phpMyAdmin管理界面

单击以熟悉界面。 在下一节中,我们将采取措施保护我们的新界面。

第二步 - 保护您的phpMyAdmin实例

在我们的服务器上安装的phpMyAdmin实例应该完全可用。 但是,通过安装一个Web界面,我们将我们的MySQL系统暴露给外界。

即使使用包含的验证屏幕,这是一个相当大的问题。 因为phpMyAdmin的受欢迎程度加上它提供访问的大量数据,这样的安装是攻击者的常见目标。

我们将实施两个简单的策略,以减少我们的安装的目标和妥协的机会。 我们将改变接口的位置,距离/phpMyAdmin到别的回避一些自动化的机器人蛮力尝试的东西。 我们还将创建一个额外的Web服务器级身份验证网关,在进入phpMyAdmin登录屏幕之前,必须先通过该网关。

更改应用程序的访问位置

为了使我们的Nginx Web服务器能够找到并提供我们的phpMyAdmin文件,我们在前面的步骤中创建了一个从phpMyAdmin目录到我们的文档根目录的符号链接。

要更改我们的phpMyAdmin接口可以访问的URL,我们只需要重命名符号链接。 移动到Nginx文档根目录,以更好地了解我们正在做什么:

cd /usr/share/nginx/html
ls -l
-rw-r--r-- 1 root root 537 Aug  5 08:15 50x.html
-rw-r--r-- 1 root root 612 Aug  5 08:15 index.html
lrwxrwxrwx 1 root root  21 Aug  6 17:29 phpMyAdmin -> /usr/share/phpMyAdmin

正如你所看到的,我们有一个叫做符号链接phpMyAdmin此目录中。 我们可以将此链接名称更改为任何我们想要的。 这将更改phpMyAdmin可以从浏览器访问的位置,这可以帮助遮蔽访问点从硬编码bots。

选择不表示位置目的的名称。 在本指南中,我们将其命名为我们的访问位置/nothingtosee 要完成此操作,我们只需重命名链接:

sudo mv phpMyAdmin nothingtosee
ls -l
total 8
-rw-r--r-- 1 root root 537 Aug  5 08:15 50x.html
-rw-r--r-- 1 root root 612 Aug  5 08:15 index.html
lrwxrwxrwx 1 root root  21 Aug  6 17:29 nothingtosee -> /usr/share/phpMyAdmin

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

http://server_domain_or_IP/phpMyAdmin

phpMyAdmin 404错误

但是,您的phpMyAdmin界面将在我们选择的新位置可用:

http://server_domain_or_IP/nothingtosee

phpMyAdmin登录屏幕

设置Web服务器认证门

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

幸运的是,大多数网络服务器,包括Nginx,本地提供这种能力。 我们只需要修改我们的Nginx配置文件的细节。

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

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

openssl passwd

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

O5az.RSPzd.HE

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

现在,创建一个认证文件。 我们称这个文件pma_pass并将其放置在Nginx的配置目录:

sudo nano /etc/nginx/pma_pass

在这个文件中,你只需要指定要使用的用户名,后面跟一个冒号(:),然后你从收到密码的加密版本openssl passwd工具。

我们将命名我们的用户demo ,但你应该选择一个不同的用户名。 本指南的文件如下所示:

demo:O5az.RSPzd.HE

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

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

sudo nano /etc/nginx/conf.d/default.conf

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

创建内本条server块,但任何其它块的外部。 我们将把我们下面的新位置块location /在我们的例子块:

server {
    . . .

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

    location /nothingtosee {
    }

    . . .
}

在此块中,我们需要设置一个叫做指令的值auth_basic给我们的提示会显示给用户的认证信息。 我们不想向未经认证的用户说明我们正在保护的内容,因此不要提供具体的详细信息。 我们将在示例中使用“Admin Login”。

然后,我们需要使用一个名为指令auth_basic_user_file到我们的网站服务器指向我们创建的认证文件。 Nginx将提示用户验证详细信息,并检查输入的值是否与指定文件中找到的值匹配。

在我们完成后,文件应该看起来像这样:

server {
    . . .

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

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

    . . .
}

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

要实现我们的新认证门,我们必须重新启动Web服务器:

sudo systemctl restart nginx

现在,如果我们在Web浏览器中访问我们的phpMyAdmin的位置(您可能需要清除缓存或者使用不同的浏览器会话,如果你已经使用phpMyAdmin了),你会被提示输入用户名和密码,您添加到pma_pass文件:

http://server_domain_or_IP/nothingtosee

Nginx身份验证页面

输入您的凭据后,您将进入正常的phpMyAdmin登录页面。 除了增加的安全性好处之外,这个附加的保护层将帮助保持MySQL日志清除身份验证尝试。

结论

您现在可以从一个相当安全的Web界面管理您的MySQL数据库。 此UI暴露了MySQL命令提示符下提供的大多数功能。 您可以查看数据库和模式,执行查询以及创建新的数据集和结构。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏