Protegendo o phpmyadmin: porta não padrão + https

1

Tentando proteger o phpmyadmin, já fizemos o seguinte:

  • Login de autenticação de cookies

  • firewall da porta tcp 3306.

  • em execução na porta não padrão

Agora gostaríamos de implementar o https ... mas como ele poderia funcionar com o phpmyadmin rodando já em uma porta não stardard?

Esta é a configuração do 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>

Editar:

Eu criei um certificado SSL personalizado com o próprio apache, com base neste link e, em seguida, seguiu as dicas dadas por James e eu recebo isso:

[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

Editar:

O arquivo existe, a chave está lá, termina com '-' e estes são os privilégios:

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
    
por elect 04.11.2012 / 15:19

3 respostas

4

O phpMyAdmin é um daqueles pacotes que me manteve no mercado como um examinador de incidentes / perícia. Tem um histórico terrível de execução de código arbitrário e bypass de autenticação. Minha recomendação geral de segurança é desinstalá-lo e usar algo como o Workbench ou aprender a gerenciar o mysqld diretamente.

Se você fizer usá-lo, os passos que você deu são bons. Você definitivamente precisa apenas apresentá-lo sobre SSL, que será configurado no servidor web subjacente. Você também precisa restringir o acesso. Com o Apache httpd isso será feito via htaccess. Feche-o o mais que puder. Seus esforços serão recompensados.

    
por 04.11.2012 / 20:56
3

Basta colocar tudo o que você precisa fazer para configurar o host virtual para SSL da maneira normal.

SSLEngine on
SSLCertificateFile /path/to/crt
SSLCertificateKeyFile /parh/to/cry/key

Como o host virtual está configurado para escutar em uma porta diferente, isso não afeta a maneira como o SSL funcionará, mas é necessário informar ao navegador que ele está funcionando em uma porta diferente. Por exemplo:

https://www.example.com:3130/phpmyadmin

Atualização: erros de digitação corrigidos.

    
por 04.11.2012 / 15:33
2

Se você precisar usar o phpMyAdmin (o que você não deve se você realmente se importa com segurança, como coberto pelo @ScottPack), você deve considerar restringir o acesso a um particular sub-rede e conecte-se usando um túnel VPN para acessá-lo. Eu nunca implantaria o phpMyAdmin na Internet pública se eu fosse forçado a fazê-lo.

    
por 05.11.2012 / 18:33