Установка и защита phpMyAdmin на Nginx сервере в Ubuntu


Установка и защита phpMyAdmin на Nginx сервере в Ubuntu

Чтобы установить PhpMyAdmin на Ubuntu 18.04, нужно подготовить стек программ LEMP, состоящий из веб-сервера Nginx, системы управления базами данных MySQL и языка программирования PHP. В репозиториях Ubuntu Linux есть всё необходимое. Достаточно лишь выполнить несколько команд.

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

Установка phpMyAdmin

Установка PhpMyAdmin выполняется следующей командой:

В процессе установки появится окно, предлагающее выбор сервера. Поскольку производится установка на сервер Nginx, достаточно нажать «TAB» и «ОК», оставив поля «< >» пустыми.

Следующим появится окно настройки пакета «dbconfig-common». Рекомендуется выбрать «Yes» (Да). Программа создаст базу данных в MySQL со служебной информацией.

Установка phpMyAdmin

Далее инсталлятор предложит пользователю создать пароль. Если оставить поле пустым, то программа самостоятельно сгенерирует случайный код.

Настройка MySQL

Предназначение PhpMyAdmin – управление базами данных MySQL. Поэтому работа PhpMyAdmin и MySQL тесно взаимосвязана.

Для аутентификации в веб-интерфейсе PhpMyAdmin используются данные пользователей MySQL, поэтому важно создать учётную запись MySQL и предоставить привилегии уровня «ALL PRIVILEGES».

Важно. Раздел статьи можно пропустить, если пользователь уже создан и имеет все необходимые привилегии.

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

Чтобы создать учетную запись в MySQL с необходимыми привилегиями, нужно поочередно выполнить следующие команды в терминале:

Вместо «phpadmin» можно подставить собственный логин, а в поле «mypassword» — ввести собственный пароль.

Выйти из оболочки MySQL можно командой:

Настройка Nginx

PhpMyAdmin не будет работать, поскольку в Nginx отсутствует конфигурация, размещающая веб-интерфейс на определенном хосте.

Далее будет рассмотрен способ размещения веб-интерфейса PhpMyAdmin на 80 порту (HTTP).

Примечание. В будущем рекомендуется настроить Nginx на вещание трафика через 443 порт (HTTPS), установив SSL сертификат и обезопасив соединение от злоумышленников.

Получение информации о PHP

Перед тем как вносить параметры в файлы конфигурации нужно узнать наименование файла Unix сокета. Если этот параметр будет указан неверно, то, переходя на страницу веб-интерфейса PhpMyAdmin будет появляться ошибка 502.

Узнать название файла можно, выполнив последовательно пару команд:

Вывод будет следующим:

В примере «php7.4-fpm.sock» – необходимый файл Unix сокета.

Примечание. Название файла зависит от установленной версии PHP («php7.0-fpm.sock», «php7.2-fpm.sock» и т.д).

Создание конфига Nginx

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

В созданный файл вносятся следующие строки:

В данном примере важны следующие параметры:

  • IP-адрес сервера «194.61.0.6». Вместо него нужно подставить свой домен, например «site.ru».
  • «php7.4-fpm.sock» — файл Unix сокета.

После внесения кода, требуется сохранить файл. Если используется текстовой реактор Nano, то изменения применяются сочетанием клавиш «CTRL+X», далее следует нажатие «Y» и «Enter».

Теперь нужно удалить файл конфигурации Nginx по умолчанию — «default», и перенести созданный конфиг «phpmyadmin.conf» на его место:

Убедиться в отсутствии синтаксических ошибок можно командой:

Если получен следующий вывод, то всё в порядке:

Примечание. Если вывод Nginx отличается от полученного, значит при написании конфига были обнаружены ошибки. Возможно были допущены ошибки при расставлении скобок «>»

После выполнения предыдущих действий необходим перезапуск сервера Nginx для применения параметров. Выполняется перезагрузка командой:

Убедиться в правильности работы Nginx можно, выполнив команду:

Должен появиться следующий вывод:

Теперь следует проверить доступ к интерфейсу. Для этого нужно ввести в строке браузера IP-адрес, добавив «/phpmyadmin». Выглядеть результат должен следующим образом:

Теперь войти возможно, указав логин и пароль, использованные для подключения к консоли. Установку можно считать завершенной.

