为了确保 phpmyadmin 的安全,我们已经做了以下事情:
Cookie 认证登录
防火墙关闭 TCP 端口 3306。
在非标准端口上运行
现在我们想要实现 https...但是当 phpmyadmin 已经在非标准端口上运行的时候它该如何工作呢?
这是 apache 配置:
# PHP MY ADMIN
<VirtualHost *:$CUSTOMPORT>
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/libraries>
Order Deny,Allow
Deny from All
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Order Deny,Allow
Deny from All
</Directory>
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/phpmyadmin.log combined
</VirtualHost>
编辑:
我根据这个用 apache 本身创建了一个自定义 SSL 证书关联然后按照 James 给出的提示,我得到了以下结果:
[Sun Nov 04 16:02:38 2012] [info] Init: Seeding PRNG with 656 bytes of entropy
[Sun Nov 04 16:02:38 2012] [error] Init: Unable to read server certificate from file /etc/apache2/ssl/pma.crt
[Sun Nov 04 16:02:38 2012] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Sun Nov 04 16:02:38 2012] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
[Mon Nov 05 18:22:54 2012] [info] Init: Seeding PRNG with 656 bytes of entropy
[Mon Nov 05 18:22:54 2012] [error] Init: Unable to read server certificate from file /etc/apache2/ssl/pma.crt
[Mon Nov 05 18:22:54 2012] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Mon Nov 05 18:22:54 2012] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
编辑:
文件存在,密钥在那里,它以“-”结尾,这些是权限:
drwxr-xr-x 2 root root 4096 4. Nov 14:45 .
drwxr-xr-x 8 root root 4096 4. Nov 14:30 ..
-rw-r--r-- 1 root root 1041 4. Nov 14:45 pma.crt
-rw-r--r-- 1 root root 1679 4. Nov 14:45 pma.key
答案1
phpMyAdmin 是让我作为事件/取证审查员继续工作的软件包之一。它有执行任意代码和绕过身份验证的可怕历史。我的一般安全建议是卸载它并使用 Workbench 之类的东西或学习如何直接管理 mysqld。
如果你做使用它,那么你采取的步骤是正确的。你肯定需要只通过 SSL 呈现它,这将在底层 Web 服务器上配置。你还需要限制访问。使用 Apache httpd,这将通过 htaccess 完成。尽可能紧密地关闭它。你的努力将得到回报。
答案2
简而言之,您需要做的就是以正常方式为 SSL 配置虚拟主机。
SSLEngine on
SSLCertificateFile /path/to/crt
SSLCertificateKeyFile /parh/to/cry/key
因为虚拟主机配置为监听不同的端口,所以不会影响 SSL 的工作方式,但您需要告诉浏览器它在不同的端口上运行。例如:
https://www.example.com:3130/phpmyadmin
更新:修正了错别字。
答案3
如果你必须使用 phpMyAdmin(如果你真的如果您关心安全性(如@ScottPack 所述),则应考虑限制对私有子网的访问,并使用 VPN 隧道进行连接以访问它。我会绝不如果被迫的话,我会在公共互联网上部署 phpMyAdmin。