Установка и защита phpMyAdmin в Ubuntu 16.04

Для корректной работы многих веб-проектов нужны системы управления базами данных (СУБД), например, MySQL. Однако взаимодействовать с системой исключительно с помощью командной строки MySQL не всегда удобно.

Благодаря phpMyAdmin пользователи могут управлять системой MySQL через веб-интерфейс. Данное руководство содержит пошаговые инструкции по установке и защите веб-интерфейса phpMyAdmin.

Требования

  • Предварительно настроенный сервер Ubuntu 16.04.
  • Не-root пользователь с доступом к команде sudo (чтобы создать такого пользователя, обратитесь к этой статье).
  • Предустановленный стек LAMP (инструкции по установке – здесь).

При использовании программ вроде phpMyAdmin следует учитывать, что программа:

  • Взаимодействует с MySQL напрямую;
  • Выполняет аутентификацию при помощи учётных данных MySQL;
  • Обрабатывает и возвращает результаты для произвольных запросов SQL.

По этим причинам (а также из-за своей популярности и распространённости) данное приложение PHP часто подвергается атакам злоумышленников. Потому ни при каких обстоятельствах его нельзя запускать в удалённой системе по HTTP-соединению. Если у вас ещё нет SSL/TLS-сертификата для веб-сервера Apache, вы можете получить бесплатный сертификат от сервиса Let’s Encrypt.

1: Установка phpMyAdmin

Пакеты phpMyAdmin доступны в стандартном репозитории Ubuntu.

Обновите индекс пакетов и установите phpMyAdmin:

sudo apt-get update
sudo apt-get install phpmyadmin php-mbstring php-gettext

Чтобы настроить установку, нужно ответить на ряд вопросов.

Примечание: В первом вопросе опция apache2 выделена, но не выбрана. Если вы не нажмёте пробел, чтобы выбрать Apache, инсталлятор не переместит необходимые файлы во время установки. Чтобы выбрать Apache, нажмите пробел, Tab и Enter.

  • В качестве веб-сервера выберите apache2.
  • На вопрос, нужно ли использовать dbconfig-common для настройки базы данных, ответьте yes.
  • Введите пароль БД.
  • Затем программа предложит выбрать и подтвердить пароль для phpMyAdmin.

Во время установки конфигурационный файл phpMyAdmin добавляется в каталог /etc/apache2/conf-enabled/, в котором он читается автоматически.

Теперь нужно явно включить PHP-расширения mcrypt и mbstring.

sudo phpenmod mcrypt
sudo phpenmod mbstring

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

sudo systemctl restart apache2

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

https://domain_name_or_IP/phpmyadmin

Чтобы открыть интерфейс, используйте имя root и пароль MySQL.

2: Защита phpMyAdmin

Из-за своей распространённости PhpMyAdmin часто подвергается атакам злоумышленников. На данном этапе необходимо обеспечить интерфейсу достаточный уровень защиты для предотвращения вредоносного использования.

Один из самых простых способ защиты phpMyAdmin – размещение шлюза безопасности. Это делается при помощи специальных файлов Apache под названием .htaccess.

Поддержка .htaccess

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

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

В раздел <Directory /usr/share/phpmyadmin> нужно добавить параметр AllowOverride All:

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

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

Перезапустите Apache:

sudo systemctl restart apache2

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

Теперь приложение поддерживает файлы .htaccess; нужно только создать такой файл.

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

sudo nano /usr/share/phpmyadmin/.htaccess

Добавьте в него следующий код:

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

Рассмотрим эти строки подробнее:

  • AuthType Basic задает тип авторизации; в данном случае используется аутентификация по паролю с помощью файла паролей .htpasswd.
  • AuthName содержит текст сообщения диалогового окна аутентификации. Чтобы неавторизованные пользователи не могли получить дополнительной информации о закрытом приложении, это сообщение не должно содержать подробностей, а только общие данные (например, «Restricted Files», «Restricted Stuff», «Private Zone» и т.п.).
  • AuthUserFile задает расположение файла паролей htpasswd, который будет использоваться для авторизации. Он должен находиться вне обслуживаемых каталогов. Такой файл будет создан позже.
  • Require valid-user указывает, что доступ к этому ресурсу могут получить только авторизованные пользователи. Именно этот параметр защищает ресурс от неавторизованных пользователей.

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

Создание файла .htpasswd

Теперь в каталоге, указанном в AuthUserFile, нужно создать файл паролей .htpasswd.

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

sudo apt-get install apache2-utils

Файл с паролями нужно создать в каталоге, заданном в директиве AuthUserFile, в данном случае это /etc/phpmyadmin/.htpasswd.

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

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

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

sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

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

https://domain_name_or_IP/phpmyadmin
The server http://111.111.11.111:22 requires a username and password. The server says: Restricted Files.
User Name:
Password:

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

Заключение

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

Tags: , , ,

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