Однако, нужно учитывать тот факт, что теперь PhpMyAdmin присутствует в открытом доступе, а защита сервера находится на самом низком уровне. Нужно предпринять ряд шагов, которые обеспечат безопасность.

Смена стандартного местоположения PhpMyAdmin

Обычно программа находится по адресу «/phpmyadmin», «/pma», «/admin», «/mysql». Если оставить PhpMyAdmin в стандартном расположении, то злоумышленники могут использовать программы, взламывающие пароль методом брутфорса (перебора).

Чтобы обеспечить должную безопасность, нужно указать уникальный путь, защитив базу данных от проникновения.

Для этого нужно открыть, созданный в предыдущих действиях, конфигурационный файл «phpmyadmin.conf» и найти строку «location /phpmyadmin

Смена стандартного местоположения PhpMyAdmin

При изменении слова «phpmyadmin» на нестандартное, меняется веб-адрес, а следовательно боты не смогут найти программу. К примеру, обозначим адресом PhpMyAdmin слово «ubuntu»:

Смена стандартного местоположения PhpMyAdmin

Примечание. Вместо «ubuntu» нужно подставить свое наименование адреса к веб-интерфейсу PhpMyAdmin.

Теперь нужно сохранить изменения в файле и перезагрузить сервер Nginx следующей командой:

При попытке открыть в веб-браузере старый адрес, появится ошибка 404 (не найдено):

Теперь открыть страницу возможно только по новому адресу:

Установка ограничения root доступа

Учётная запись root даёт не только особые привилегия пользователям, но и является уязвимостью, играющей на руку злоумышленнику. С изменением адреса PhpMyAdmin была устранена уязвимость в безопасности для автоматизированных программ, но всегда стоит минимизировать риски и защититься от других видов атак на сервер.

Для обеспечения защиты PhpMyAdmin придётся ввести ограничение root прав программе. Для этого нужно создать файл конфигурации по адресу:

В созданный файл необходимо вставить следующий код:

В данном примере важны следующие параметры:

  • АllowNoPassword – вход без пароля (false – отключен);
  • AllowRoot – вход с учётной записи root пользователя (false – отключен).

Как только файл будет сохранен, изменения вступят в силу. При попытке выполнить вход из учётной записи суперпользователя, появится ошибка — «Access Denied» (Доступ запрещен).

Настройка доступа по IP

Еще один способ защитить PhpMyAdmin — предоставить или запретить доступ к веб-интерфейсу определенным хостам на уровне сервера Nginx. Это позволит ограничить доступ всем, кроме некоторых IP-адресов, или направленно заблокировать нежелательные, вредоносные хосты.

Предоставление доступа определенным хостам

В Nginx предусмотрена функция управления доступом на основе IP. Настройка хостов производится в блоке location PhpMyAdmin, с помощью переменных «allow» (разрешить) и «deny» (запретить). Если нужно разрешить запросы только с данного хоста, то достаточно внести эти строки:

В примере переменная «XXX.XXX.XXX.XXX» — разрешенный публичный IP-адрес.

Чтобы узнать свой публичный IP адрес, нужно перейти по ссылке https://ipinfo.io/ip или последовательно ввести в консоли команды:

Выводом будет обычный IP адрес.

В принципе, разрешить доступ можно со скольких угодно хостов, создав «белый список». Параметр «deny all», наоборот блокирует все хосты, кроме разрешенных.

Примечание. При изменении сети или использовании VPN, публичный IP-адрес меняется. Важно вписать все возможные адреса хостов, с которых ожидается вход в PhpMyAdmin. В противном случае можно потерять доступ к веб-интерфейсу.

Чтобы начать настройку, нужно открыть файл конфигурации:

Параметры вносятся примерным образом:

Настройка доступа по IP

Для вступлений изменений в силу, требуется перезапустить процесс сервера Nginx:

Ограничение доступа определенным хостам

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

В приведенном случае «XXX.XXX.XXX.XXX» — запрещённый публичный IP-адрес.

Можно использовать любое число директив «deny», если нужно запретить доступ нескольким хостам.

Чтобы начать настройку, нужно открыть файл конфигурации:

И внести параметры примерно подобным образом:

Настройка доступа по IP

Для вступлений изменений в силу, требуется перезапустить процесс сервера Nginx:

После данной настройки все неразрешенные хосты будут отклоняться, получая ошибку 403.


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

Ваш адрес email не будет опубликован. Обязательные поля помечены *