Как установить phpMyAdmin на nginx и Ubuntu 14.04

Обсудить

Введение

Реляционные системы управления базами данных, к примеру MySQL, используются на многих сайтах и веб-приложениях. Однако далеко не каждый пользователь может администрировать их через командную строку.

Для того, чтобы решить эту проблему, был создан проект под названием phpMyAdmin. Это приложение представляет собой веб-интерфейс, который используется для работы с СУБД. Следуя этой инструкции, вы сможете установить и защитить от недоброжелателей phpMyAdmin на сервере Ubuntu 14.04. В данном случае будет использоваться nginx, который представляет собой легковесный и производительный веб-сервер, способный работать с большой нагрузкой.

Требования

Перед тем, как приступить к дальнейшим действиям, вам нужно убедиться, что у вас имеется все перечисленное ниже.

Вы обязательно должны выполнить настройку сервера Ubuntu 14.04 – это важно, так как вам понадобится надежная база для того, чтобы развернуть связку, о которой пойдет речь далее. Также вам понадобится пользователь, который не имеет root-прав (то есть не суперпользователь), но наделен sudo-правами для выполнения административных задач.

Также на вашем сервере Ubuntu 14.04 должен быть развернут стек LEMP (Linux, Nginx, MySQL и PHP). Он будет необходим для обслуживания интерфейса phpMyAdmin (MySQL также является программным обеспечением для работы с базами данных, которыми мы хотим управлять).

Если все вышеперечисленное у вас установлено и настроено, тогда переходите к следующей части этой статьи.

Шаг 1: устанавливаем phpMyAdmin

Так как у вас на сервере уже имеется стек LEMP, вы можете сразу перейти к установке phpMyAdmin. Это можно сделать, используя стандартные репозитории Ubuntu, поэтому сам процесс установки достаточно прост.

Первым делом обновите список локальных пакетов сервера. Это необходимо сделать для того, чтобы убедиться, что у вас в наличии самый свежий список ссылок на доступные пакеты. Далее используйте консольный инструмент apt для того, чтобы загрузить программное обеспечение из репозиториев и установить его на свою систему:

sudo apt-get update
sudo apt-get install phpmyadmin

Во время установки у вас будет запрошена некоторая информация. В частности, вам нужно будет выбрать веб-сервер, который автоматически настроит утилита. Но так как nginx – тот веб-сервер, который вы используете – выбрать нельзя, то просто нажмите TAB для перехода к следующему этапу установки.

Далее вам нужно будет выбрать, будете ли вы использовать dbconfig-common для того, чтобы настроить базу данных для phpMyAdmin. Выберите “Yes” («Да»).

Для того, чтобы применить изменения, вам необходимо ввести административный пароль от базы данных, который вы создали ранее во время установки MySQL. После этого вам нужно выбрать и подтвердить пароль для новой базы данных, в которой будут храниться данные phpMyAdmin.

Теперь, когда установка завершена, вам необходимо создать символьную ссылку от установочных файлов к корневой директории документов nginx. Это нужно для того, чтобы веб-сервер nginx мог находить и правильно обрабатывать файлы phpMyAdmin. Создание символьной ссылки происходит после ввода данной команды:

sudo ln -s /usr/share/phpmyadmin /usr/share/nginx/html

Наконец, вам необходимо включить PHP-модуль mcrypt, на который опирается phpMyAdmin. Так как он устанавливается вместе с phpMyAdmin, то вам нужно просто включить его и перезапустить PHP-процессор. Для этого введите следующие команды:

sudo php5enmod mcrypt
sudo service php5-fpm restart

Теперь вы можете приступать к работе с веб-приложением phpMyAdmin. Для того, чтобы попасть в интерфейс, добавьте к доменному имени или публичному IP-адресу /phpmyadmin в вашем браузере:

http://доменное_имя_или_IP-адрес/phpmyadmin

Окно авторизации выглядит следующим образом:

