保护 phpmyadmin:非标准端口 + https

保护 phpmyadmin:非标准端口 + https

为了确保 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。

相关内容