我应该在生产服务器上还是在不同的服务器上安装PhpMyAdmin,通过电线访问生产数据库?

(这个问题是相关的,但不同于你会在生产Web服务器上安装phpmyadmin? )

我想使用PhpMyAdmin来访问我的生产数据库。 我宁愿没有安装在生产服务器上。 在不同的服务器上运行它是否合理/安全,但通过Internet访问我的生产数据库?

我有一个内部的开发服务器,我运行phpmyadmin,然后从开发服务器上的随机高端口ssh隧道到每个生产服务器上的端口3306。 然后我把phpmyadmin指向本地的高端口。

autossh -C -M 0 -f -N -L 7650:localhost:3306 [email protected]

这是每个主机的myphpmyadminconfiguration。 您可以根据需要更改主机和端口的次数。 当你进入phpmyadmin页面时,你将有一个下拉列表,让你select你想要连接的主机。 只要确保每个人都在您的主机文件,并指向本地主机。

 / *
我的网站
  * / 

$ I ++;
$ cfg ['Servers'] [$ i] ['auth_type'] ='cookie';
$ cfg ['Servers'] [$ i] ['host'] ='MySite';
$ cfg ['Servers'] [$ i] ['port'] ='7650';
$ cfg ['Servers'] [$ i] ['connect_type'] ='tcp';
$ cfg ['Servers'] [$ i] ['compress'] = false;
$ cfg ['Servers'] [$ i] ['extension'] ='mysql';
$ cfg ['Servers'] [$ i] ['AllowNoPassword'] = false;
$ cfg ['Servers'] [$ i] ['bs_garbage_threshold'] = 50;
$ cfg ['Servers'] [$ i] ['bs_repository_threshold'] ='32M';
$ cfg ['Servers'] [$ i] ['bs_temp_blob_timeout'] = 600;
$ cfg ['Servers'] [$ i] ['bs_temp_log_threshold'] ='32M';

如果你通过互联网访问生产服务器,我build议最小化开放端口的数量。 不言而喻,暴露于互联网的服务越less,您就越有可能存在安全漏洞。

这就是说,我会build议如下:

  1. 如果您已经将mySQL端口暴露给互联网,请远程使用phpMyAdmin。 如果你不这样做,那么你不应该冒风险允许外部连接到数据库。
  2. 直接在生产服务器上运行phpMyAdmin,但使用不“典型”的URL。 机器人扫描常见的位置,如/ phpmyadmin /。
  3. 如果你公开SSH(我想你是这么做的),只能在生产服务器的本地主机上暴露phpmyadmin,并通过SSH连接将你的networkingstream量传输到服务器。 您可以打开类似于以下的连接,然后将浏览器指向“localhost:2000”socks代理。
 ssh -D 2000用户@生产服务器

这是我的偏好:

1)禁止连接到您的networking外部的MySQL 2)从安全的服务器运行phpmyadmin … https:// 3)保持mysql和phpmyadmin在单独的服务器上,以保持任何一台服务器的漏洞低4)不要暴露SSH你的networking之外。 如果您需要从外部访问SSH,则首先将VPN连入您的networking。

您可以简单地在生产服务器上安装phpmyadmin,但是可以做一些事情来提高系统的安全性:

1-在非默认端口上运行apache。

2-使用https访问网页。 自签名证书应该足够了。

3-在apache中使用适当的允许/拒绝规则只允许可信任的IPS。

4-将默认的http url从phpmyadmin更改为不容易猜测的内容。

5-使用强密码。