Пытаясь защитить phpmyadmin, мы уже сделали следующее:
Cookie Auth логин
брандмауэр отключен от 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>
Редактировать:
Я создал собственный сертификат SSL с самим apache, на основе этого ссылка на сайт а затем последовал советам, данным Джеймсом, и я получил следующее:
[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 обычным способом.
SSLEngine on
SSLCertificateFile /path/to/crt
SSLCertificateKeyFile /parh/to/cry/key
Поскольку виртуальный хост настроен для прослушивания на другом порту, это не влияет на работу SSL, но вам нужно сообщить своему браузеру, что он работает на другом порту. Например:
https://www.example.com:3130/phpmyadmin
Обновление: исправлены опечатки.
если ты должен используйте phpMyAdmin (чего не стоит, если вы действительно позаботьтесь о безопасности, как это предусмотрено @ScottPack), вам следует подумать об ограничении доступа к частной подсети и подключиться с помощью туннеля VPN для доступа к ней. я буду никогда развернуть phpMyAdmin в общедоступном Интернете, если меня заставят.