我们已经知道如何 在 Ubuntu 20.04 上安装带有 LAMP 堆栈的 phpMyAdmin. 今天,让我们看看如何在 Ubuntu 20.04 LTS 版本上使用 LEMP 堆栈安装 phpMyAdmin。 然后我们还将讨论一些有助于保护 phpmyadmin 免受常见威胁的安全实践。 首先,确保您在 Ubuntu 20.04 上设置了 LEMP 堆栈,如以下链接中所述。
- 在 Ubuntu 20.04 LTS 上安装 Nginx、MySQL、PHP(LEMP 堆栈)
安装 LEMP 堆栈后,按照以下部分所述安装并保护 phpMyAdmin。
在 Ubuntu 20.04 LTS 上使用 LEMP 堆栈安装 phpMyAdmin
运行以下命令从终端安装 phpMyAdmin:
$ sudo apt install phpmyadmin
在下一个窗口中,系统将提示您选择应自动配置为运行 phpMyAdmin 的 Web 服务器。 正如您在下面的屏幕截图中看到的,Nginx 在 Web 服务器列表中不可用。 这 Apache 和 lighthttpd 仅在此处列出。 所以 不要选择 任何网络服务器,并将其留空。 选择 OK 并按 ENTER 继续:
PhpMyAdmin 需要安装和配置数据库才能使用。 您可以使用 dbconfig-command 来完成。
选择 是的 使用 dbconfig-common 为 phpmyadmin 配置数据库:
您需要为 phpmyadmin 提供密码才能注册到 MySQL 数据库服务器。 如果没有给出密码,则会生成一个随机密码。
Enter 一个强密码并按 ENTER 继续:
重新输入密码:
在编写本指南时,当我尝试为 phpmyadmin 设置密码时,它会引发以下错误:
An error occurred while installing the database: mysql said: ERROR 1819 (HY000) at line 1: Your password does not satisfy the current policy requirements . Your options are: * abort - Causes the operation to fail; you will need to downgrade, reinstall, reconfigure this package, or otherwise manually intervene to continue using it. This will usually also impact your ability to install other packages until the installation failure is resolved. * retry - Prompts once more with all the configuration questions (including ones you may have missed due to the debconf priority setting) and makes another attempt at performing the operation. * retry (skip questions) - Immediately attempts the operation again, skipping all questions. This is normally useful only if you have solved the underlying problem since the time the error occurred. * ignore - Continues the operation ignoring dbconfig-common errors. This will usually leave this package without a functional database.
发生此错误是因为我们启用了 验证密码 如标题部分所述的组件 “2.2 更改 MySQL root 用户的身份验证方法” 在上面随附的 LEMP 堆栈安装指南中。
要解决此问题,您需要暂时禁用验证密码组件并在设置 phymyadmin 的密码后重新启用它。 点击确定 close 上面的错误信息并选择 “中止” 取消 phpmyadmin 安装。
现在通过运行以下命令登录到 Mysql 提示符:
$ mysql -u root -p
在 mysql 提示符下,调整以下命令以禁用 Validate Password 插件:
mysql> UNINSTALL COMPONENT "file://component_validate_password";
请注意,上述命令只会禁用插件,但不会删除它。 您可以稍后启用它。 然后输入“exit”退出Mysql提示符。
mysql> exit
现在尝试使用命令再次安装 phpmyadmin:
$ sudo apt install phpmyadmin
选择“是”并按 ENTER 以使用 dbconfig-common 为 phpmyadmin 配置数据库。 这次 phpmyadmin 安装将没有任何问题。
安装 phpmyadmin 后,重新启用验证密码插件。 为此,请登录到您的 Mysql 提示符:
$ mysql -u root -p
在 mysql 提示符下,调整以下命令以禁用 Validate Password 插件:
mysql> INSTALL COMPONENT "file://component_validate_password";
键入 exit 退出 mysql 提示符。
mysql> exit
现在创建一个符号链接来配置 Nginx Web 服务器以使用命令运行 phpmyadmin:
$ sudo ln -s /usr/share/phpmyadmin/ /var/www/html/phpmyadmin
此命令将在 Nginx 根目录下创建一个名为“phpmyadmin”的符号链接。 这个符号链接实际上指向 /usr/share/phpmyadmin 目录,其中存储了实际文件。
完毕! 我们已经成功安装了带有 LEMP 堆栈的 PhpMyAdmin。
访问 phpMyAdmin 仪表板
打开您的网络浏览器并导航到 “https://IP 地址/phpmyadmin” 从地址栏。
您应该会看到 phpmyadmin 登录页面。 Enter 数据库用户及其密码:
您会对 phpMyAdmin 仪表板感到满意。
从这里,您可以创建、删除和管理数据库。
创建专用用户以访问 phpMyAdmin 仪表板
安装 phpMyAdmin 后,一个名为 ‘phpmyadmin’ 将使用您在安装期间设置的管理密码自动创建。 您可以使用“phpmyadmin”用户或 mysql 登录到 phpmyAdmin 仪表板 根 用户如上图。 但是,建议通过 phpMyAdmin Web 界面创建一个专用用户来管理数据库。
为此,请使用以下命令登录 mysql shell:
$ mysql -u root -p
Enter 你的 mysql 根密码。 您现在将在 mysql shell 中。
Enter 以下命令为 phpmyadmin 创建一个新的专用用户:
mysql> CREATE USER 'phpmyadminuser'@'localhost' IDENTIFIED BY 'Password123#@!';
这里, phpmyadmin 是访问 phpmyadmin 仪表板的新用户。 phpmyadminuser 的密码是 密码123#@!. 用您自己的值替换这些值。
接下来使用命令为“phpmyadminuser”赋予适当的权限:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadminuser'@'localhost' WITH GRANT OPTION;
最后退出mysql shell:
mysql> exit
我们现在创建了一个专用用户,用于通过 phpmyadmin Web 界面管理数据库。 让我们继续访问 phpmyadmin 仪表板。
打开网络浏览器并导航到“https://IP-Address/phpayadmin. Enter 新创建的数据库用户及其密码。 恭喜! 您已使用专用用户登录 phpMyAdmin Web 仪表板。
安全的 phpMyAdmin
本节提供了一些保护 PhpMyAdmin 安装的提示。 请注意,仅以下步骤无法保护 phpMyAdmin 100% 安全。 但是,它们至少会减慢犯罪者闯入您的 phpmyadmin 仪表板的任何尝试。
禁用 MySQL root 登录到 phpmyadmin 仪表板
允许 mysql root 用户访问 phpMyAdmin 仪表板并不安全,尤其是在通过网络管理数据库时。 这就是我们在上一节中创建专用用户的原因。 由于我们已经有一个专用用户,我们可以安全地禁用 mysql root 登录以访问 phpmyadmin 仪表板,以最大程度地减少攻击。
一般phpmyadmin安装在 /usr/share/phpmyadmin/ 目录及其配置文件存放在 /etc/phpmyadmin 目录。
编辑 phpmyadmin 配置文件:
$ sudo nano /etc/phpmyadmin/config.inc.php
添加/修改以下参数:
[...] $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['AllowRoot'] = FALSE; [...]
Save 和 close 文件。
使用命令重启 Nginx Web 服务器:
$ sudo systemctl restart nginx
现在尝试以 root 用户身份登录 phpmyadmin。 你会得到 拒绝访问 错误信息:
更改 phpmyadmin 网页界面 URL
这是机器人访问 phpmyadmin 的最常见策略。 您可以通过将 URL 更改为难以猜测的内容来防止这种情况。 更改 phpmyadmin URL 将避免机器人或自动脚本执行 URL 扫描和暴力攻击。
还记得我们在 Nginx 根目录下创建了一个名为“phpmyadmin”的符号链接吗?
$ ls -l /var/www/html/ total 8 -rw-r--r-- 1 root root 612 Jun 2 07:15 index.nginx-debian.html -rw-r--r-- 1 root root 20 Jun 2 07:35 info.php lrwxrwxrwx 1 root root 22 Jun 2 08:14 phpmyadmin -> /usr/share/phpmyadmin/
在这里,phpmyadmin 是指向 /usr/share/phpmyadmin 目录的符号链接。
我们将使用命令更改符号链接名称:
$ sudo mv /var/www/html/phpmyadmin /var/www/html/ostechnix
确保名称包含随机字符并且很难猜到。
从现在开始,每当有人尝试通过导航到 https://IP-Address/phpmyadmin URL 来访问 phpmyadmin 页面时,他/她都会收到以下错误消息:
因为我们更改了 URL。 phpmyadmin 的新 URL 是 https://IP-Address/ostechnix。
密码保护 phpMyAdmin 登录页面
我们可以通过使用基本 HTTP 身份验证方法限制对 phpmyadmin 登录页面的访问来添加额外的安全层。 含义 – 我们为 phpmyadmin 登录页面启用密码保护,因此用户必须在访问实际的 phpMyAdmin 登录页面之前输入额外的用户名/密码。
首先,我们需要使用生成密码文件 密码 效用。 htpasswd 实用程序是 apache2-utils 包裹。 所以让我们使用命令安装它:
$ sudo apt install apache2-utils
现在,使用命令创建一个加密的密码文件:
$ sudo htpasswd -c /etc/nginx/.htpasswd ostechnix
用您选择的用户名替换“ostechnix”。 Enter 两次强密码以生成密码文件。
要查看新生成文件的内容,请执行如下“cat”命令:
$ cat /etc/nginx/.htpasswd
您将看到如下输出:
ostechnix:$apr1$Us9YABHL$CMPDIuHaOB2lK/DVIzA2C/
接下来,我们需要在我们的 Nginx 默认配置文件中提及上述密码文件的路径。 如果你按照我们上面附上的 LEMP 安装教程,默认的 Nginx 配置应该是 /etc/nginx/sites-available/default.
编辑默认的 Nginx 配置文件:
$ sudo nano /etc/nginx/sites-available/default
在下面添加以下行 “地点” 堵塞:
[...] location /ostechnix { auth_basic "Restricted Zone"; auth_basic_user_file /etc/nginx/.htpasswd; } [...]
还记得我们在上一步中更改了 phpMyAdmin URL (https://IP-Address/ostechnix) 吗? 这就是为什么我在上面的块中提到块名称为“ostechnix”。 用你自己的替换它。 Save 和 close 文件。
使用以下命令检查 Nginx 配置文件是否有任何语法错误:
$ sudo nginx -t
样本输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
如果您没有看到任何错误,请重新启动 nginx 服务以使更改生效。
$ sudo systemctl restart nginx
现在尝试从您的浏览器访问您的 phpMyAdmin URL。 系统将提示您输入用户名和密码:
Enter 正确的用户名和密码将在之前使用“htpasword”实用程序创建。 现在您将被重定向到实际的 phpMyAdmin 登录页面,您可以在其中输入数据库用户及其密码以登录 phpMyAdmin Web 仪表板。
感谢您的光临!
帮助我们帮助您:
- 订阅我们的电子邮件通讯: 立即注册
- 支持 OSTechNix: 通过贝宝捐款
- 下载免费的电子书和视频: TradePub 上的 OSTechNix
- 联系我们: 红迪网 | Facebook | Twitter | 领英 | RSS订阅
祝你有美好的一天!!