前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Debian 9上安装和保护phpMyAdmin

如何在Debian 9上安装和保护phpMyAdmin

原创
作者头像
好烟
修改2018-11-05 17:55:14
2K0
修改2018-11-05 17:55:14
举报

介绍

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

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

如果你使用的是其他版本,请参考Ubuntu 16.04

先决条件

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

首先,我们假设您的服务器具有一个具有sudo权限的非root用户,没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

以及配置了ufw的防火墙,如果您使用的是腾讯云的CVM服务器,您可以直接在腾讯云控制台中的安全组进行设置。

如Debian 9的初始服务器设置指南中所述。

我们还假设您已经在Debian 9服务器上完成了LAMP(Linux,Apache,MariaDB和PHP)安装。如果您还没有这样做,请按照我们在Debian上安装LAMP堆栈的指南进行设置。

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

  • 直接与MariaDB安装进行通信
  • 使用MariaDB凭据处理身份验证
  • 执行并返回任意SQL查询的结果

由于这些原因,并且因为它是一个广泛部署的PHP应用程序,经常以攻击为目标,所以不应该通过普通的HTTP连接在远程系统上运行phpMyAdmin。如果您没有配置SSL / TLS证书的现有域,则可以按照本指南使用Debian 9上的Let's Encrypt保护Apache。这将要求您注册域名,为服务器创建DNS记录,以及设置Apache虚拟主机。

如果你没有域名,建议您先去这里注册一个域名,如果你只是使用此配置进行测试或个人使用,则可以使用自签名证书,不需要购买域名。自签名证书提供了相同类型的加密,但没有域名验证公告。关于自签名证书,你可以参考为Apache创建自签名SSL证书如何为Nginx创建自签名SSL证书这两篇文章。

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

第1步 - 安装phpMyAdmin

首先,我们将从默认的Debian存储库安装phpMyAdmin。

这是通过更新服务器的软件包索引然后使用apt包系统下拉文件并将其安装在您的系统上来完成的:

代码语言:javascript
复制
sudo apt update
sudo apt install phpmyadmin php-mbstring php-gettext

这将询问您一些问题,以便正确配置您的安装。

警告:出现提示时,“Apache2的”被选中,但没有选中。如果您没有点击SPACE选择Apache,安装程序将不会在安装期间移动必要的文件。点击SPACETAB然后ENTER选择Apache。

  • 对于服务器选择,请选择 apache2
  • 选择Yes当被问及是否使用dbconfig-common建立数据库
  • 然后,系统会要求您选择并确认phpMyAdmin的MySQL应用程序密码

注意: MariaDB是一个社区开发的MySQL分支,尽管这两个程序密切相关,但它们并不完全可以互换。虽然phpMyAdmin专门用于管理MySQL数据库并在各种对话框中引用MySQL,但请放心,您的MariaDB安装将与phpMyAdmin一起正常工作。

安装过程将phpMyAdmin Apache配置文件添加到/etc/apache2/conf-enabled/目录中,并自动读取该文件。您唯一需要做的是显式启用mbstringPHP扩展,该扩展用于管理非ASCII字符串并将字符串转换为不同的编码。键入以下命令:

代码语言:javascript
复制
sudo phpenmod mbstring

然后,重新启动Apache以便识别您的更改:

代码语言:javascript
复制
sudo systemctl restart apache2

phpMyAdmin现已安装并配置完毕。但是,在您登录并开始管理MariaDB数据库之前,您需要确保MariaDB用户具有与程序交互所需的权限。

第2步 - 调整用户身份验证和权限

当您将phpMyAdmin安装到服务器上时,它会自动创建一个名叫phpmyadmin的数据库用户,该用户会执行该程序的某些基础进程。不是使用您在安装期间设置的管理密码以此用户身份登录,而是建议您使用其他帐户登录。

