(这个问题与您会在生产 Web 服务器上安装 phpmyadmin 吗?)
我想使用 PhpMyAdmin 访问我的生产数据库。我不想将它安装在生产服务器上。在其他服务器上运行它,但让它通过互联网访问我的生产数据库,这样合理/安全吗?
答案1
我家里有一台开发服务器,我在上面运行 phpmyadmin,然后从开发服务器上的随机高端口到每个生产服务器上的端口 3306 建立 ssh 隧道。然后我将 phpmyadmin 指向本地高端口。
autossh -C -M 0 -f -N -L 7650:localhost:3306 [email protected]
这是每个主机的 myphpmyadmin 配置。您可以根据需要多次复制此配置,更改主机和端口。当您转到 phpmyadmin 页面时,您将看到一个下拉列表,可让您选择要连接的主机。只需确保每个主机都在您的 hosts 文件中并指向 localhost。
/* MySite */
$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';
答案2
如果您通过互联网访问生产服务器,我建议尽量减少开放端口的数量。毋庸置疑,暴露在互联网上的服务越少,出现安全漏洞的可能性就越小。
话虽如此,我建议如下:
- 如果您已经将 mySQL 端口暴露给互联网,请远程使用 phpMyAdmin。如果没有,则不应冒险允许外部连接到数据库。
- 直接在生产服务器上托管 phpMyAdmin,但使用非“典型”的 URL。机器人会扫描常见位置,例如 /phpmyadmin/。
- 如果您公开 SSH(我想您会这样做),请仅在生产服务器的本地主机上公开 phpmyadmin,并通过 SSH 连接将您的 Web 流量隧道传输到服务器。您可以打开类似于以下的连接,然后将浏览器指向“localhost:2000”socks 代理。
ssh -D 2000 用户@生产服务器
答案3
这是我的偏好:
1) 禁止从网络外部连接到 mysql 2) 从安全服务器运行 phpmyadmin...https:// 3) 将 mysql 和 phpmyadmin 放在不同的服务器上,以降低任何一台服务器上的漏洞率 4) 不要将 SSH 暴露在网络之外。如果您需要从外部访问 SSH,请先通过 VPN 接入您的网络。
答案4
您可以简单地在生产服务器上安装 phpmyadmin,但可以做几件事来提高系统的安全性:
1-在非默认端口上运行 apache。
2- 使用 https 访问网页。自签名证书就足够了。
3-在apache中使用适当的允许/拒绝规则来仅允许受信任的ips。
4-将 phpmyadmin 的默认 http url 更改为不易猜到的内容。
5-使用强密码。