仅允许从本地主机访问 phpmyadmin

问题描述 投票:0回答:4

我正在尝试将我的服务器 phpmyadmin 配置为仅从本地主机访问,而不是从远程访问。以下是服务器上的配置

/etc/phpmyadmin/apache.conf

 Alias /phpmyadmin /usr/share/phpmyadmin

 <Directory /usr/share/phpmyadmin>
   Order deny,allow
   Deny from all
   Allow from 127.0.0.1

   Options FollowSymLinks
   DirectoryIndex index.php

</Directory>

所以,当我从远程访问 phpmyadmin 时,我收到 403 禁止,这很好,但是当我从本地主机(即使用远程桌面的服务器)访问 phpmyadmin 时,我仍然收到 403,而我认为这应该允许从本地主机访问 phpmyadmin 。我在这里缺少什么吗?

谢谢你

apache localhost
4个回答
1
投票

我的猜测是您使用的是 Apache 2.4.x。访问控制的语法在 2.2 和 2.4 之间发生了变化。您使用的

Order
Deny
语法适用于 Apache 2.2,但不适用于 2.4。在 2.4 中,它会是这样的:

<Directory /usr/share/phpmyadmin>
    Require ip 127.0.0.1
    Options FollowSymLinks
    DirectoryIndex index.php
</Directory>

参考 Apache 升级文档访问控制文档


1
投票

逻辑错误

你们每个人都犯了一个大错误。

PhpMyAdmin 不是服务器,它只是一个以 PHP 脚本编写并由某个 HTTP 服务器(在本例中为 Apache)提供服务的客户端。

您想要的(编辑)和其他人建议做的是尝试禁用 HTTP 服务器的

phpmyadmin
vhost 的访问,但仍然可以从终端的 使用任何其他客户端登录到基地mysql
 命令,用于 GUI 客户端,例如 MySQL Workbench 或 IDE 内置的数据库客户端。逻辑在哪里?

当然,您可以同时使用这两种技术(HTTP 安全和 MySQL 安全),但是如果没有第二种技术,您的数据库仍然不安全。

PhpMyAdmin 只是一个客户端! 它甚至有自己的访问控制机制,但如果有人使用任何其他客户端(如上所述),你的努力将绝对毫无价值)。

解决方案:

为了维护您的情况,您应该创建一个具有

localhost

 访问权限的专用 MySQL 帐户(我可以睡觉了,在撰写本文时,它是/曾经是 
%
,这意味着全局),然后 MySQL 将控制所有传入连接检查它们是来自本地计算机还是来自世界各地。

只是不要忘记删除具有全局访问权限的帐户(

%

)并在所有更改后刷新权限。

另外,我总是建议创建一个用户,并拥有一个专用数据库的所有权限(ofc,除了

root

)。这样,即使您只是管理多个数据库的管理员,也可以最大限度地减少其他数据库意外更改的风险。 (专业提示,好的密码管理器将成为您友好的幽灵守护者)。

我建议用谷歌搜索它并获得有关该主题的整体知识,因为它对于数据库安全非常重要,但是如果您从找到的第一个答案中实现简单的解决方案,那么这也足够了。对 MySQL 使用

localhost

 限制,最好在防火墙端设置阻止 
3306
 端口,是使用本地安装的 PhpMyAdmin 
script 100% 安全地访问数据的完美解决方案(如果可能的话)。

下面引用

另一篇文章的回答

GRANT ALL PRIVILEGES ON *.* TO db_user @'localhost' IDENTIFIED BY 'db_passwd'; GRANT ALL PRIVILEGES ON *.* TO db_user @'127.0.0.1' IDENTIFIED BY 'db_passwd';
[mysqld]
bind-address = 127.0.0.1
附注您甚至不需要为此编写 SQL 命令,您可以使用... PhpMyAdmin 为每个用户更改它。


0
投票
我认为这应该可行,并且使您只能在本地访问它,大多数情况下应该是这样的,但是:

<Directory /usr/share/phpmyadmin> Require local #......otherthings (also, only copy the line Require local)
    

0
投票
如果 phpMyAdmin 与数据库位于同一服务器上,则限制管理员用户登录到 localhost 并不会阻止用户从外部登录,因为从数据库到 phpMyAdmin 的连接是本地连接。

请参阅以下链接:

我可以使用 root 登录 phpMyAdmin,即使它仅限于本地主机

为了防止暴力登录,可以阻止对 phpMyAdmin 的远程访问,并在需要时使用 SSH 隧道从外部获取访问权限。

© www.soinside.com 2019 - 2024. All rights reserved.