为了保护 phpmyadmin,我们已经做了以下工作:
Cookie 授权登录
防火墙关闭 tcp 端口 3306。
在非标准端口上运行
现在我们想实现 https... 但它如何与已经在非标准端口上运行的 phpmyadmin 一起工作?
这是阿帕奇配置:
# 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
phpMyAdmin 是让我作为事件/取证检查员继续开展业务的软件包之一。它有任意代码执行和身份验证绕过的可怕历史。我的一般安全建议是卸载它并使用类似 Workbench 的东西或学习如何直接管理 mysqld。
如果您确实使用它,那么您采取的步骤就是好的。您肯定只需要通过 SSL 呈现它,这将在底层网络服务器上配置。您还需要限制访问。使用 Apache httpd,这将通过 htaccess 完成。尽可能紧密地关闭它。你的努力将得到回报。
简而言之,您需要做的就是以正常方式为 SSL 配置虚拟主机。
因为虚拟主机配置为侦听不同的端口不会影响 SSL 的工作方式,但您需要告诉您的浏览器它正在不同的端口上运行。例如:
更新:修正错别字。
如果您必须使用 phpMyAdmin(如果您真的关心安全性则不应该使用它,如 @ScottPack 所述),您应该考虑限制对私有子网的访问并使用 VPN 隧道进行连接以访问它。如果被迫,我绝不会在公共互联网上部署 phpMyAdmin。