介绍
MySQL 和 MariaDB 等关系式数据库管理系统对于大量的网站和应用程序是必要的,但并非所有用户都感到舒适地从命令行管理他们的数据。
为了解决这个问题,一个名为phpMyAdmin的项目被创建,以提供一个基于Web的管理界面的替代方案. 在本指南中,我们将展示如何在CentOS 7服务器上安装和保护phpMyAdmin配置。
前提条件
在我们开始之前,有一些需要解决的要求。
为了确保你有一个坚实的基础,建立这个系统,你应该通过我们的 初始服务器设置指南 CentOS 7。
要开始使用本指南,必须满足的第二个前提是在您的 CentOS 7 服务器上安装一个 LAMP (Linux, Apache, MariaDB 和 PHP) 堆栈,这是我们将使用的平台来服务我们的 phpMyAdmin 接口(MariaDB 也是我们想要管理的数据库管理软件)。
当您的服务器在遵循这些指南后处于正常运行状态时,您可以继续使用本页的其余部分。
第一步:安装 phpMyAdmin
有了 LAMP 平台,我们可以立即开始安装 phpMyAdmin 软件,不幸的是, phpMyAdmin 无法在 CentOS 7 的默认存储库中使用。
要获得我们需要的包,我们将不得不添加一个额外的复制到我们的系统. EPEL复制(E extra P ackages for E nterprise L inux)包含许多额外的包,包括我们正在寻找的phpMyAdmin包。
EPEL 存储库可以通过安装一个名为epel-release
的特殊包来向您的服务器提供,这将重新配置您的存储库列表,并为您提供访问 EPEL 包。
安装,只需类型:
1sudo yum install epel-release
现在,EPEL repo已配置,您可以通过键入yum
包装系统来安装phpMyAdmin包:
1sudo yum install phpmyadmin
安装现在将完成. 安装包括一个已经设置的Apache配置文件. 我们将需要修改这一点,以使其正确地为我们的安装工作。
现在打开文本编辑器中的文件,以便我们可以做一些更改:
1sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
内部,我们看到一些目录块,有一些条件逻辑来解释我们的目录的访问策略. 有两个不同的目录被定义,并且在这些中,配置将适用于Apache 2.2和Apache 2.4(我们正在运行)。
目前,此设置被配置为拒绝从服务器本身进行的任何连接的访问,因为我们正在远程工作,我们需要修改一些行,以指定您的 home 连接的 IP 地址。
更改任何读取要求 ip 127.0.0.1
或允许从 127.0.0.1
的行,以参考您的家庭连接的 IP 地址。
1. . .
2Require ip your_workstation_IP_address
3. . .
4Allow from your_workstation_IP_address
5. . .
6Require ip your_workstation_IP_address
7. . .
8Allow from your_workstation_IP_address
9. . .
完成后,重新启动 Apache Web 服务器,通过键入执行更改:
1sudo systemctl restart httpd.service
有了这个,我们的phpMyAdmin安装现在是可行的。 要访问接口,请在您的Web浏览器中访问您的服务器的域名或公共IP地址,然后是 /phpMyAdmin
:
1http://server_domain_or_IP/phpMyAdmin
要登录,请使用一个有效的 MariaDB 用户的用户名/密码对。根
用户和 MariaDB 管理密码是开始的最佳选择。
查找你的IP地址
您需要知道您使用的计算机的IP地址来访问您的数据库,以完成上述步骤,这是一个安全措施,以防止未经授权的人无法连接到您的服务器。
注意:这不是您的VPS的IP地址,而是您的家庭或工作电脑的IP地址。
您可以通过访问您的 Web 浏览器中的这些网站来了解大网如何看到您的 IP 地址:
我的IP地址是什么?我的IP地址是什么?我的IP地址是什么?我的IP地址是什么?
比较几个不同的网站,并确保它们都给你相同的值。
步骤二:保护您的 phpMyAdmin 实例
在我们的服务器上安装的 phpMyAdmin 实例应该完全可用,但是,通过安装 Web 界面,我们已经将我们的 MySQL 系统暴露在外部世界。
即使包含了身份验证屏幕,这是一个相当大的问题. 由于phpMyAdmin的普及,加上它提供的大量数据,这样的安装是攻击者的常见目标。
我们将实施两个简单的策略,以减少我们的安装被瞄准和受到威胁的可能性. 我们将更改界面的位置从 /phpMyAdmin
到其他东西,以阻止一些自动的机器人 brute-force 尝试。
更改应用程序的访问位置
为了使我们的 Apache Web 服务器能够与 phpMyAdmin 一起工作,我们的 phpMyAdmin Apache 配置文件使用一个号来指向文件的目录位置。
要更改我们的phpMyAdmin接口可以访问的URL,我们只需要重新命名该名称。
1sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
在文件的顶部,你会看到两行看起来像这样:
1Alias /phpMyAdmin /usr/share/phpMyAdmin
2Alias /phpmyadmin /usr/share/phpMyAdmin
这两个行是我们的代名词,这意味着如果我们访问我们的网站的域名或IP地址,然后是/phpMyAdmin
或/phpmyadmin
,我们将被提供的内容在/usr/share/phpMyAdmin
。
我们希望禁用这些特定的副名称,因为它们受到机器人和恶意用户的强烈攻击。相反,我们应该决定我们自己的副名称。 它应该容易记住,但不容易猜测。 它不应该表明URL位置的目的。
为了应用我们的预期变更,我们应该删除或评论现有行,并添加自己的:
1# Alias /phpMyAdmin /usr/share/phpMyAdmin
2# Alias /phpmyadmin /usr/share/phpMyAdmin
3Alias /nothingtosee /usr/share/phpMyAdmin
完成后,保存并关闭文件。
要执行这些更改,请重新启动 Web 服务:
1sudo systemctl restart httpd.service
现在,如果您转到以前的 phpMyAdmin 安装位置,您将收到 404 错误:
1http://server_domain_or_IP/phpMyAdmin
但是,您的 phpMyAdmin 接口将在我们选择的新位置可用:
1http://server_domain_or_IP/nothingtosee
设置 Web 服务器身份验证网关
我们想要的下一个功能是验证提示,用户需要在看到phpMyAdmin登录屏幕之前通过。
幸运的是,包括Apache在内的大多数Web服务器都提供这种功能,我们只需要修改我们的Apache配置文件以使用授权文件。
在文本编辑器中再次打开 phpMyAdmin Apache 配置文件:
1sudo nano /etc/httpd/conf.d/phpMyAdmin.conf
在/usr/share/phpMyAdmin
目录区块内,但在内部的任何区块之外,我们需要添加一个重置指令。
1. . .
2<Directory /usr/share/phpMyAdmin/>
3 AllowOverride All
4 <IfModule mod_authz_core.c>
5 . . .
6</Directory>
7. . .
这将允许我们在名为 .htaccess
的文件中指定额外的配置细节,位于 phpMyAdmin 目录本身。
保存并关闭文件,当你完成。
重新启动 Web 服务以实现此更改:
1sudo systemctl restart httpd.service
创建一个.htaccess 文件
现在,我们在我们的配置中有过分指令,Apache 将搜索名为.htaccess
的文件在/usr/share/phpMyAdmin
目录中. 如果它找到一个,它将使用里面包含的指令来补充其以前的配置数据。
我们的下一步是在该目录中创建 .htaccess
文件. 使用您的文本编辑器现在这样做:
1sudo nano /usr/share/phpMyAdmin/.htaccess
在此文件中,我们需要输入以下信息:
1AuthType Basic
2AuthName "Admin Login"
3AuthUserFile /etc/httpd/pma_pass
4Require valid-user
让我们来看看这些线条中的每个字的含义:
- AuthType Basic :本行规定了我们正在实施的身份验证类型。本类型将使用密码文件执行密码身份验证。
- AuthName :此设置了身份验证对话框的信息。您应该保留这种通用信息,以便未经授权的用户不会获得被保护的内容的信息。
- AuthUserFile :此设置了将用于身份验证的实际密码文件的位置。这应该在被服务的目录之外。我们会在一瞬间创建此文件。
- ** 需要有效的用户** :这说明只有经过身份验证的用户才能获得此资源。
当您完成输入此信息后,保存并关闭文件。
创建用于身份验证的密码文件
现在我们已经通过在我们的.htaccess 文件中使用AuthUserFile
指令来指定我们的密码文件的位置,我们需要创建和填充密码文件。
这可以通过使用一个名为htpasswd
的Apache实用程序来实现,我们通过传递该命令给我们想要创建文件的位置和用户名,我们想输入以下身份验证细节:
1sudo htpasswd -c /etc/httpd/pma_pass username
c
标志表示,这将创建一个初始文件。目录位置是将用于该文件的路径和文件名。用户名是我们想要添加的第一个用户。
如果您想添加额外的用户来验证,您可以再次拨打相同的命令 ** 没有 ** 的 -c
旗帜,并使用新的用户名:
1sudo htpasswd /etc/httpd/pma_pass seconduser
随着我们的密码文件的创建,一个身份验证网关已经实施,我们现在应该在下次访问我们的网站时看到一个密码提示:
1http://server_domain_or_IP/nothingtosee
一旦您输入了您的身份证,您将被带到正常的phpMyAdmin登录页面. 这种额外的保护层将有助于保持您的MySQL日志清洁的身份验证尝试,除了额外的安全优势。
结论
您现在可以从一个相当安全的 Web 界面管理您的 MySQL 数据库. 这个用户界面暴露了从 MySQL 命令提示中可用的大部分功能. 您可以查看数据库和方案,执行查询,并创建新的数据集和结构。