Как установить phpMyAdmin на nginx и Ubuntu 14.04Для того, чтобы авторизоваться, используйте имя пользователя и пароль действующего пользователя MySQL. Например, введите имя суперпользователя и его пароль от базы MySQL. Таким образом вы попадете в административную панель:

Меню phpMyAdminПоходите по разделам для того, чтобы ознакомиться с интерфейсом. Следующим шагом вам нужно будет защитить данный интерфейс от незаконного доступа.

Шаг 2: добавляем защиту phpMyAdmin

После выполнения всех действий, перечисленных в предыдущем шаге, у вас теперь имеется phpMyAdmin, который полностью готов к использованию. Но имейте в виду, что, установив данное приложение, вы открыли доступ к MySQL извне, а значит, безопасность вашего сервера может быть под угрозой.

Даже несмотря на наличие аутентификации, это все равно является проблемой, так как phpMyAdmin предоставляет доступ к большому объему данных и поэтому зачастую становится целью атак злоумышленников.

Для того, чтобы уменьшить вероятность выбора вашего приложения в качестве цели и последующего взлома, вы можете следовать двум простым методикам. Во-первых, вам нужно будет изменить местоположение интерфейса с /phpmyadmin на какое-либо другое; это делается для того, чтобы отсечь поток ботов, которые будут пытаться взломать вас путем полного перебора. Во-вторых, вам будет необходимо создать дополнительную проверку подлинности шлюза на уровне веб-сервера, которую нужно будет пройти перед загрузкой окна авторизации в phpMyAdmin.

Изменение местонахождения входа в приложение

Для того, чтобы сервер nginx мог находить и обслуживать файлы phpMyAdmin, в предыдущем шаге вы создали символьную ссылку из директории phpMyAdmin в корневую директорию с документами.

Для того, чтобы поменять URL, который ведет на авторизацию в phpMyAdmin, вам просто нужно задать новое имя символьной ссылке. Переместитесь в корневую директорию с документами nginx для того, чтобы выполнить следующие действия:

cd /usr/share/nginx/html
ls -l
total 8
-rw-r--r-- 1 root root 537 Mar 4 06:46 50x.html
-rw-r--r-- 1 root root 612 Mar 4 06:46 index.html
lrwxrwxrwx 1 root root 21 Aug 6 10:50 phpmyadmin -> /usr/share/phpmyadmin

Как вы можете видеть, в данной директории расположена символьная ссылка под названием phpmyadmin. И это имя вы можете поменять на любое, какое захотите. После этого поменяется ссылка, по которой будет происходить доступ в phpMyAdmin через браузер. И именно благодаря этому изменению автоматизированные боты не смогут найти туда путь.

Выберите имя, которое не содержит в себе связи с тем, куда будет вести ссылка. К примеру, можно использовать что-то вроде /noinfohere. После выбора подходящей фразы вам необходимо внести изменения:

sudo mv phpmyadmin noinfohere
ls -l

total 8
-rw-r--r-- 1 root root 537 Mar 4 06:46 50x.html
-rw-r--r-- 1 root root 612 Mar 4 06:46 index.html
lrwxrwxrwx 1 root root 21 Aug 6 10:50 noinfohere -> /usr/share/phpmyadmin

После этого если вы попытаетесь попасть в интерфейс phpMyAdmin через предыдущую ссылку, то вы увидите ошибку 404:

http://доменное_имя_или_IP-адрес/phpmyadmin

Теперь для выхода в phpMyAdmin используйте новую ссылку:

http://доменное_имя_или_IP-адрес/noinfohere

Установка шлюза аутентификации веб-сервера

Следующее, что вам необходимо сделать для того, чтобы обеспечивать безопасность phpMyAdmin, это создать проверку подлинности, которую будет проходить пользователь перед тем, как ему станет доступно окно с авторизацией в phpMyAdmin.

