Установка SSL-сертификатов при помощи PhpMyAdmin на сервер Ubuntu 12.04

PhpMyAdmin – это простой в использовании веб-интерфейс для управления базами данных MySQL. Его можно настроить для дистанционного управления данными виртуального выделенного сервера (т.е., без доступа к оболочке).

Хотя phpMyAdmin полезен, он представляет серьёзный риск безопасности в случае неправильной настройки. Это руководство покажет, как установить phpMyAdmin на стек LAMP на сервере Ubuntu 12.04, применяя SSL и ограничения доступа.

Требования

Для выполнения руководства необходимы привилегии root и предварительно настроенный стек LAMP. Чтобы получить инструкции по установке LAMP stack, читайте это руководство.

Установка PhpMyAdmin

Пакет PhpMyAdmin можно найти в стандартном репозитории Ubuntu 12.04. для установки PhpMyAdmin используйте команду:

sudo apt-get install phpmyadmin

Во время установки выберите Apache2 в качестве сервера. Затем выберите Yes для автоматической настройки базы данных phpMyAdmin.

Укажите свой root-пароль MySQL, а затем становите пароль для phpMyAdmin.

Настройка Apache для загрузки phpMyAdmin

Теперь нужно настроить Apache для поддержки phpMyAdmin; для этого веб-сервер обращается к настройкам phpMyAdmin, чтобы открыть доступ к приложению.

Отредактируйте главный конфигурационный файл Apache с привилегиями root:

sudo nano /etc/apache2/apache2.conf

Перейдите в конец файла и внесите следующую директиву, чтобы Apache читал конфигурационный файл phpMyAdmin:

Include /etc/phpmyadmin/apache.conf

Перезапустите сервер, чтобы активировать изменения.

sudo service apache2 restart

На данном этапе может появиться следующее сообщение:

[warn] The Alias directive in /etc/phpmyadmin/apache.conf at line 3 will probably never match because it overlaps an earlier Alias.
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

Эти предупреждения можно просто проигнорировать.

Создание файла .htaccess для PhpMyAdmin

Первое, что нужно сделать для безопасности PhpMyAdmin – ограничить доступ при помощи файла .htaccess. Этот файл позволяет запрашивать пароль для доступа к странице авторизации phpMyAdmin.

Для начала нужно настроить phpMyAdmin для поддержки файла .htaccess. Откройте конфигурации phpMyAdmin для apache с привилегиями root:

sudo nano /etc/phpmyadmin/apache.conf

Под строкой DirectoryIndex index.php поместите строку AllowOverride All:

<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .

Сохраните и закройте файл.

Затем создайте файл .htaccess для phpMyAdmin:

sudo nano /usr/share/phpmyadmin/.htaccess

Внесите в него следующий код:

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Сохраните и закройте файл.

Теперь сайт будет искать валидные учётные данные в файле /etc/phpmyadmin/.htpasswd.

Создать этот файл и аккаунт для входа можно при помощи следующей команды (укажите имя пользователя):

sudo htpasswd -c /etc/phpmyadmin/.htpasswd user_name

Будет запрошен пароль для нового пользователя.

Перезапустите Apache, чтобы изменения вступили в силу.

sudo service apache2 restart

Создание SSL-сертификата при помощи PhpMyAdmin

Веб-интерфейс и сервер будут обмениваться конфиденциальными данными, потому необходимо настроить SSL, чтобы эти данные не передавались в виде простого текста.

Для начала нужно настроить Apache для поддержки SSL и перезапустить сервер, чтобы обновить его настройки:

sudo a2enmod ssl
sudo service apache2 restart

Создайте каталог для хранения SSL-сертификатов, а затем сам ключ и сертификат:

sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Эти команды создадут сертификат, срок действия которого составляет 365 дней. После запуска появится ряд вопросов, самый важный из которых – Common Name. В это поле необходимо внести доменное имя или IP-адрес сервера. Остальные поля можно оставить незаполненными.

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:NYC
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc
Organizational Unit Name (eg, section) []:Dept of Merriment
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:webmaster@awesomeinc.com

Настройка Apache для поддержки SSL-сертификатов

Сертификат SSL готов. Теперь нужно настроить Apache для поддержки этого SSL-сертификата. Откройте стандартный конфигурационный файл виртуального хоста с привилегиями root:

sudo nano /etc/apache2/sites-available/default

Для начала нужно внести в строку <VirtualHost *:80> стандартный порт SSL; в итоге строка выглядит так:

<VirtualHost *:443>

Затем в блок VirtualHost добавьте строку ServerName, которая задаёт доменное имя или IP-адрес, указанные при создании SSL-сертификата, и стандартный порт 443.

<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName example.com:443
. . .

Затем внесите следующие строки перед закрывающим тегом </VirtualHost>:

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Сохраните изменения и закройте файл.

Запуск SSL через PhpMyAdmin

Сервер должен использовать SSL при создании любого подключения; для этого нужно настроить PhpMyAdmin.

Откройте конфигурационный файл phpMyAdmin с привилегиями root:

sudo nano /etc/phpmyadmin/config.inc.php

Перейдите в конец файла и внесите следующую строку:

$cfg['ForceSSL'] = true;

Это всё, что нужно было сделать. Теперь phpMyAdmin будет использовать SSL для создания подключений.

Сохраните и закройте файл.

Активация изменений SSL

Если сайт еще не включен, включите его с помощью следующей команды:

sudo a2ensite default

Перезапустите сервис Apache, чтобы обновить настройки:

sudo service apache2 restart

Итоги

Чтобы получить доступ к интерфейсу phpMyAdmin, откройте в браузере:

example.com/phpmyadmin

При этом будет запрошено имя пользователя и пароль, указанные в .htaccess.

Потом, вероятно, появится предупреждение о ненадёжности SSL-сертификата. Это довольно ожидаемая реакция, поскольку сертификат не подписан каким-либо центром сертификации, которому может доверять браузер.

Чтобы продолжить, нажмите Proceed или Continue. Теперь будет повторно запрошен пароль .htaccess, поскольку вы подключаетесь к сайту через SSL.

Затем появится страница входа phpMyAdmin; введите свои учетные данные.

Username: root
Password: your_phpmyadmin_password

После этого на экране появится главная страница страница управления phpMyConfig.

Tags: , , , , , , ,

Добавить комментарий