介绍
诸如MySQL和MariaDB的关系数据库管理系统对于大部分网站和应用程序都是需要的。 但是,并非所有用户都能从命令行管理其数据。
为了解决这个问题,创建了一个名为phpMyAdmin的项目,以便提供一种基于Web的管理界面形式的替代方案。 在本指南中,我们将演示如何在CentOS 7服务器上安装和保护phpMyAdmin配置。 我们将在Apache Web服务器(世界上最流行的Web服务器)之上构建此设置。
先决条件
在我们开始之前,有几个要求需要解决。
为确保您有一个坚实的基础建立在,你应该通过我们的运行此系统初始服务器设置指南为CentOS 7 。别的不说,这将引导您设置了一个非root用户sudo
管理命令的访问。
为了开始本指南,必须满足的第二个先决条件是在CentOS 7服务器上安装LAMP(Linux,Apache,MariaDB和PHP)。 这是我们将用于为我们的phpMyAdmin接口提供服务的平台(MariaDB也是我们希望管理的数据库管理软件)。 如果您还没有您的服务器上安装LAMP,请按照我们的教程在CentOS 7安装LAMP 。
当您的服务器在遵循这些指南后处于正常运行状态时,您可以继续使用此页面的其余部分。
第一步 - 安装phpMyAdmin
我们的LAMP平台已经就位,我们可以立即开始安装phpMyAdmin软件。 不幸的是,phpMyAdmin在CentOS 7的默认存储库中不可用。
要获得我们需要的包,我们必须向我们的系统添加一个额外的repo。 该EPEL回购(E XTRA P ackages对于E nterprise 大号 inux下)包含了许多额外的软件包,包括我们正在寻找phpMyAdmin套件。
该EPEL软件库可通过安装一个特殊的包叫做提供给您的服务器epel-release
。 这将重新配置您的存储库列表,并让您访问EPEL包。
要安装,只需键入:
sudo yum install epel-release
现在,EPEL回购配置,可以使用安装phpMyAdmin套件yum
通过输入包装系统:
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.1
或Allow 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安装现在可以运行。 要访问该界面中,转至服务器的域名或公网IP地址,后跟/phpMyAdmin
,在网页浏览器:
http://server_domain_or_IP/phpMyAdmin
要登录,请使用有效的MariaDB用户的用户名/密码对。 在root
用户和MariaDB的管理员密码是开始一个不错的选择。 然后,您可以访问管理界面:
查找您的IP地址
您需要知道用于访问数据库的计算机的IP地址才能完成上述步骤。 这是一项安全预防措施,以便未经授权的人员无法连接到您的服务器。
注:这是不是你的VPS的IP地址,这是你的家庭或工作计算机的IP地址。
您可以通过在网络浏览器中访问其中一个网站,了解大网站如何查看您的IP地址:
比较几个不同的网站,并确保他们都给你相同的价值。 在上面的配置文件中使用此值。
第二步 - 保护您的phpMyAdmin实例
在我们的服务器上安装的phpMyAdmin实例应该完全可用。 但是,通过安装一个Web界面,我们将我们的MySQL系统暴露给外界。
即使使用包含的验证屏幕,这是一个相当大的问题。 因为phpMyAdmin的受欢迎程度加上它提供访问的大量数据,这样的安装是攻击者的常见目标。
我们将实施两个简单的策略,以减少我们的安装的目标和妥协的机会。 我们将改变接口的位置,距离/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界面将在我们选择的新位置可用:
http://server_domain_or_IP/nothingtosee
设置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>
. . .
这将使我们能够在一个名为指定其他配置细节.htaccess
所在的phpMyAdmin目录本身 。 我们将使用此文件设置我们的密码身份验证。
保存并在完成后关闭文件。
重新启动Web服务以实现此更改:
sudo systemctl restart httpd.service
创建.htaccess文件
现在,我们已经在我们的配置覆盖指令,Apache会寻找一个名为.htaccess
的范围内/usr/share/phpMyAdmin
目录。 如果找到一个,它将使用其中包含的指令来补充其先前的配置数据。
我们的下一个步骤是创建.htaccess
该目录中的文件。 现在使用您的文本编辑器:
sudo nano /usr/share/phpMyAdmin/.htaccess
在此文件中,我们需要输入以下信息:
AuthType Basic
AuthName "Admin Login"
AuthUserFile /etc/httpd/pma_pass
Require valid-user
让我们来看看这些行的含义:
- AuthType选项基本 :该行指定,我们正在实施的认证类型。 此类型将使用密码文件实施密码认证。
- AuthName指令 :设定身份验证对话框中的消息。 你应该保持这一通用性,以便未经授权的用户不会获得有关被保护的知识。
- 的AuthUserFile:设置要用于身份验证的实际密码文件的位置。 这应该在正在提供的目录之外。 我们将在稍后创建此文件。
- 需要有效的用户 :指定只有认证用户应能使用这些资源。 这是什么实际阻止未经授权的用户进入。
输入此信息后,保存并关闭文件。
创建用于验证的密码文件
现在,我们已经通过使用指定为我们的密码文件的位置AuthUserFile
在我们的指令.htaccess
文件,我们需要创建和填充密码文件。
这可以通过使用名为Apache的工具来完成htpasswd
。 我们通过将命令传递给我们想要创建文件的位置和我们想要输入的认证详细信息的用户名来调用该命令:
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数据库。 此UI暴露了MySQL命令提示符下提供的大多数功能。 您可以查看数据库和模式,执行查询以及创建新的数据集和结构。