Установка и защита phpMyAdmin в Debian 9

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

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

Требования

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

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

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

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

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

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

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

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

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

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

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

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

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

sudo phpenmod mbstring

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

sudo systemctl restart apache2

phpMyAdmin установлен. Но прежде чем войти и начать работу с базами данных, вам нужно проверить привилегии пользователей.

2: Настройка аутентификации и привилегий

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

В новых установках в Debian root-пользователь MariaDB по умолчанию поддерживает аутентификацию с помощью плагина unix_socket, а не с помощью пароля. Это позволяет во многих случаях обеспечить большую безопасность и удобство, но это также может усложнить работу, например, когда вам необходимо с помощью этого пользователя дать внешней программе (как phpMyAdmin) права администратора. Поскольку сервер использует учетную запись root для таких задач, как ротация логов, запуск и остановка сервера и т.п., лучше не менять ее метод аутентификации. Поскольку phpMyAdmin требует от пользователей парольной аутентификации, вам необходимо создать новую учетную запись MariaDB для доступа к интерфейсу.

Если вы следовали мануалу по установке стека LAMP и создали учетную запись пользователя MariaDB, как описано в разделе 2, вы можете просто войти в phpMyAdmin под этой учетной записью, используя пароль, который вы создали при настройке.

https://your_domain_or_IP/phpmyadmin

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

sudo mariadb

Примечание: Если у вас включена парольная аутентификация (скорее всего, так и есть, если вы уже создали новую учетную запись для MariaDB), вам потребуется использовать другую команду для доступа к оболочке MariaDB. Следующая команда запустит клиент MariaDB с правами обычного пользователя, и вы получите права администратора только в базе данных после аутентификации:

mariadb -u user -p

Создайте нового пользователя и выберите для него надежный пароль:

CREATE USER '8host'@'localhost' IDENTIFIED BY 'password';

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

GRANT ALL PRIVILEGES ON *.* TO '8host'@'localhost' WITH GRANT OPTION;

Закройте оболочку MariaDB:

exit

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

https://your_domain_or_IP/phpmyadmin

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

3: Защита phpMyAdmin

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

Один из самых простых способ защиты phpMyAdmin – размещение шлюза безопасности. Это делается при помощи специальных файлов Apache под названием .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; нужно только создать такой файл.

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

sudo nano /usr/share/phpmyadmin/.htaccess

Вставьте в файл:

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

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

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

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

Файл с паролями нужно создать в каталоге, заданном в директиве 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: , , , ,