在Debian系统上的新安装中,使用unix_socket来将 root MariaDB用户设置为默认使用插件进行身份验证,而不是使用密码进行身份验证。在许多情况下,这允许更高的安全性和可用性,但是当您需要通过此用户允许外部程序(例如,phpMyAdmin)管理权限时,它也会使事情变得复杂。由于服务器使用root帐户执行日志轮换以及启动和停止服务器等任务,因此最好不要更改root帐户的身份验证详细信息。由于phpMyAdmin要求用户使用密码进行身份验证,因此您需要创建一个新的MariaDB帐户才能访问该界面。

如果您按照安装LAMP堆栈的先决条件教程并按步骤2中所述创建了MariaDB用户帐户,则可以使用您在设置时创建的密码登录该帐户下的phpMyAdmin,方法是访问以下链接:

代码语言:javascript
复制
https://your_domain_or_IP/phpmyadmin

如果您还没有创建MariaDB用户,或者如果您有,但您想创建另一个用户只是为了通过phpMyAdmin管理数据库,请继续本节以了解如何设置它。

首先打开MariaDB shell:

代码语言:javascript
复制
sudo mariadb

注意:如果启用了密码身份验证,就像已经为MariaDB服务器创建了新的用户帐户一样,则需要使用其他命令来访问MariaDB shell。以下内容将以常规用户权限运行您的MariaDB客户端,并且您只能通过身份验证获得数据库中的管理员权限:

代码语言:javascript
复制
mariadb -u user -p

从那里,创建一个新用户并给它一个强大的密码:

代码语言:javascript
复制
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

然后,为您的新用户授予适当的权限。例如,您可以使用以下命令向用户授予数据库中所有表的权限,以及添加,更改和删除用户权限的权限:

代码语言:javascript
复制
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

然后,退出MariaDB shell:

代码语言:javascript
复制
exit

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

代码语言:javascript
复制
https://your_domain_or_IP/phpmyadmin

使用您配置的用户名和密码登录界面。

登录时,您将看到用户界面,如下所示:

既然您已经能够与phpMyAdmin进行连接和交互,那么剩下要做的就是强化系统的安全性以保护其免受攻击者的攻击。

第3步 - 保护您的phpMyAdmin实例

由于它无处不在,phpMyAdmin是攻击者的热门目标,你应该格外小心,以防止未经授权的访问。最简单的方法之一是使用Apache的内置.htaccess身份验证和授权功能将网关放在整个应用程序的前面。

为此,您必须首先通过编辑Apache配置文件来启用.htaccess文件覆盖的使用。

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

代码语言:javascript
复制
sudo nano /etc/apache2/conf-available/phpmyadmin.conf

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

代码语言:javascript
复制
<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All
    . . .

添加此行后,保存并关闭该文件。

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

代码语言:javascript
复制
sudo systemctl restart apache2

现在您已启用了.htaccess应用程序,您需要创建一个以实际实现某些安全性。

为了使其成功,必须在应用程序目录中创建该文件。您可以通过键入以下内容创建必要的文件并使用root权限在文本编辑器中打开它:

代码语言:javascript
复制
sudo nano /usr/share/phpmyadmin/.htaccess

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

代码语言:javascript
复制
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

以下是每条线的含义:

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

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

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

代码语言:javascript
复制
sudo htpasswd -c /etc/phpmyadmin/.htpasswd username

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

如果要输入其他用户,则需要在没有-c标志的情况下执行此操作,如下所示:

代码语言:javascript
复制
sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

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

代码语言:javascript
复制
https://domain_name_or_IP/phpmyadmin

进入Apache身份验证后,您将进入常规phpMyAdmin身份验证页面以输入您的MariaDB凭据。此设置添加了额外的安全层,这是可取的,因为phpMyAdmin过去曾遭受过漏洞攻击。

结论

您现在应该已经配置了phpMyAdmin并准备好在Debian 9服务器上使用。使用此界面,您可以轻松创建数据库,用户,表等,并执行常规操作,如删除和修改结构和数据。

更多Debian 教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Install and Secure phpMyAdmin on Debian 9》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 先决条件
  • 第1步 - 安装phpMyAdmin
  • 第2步 - 调整用户身份验证和权限
  • 第3步 - 保护您的phpMyAdmin实例
  • 结论
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档