Однако nginx, как и большинство веб-серверов, содержит в себе эту возможность по умолчанию, поэтому единственное, что необходимо сделать, - это задать нужные настройки в конфигурационном файле nginx.

Но перед этим вам нужно создать файл паролей, в котором будут храниться все данные, связанные с аутентификацией. Так как используется nginx, то пароли должны быть обязательно зашифрованы при помощи функции crypt(). Вы можете сделать это, используя криптографический пакет OpenSSL, который по умолчанию установлен на вашем сервере.

Для того, чтобы создать зашифрованный пароль, введите следующую команду:

openssl passwd

Далее у вас будет запрошен пароль, который вы хотите использовать, и его подтверждение. После чего на экране будет выведена зашифрованная версия вашего пароля, которая может выглядеть, к примеру, так:

O5az.RSPzd.HE

Скопируйте данное значение, так как его нужно добавить в аутентификационный файл, который вы создадите далее.

Перейдем к его созданию. Назовите файл pma_pass и расположите его в директории с настройками nginx:

sudo nano /etc/nginx/pma_pass

Далее вам нужно в этом файле указать имя пользователя (в данном случае будет primer, но вы должны выбрать другое имя), которое вы хотите использовать, после него поставьте двоеточие (:) и вставьте зашифрованную версию вашего пароля, который вы скопировали до этого. Запись должна выглядеть следующим образом:

primer:O5az.RSPzd.HE

Сохраните и закройте файл после того, как внесли в него все необходимые изменения.

Теперь вам нужно внести определенные изменения в файл с настройками nginx. Для начала откройте файл в текстовом редакторе:

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

В нем вам нужно добавить новое расположение приложения phpMyAdmin (в данной инструкции используется /noinfohere).

Создайте новую секцию в разделе server, но вне каких-либо других блоков. В данном примере блок с новым расположением будет расположен ниже блока location /:

server {
 . . .

 location / {
 try_files $uri $uri/ =404;
 }

 location /noinfohere {
 }

 . . .
 }

В этом блоке нам нужно задать значение директивы под названием auth_basic – это сообщение, которое будет выводиться пользователям при аутентификации. При этом для большей защиты не стоит давать какие-то конкретные указания на то, какая именно аутентификация предстоит неавторизованным пользователям. Поэтому, к примеру, можно использовать просто словосочетание “Admin Login”.

Далее вам нужно использовать директиву под названием auth_basic_user_file для того, чтобы она указывала веб-серверу на тот аутентификационный файл, который вы создали ранее. Nginx будет запрашивать у пользователя авторизационные данные и сверять, совпадают ли введенные данные с теми, которые содержатся в аутентификационном файле.

После этого ваш файл должен выглядеть примерно так:

server {
 . . .

 location / {
 try_files $uri $uri/ =404;
 }

 location /noinfohere {
 auth_basic "Admin Login";
 auth_basic_user_file /etc/nginx/pma_pass;
 }

 . . .
 }

Сохраните и закройте файл после ввода всей необходимой информации.

Для того, чтобы все изменения вступили в силу, вам необходимо перезагрузить веб-сервер:

sudo service nginx restart

Теперь, когда вы захотите войти в phpMyAdmin в вашем браузере, у вас будет запрошены имя пользователя и пароль, которые вы добавили в файл pma_pass:

http:// доменное_имя_или_IP-адрес/noinfohere

5d654c472a4c9b59bed7969b386dedeaf34f248dПосле того, как вы введете данные, вы увидите стандартное окно для авторизации в phpMyAdmin. Этот дополнительный уровень безопасности не только улучшает защиту вашей СУБД, но и препятствует сохранению в логах множества неудачных попыток ввести данные авторизации.

Заключение

Теперь для управления MySQL вы можете использовать удобный и защищенный веб-интерфейс. Данное приложение позволяет использовать практически все функции, которые доступны из командной строки MySQL: вы можете просматривать базы данных, схемы, выполнять запросы, а также создавать новые наборы и структуры данных.

VDS/VPS

Комментарии