Как установить phpMyAdmin из исходного кода на Debian 10

Вступление

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

phpMyAdmin был создан для того, чтобы пользователи могли взаимодействовать с MariaDB через веб-интерфейс. В этом руководстве мы обсудим, как установить и защитить phpMyAdmin, чтобы вы могли безопасно использовать его для управления базами данных в системе Debian 10.

Предпосылки

Прежде чем начать работу с этим руководством, вам потребуется следующее:

Наконец, при использовании программного обеспечения, такого как phpMyAdmin, существуют важные соображения безопасности, поскольку оно:

  • Общается напрямую с вашей установкой MariaDB

  • Обрабатывает аутентификацию с использованием учетных данных MariaDB

  • Выполняет и возвращает результаты для произвольных запросов SQL

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

Если у вас нет существующего домена, настроенного с сертификатом SSL / TLS, вы можете следовать этому руководству на https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s- encrypt-on-debian-10 [защищающий Apache с помощью Let’s Encrypt на Debian 10], чтобы установить его. Для этого вам потребуется register имя домена, https: // www .digitalocean.com / community / tutorials / anstruction-to-digitalocean-dns [создать записи DNS для вашего сервера] и https://www.digitalocean.com/community/tutorials/how-to-install-linux- apache-mariadb-php-lamp-stack-on-debian-10 # step-4-% E2% 80% 94-создание-виртуального хоста для вашего сайта [настроить виртуальный хост Apache].

Когда вы закончите с этими шагами, вы готовы начать работу с этим руководством.

Шаг 1 - Установка phpMyAdmin и рекомендуемых пакетов

Перед установкой и настройкой phpMyAdmin в official документация рекомендует установить на сервер несколько расширений PHP, чтобы включить определенные функции и повысить производительность.

Если вы выполнили обязательное условие Lacher stack stack tutorial, некоторые из эти модули будут установлены вместе с пакетом + php +. Тем не менее, рекомендуется также установить эти пакеты:

  • + php-mbstring +: расширение PHP, используемое для управления строками не-ASCII и преобразования строк в различные кодировки

  • + php-zip +: модуль PHP, который поддерживает загрузку файлов + .zip + в phpMyAdmin

  • + php-gd +: еще один модуль PHP, включающий поддержку GD Graphics Library

Сначала обновите индекс пакета вашего сервера, если вы еще этого не сделали:

sudo apt update

Затем используйте + apt +, чтобы вытащить файлы и установить их в вашей системе:

sudo apt install php-mbstring php-zip php-gd

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

Для этого перейдите на страницу phpMyAdmin Downloads, прокрутите вниз до таблицы со ссылками на скачивание для последней стабильной версии и скопируйте ссылку на скачивание, заканчивающуюся `+ tar.gz + `. Эта ссылка указывает на архивный файл, известный как tarball, который при извлечении создаст несколько файлов в вашей системе. На момент написания этой статьи последняя версия - версия 4.9.0.1.

Замените ссылку в следующей команде + wget + ссылкой, которую вы только что скопировали, затем нажмите + ENTER +. Это запустит команду и загрузит архив на ваш сервер:

wget https://files.phpmyadmin.net/phpMyAdmin//phpMyAdmin--.tar.gz

Затем распакуйте архив:

tar xvf phpMyAdmin--.tar.gz

Это создаст ряд новых файлов и каталогов на вашем сервере в родительском каталоге с именем + phpMyAdmin - +.

Затем выполните следующую команду. Это переместит каталог + phpMyAdmin - + и все его подкаталоги в каталог + / usr / share / +, куда phpMyAdmin ожидает найти свои файлы конфигурации по умолчанию. Он также переименует каталог на место, чтобы просто + phpmyadmin:

sudo mv phpMyAdmin--/ /usr/share/phpmyadmin

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

Шаг 2 - Настройка phpMyAdmin вручную

При установке phpMyAdmin с менеджером пакетов, как это может быть в среде Ubuntu, phpMyAdmin по умолчанию переключается в режим «Zero Configuration», который автоматически выполняет несколько действий по настройке программы. Поскольку мы установили его из источника в этом руководстве, нам нужно будет выполнить эти шаги вручную.

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

sudo mkdir -p /var/lib/phpmyadmin/tmp

Установите * www-data * - профиль пользователя Linux, который веб-серверы, такие как Apache, используют по умолчанию для нормальной работы в системах Ubuntu и Debian - в качестве владельца этого каталога:

sudo chown -R www-data:www-data /var/lib/phpmyadmin

Файлы, которые вы извлекли ранее, включают образец файла конфигурации, который вы можете использовать в качестве базового файла конфигурации. Сделайте копию этого файла, сохраняя его в каталоге + / usr / share / phpmyadmin +, и переименуйте его в + config.inc.php +:

sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

Откройте этот файл с помощью предпочитаемого вами текстового редактора. Здесь мы будем использовать + nano +:

sudo nano /usr/share/phpmyadmin/config.inc.php

phpMyAdmin по умолчанию использует метод аутентификации + cookie +, который позволяет вам войти в phpMyAdmin как любой действительный пользователь MariaDB с помощью cookies. В этом методе пароль пользователя MariaDB хранится и шифруется с помощью алгоритма Advanced Encryption Standard (AES) во временном файле cookie.

Исторически phpMyAdmin вместо этого использовал для этой цели Blowfish cipher, и это все еще отражается в его файле конфигурации. Прокрутите вниз до строки, которая начинается с + $ cfg ['blowfish_secret'] +. Это будет выглядеть так:

/usr/share/phpmyadmin/config.inc.php

. . .
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
. . .

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

/usr/share/phpmyadmin/config.inc.php

. . .
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
. . .

Далее, прокрутите вниз до комментария, читающего + / * Пользователь, используемый для манипулирования с хранилищем * / +. В этом разделе содержатся некоторые директивы, определяющие пользователя базы данных MariaDB с именем * pma *, который выполняет определенные административные задачи в phpMyAdmin. https://docs. многопользовательские сценарии.

Раскомментируйте директивы + controluser + и + controlpass +, удалив предыдущие косые черты. Затем обновите директиву + controlpass +, чтобы указать безопасный пароль по вашему выбору. Если вы этого не сделаете, пароль по умолчанию останется на месте, и неизвестные пользователи могут легко получить доступ к вашей базе данных через интерфейс phpMyAdmin.

После внесения этих изменений этот раздел файла будет выглядеть следующим образом:

/usr/share/phpmyadmin/config.inc.php

. . .
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = '';
. . .

Ниже этого раздела вы найдете другой раздел, которому предшествует комментарий, читающий + / * База данных хранилища и таблицы * / +. Этот раздел включает ряд директив, определяющих phpMyAdmin хранилище конфигурации, базу данных и несколько таблиц, используемых административной * pma * пользователь базы данных. Эти таблицы включают ряд функций в phpMyAdmin, в том числе закладки, комментарии, генерацию PDF и многое другое.

Раскомментируйте каждую строку в этом разделе, удалив косую черту в начале каждой строки, чтобы она выглядела следующим образом:

/usr/share/phpmyadmin/config.inc.php

. . .
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
. . .

Эти таблицы еще не существуют, но мы их скоро создадим.

Наконец, прокрутите вниз до нижней части файла и добавьте следующую строку. Это настроит phpMyAdmin для использования каталога + / var / lib / phpmyadmin / tmp +, который вы создали ранее, в качестве его временного каталога. phpMyAdmin будет использовать этот временный каталог в качестве кэша шаблонов, который позволяет быстрее загружать страницы:

/usr/share/phpmyadmin/config.inc.php

. . .

Сохраните и закройте файл после добавления этой строки. Если вы использовали + nano +, вы можете сделать это, нажав + CTRL + X +, + Y +, затем + ENTER +.

Затем вам нужно создать базу данных и таблицы хранения phpMyAdmin. Когда вы установили phpMyAdmin на предыдущем шаге, он получил файл с именем + create_tables.sql +. Этот файл SQL содержит все команды, необходимые для создания базы данных хранилища конфигурации, и таблицы, которые phpMyAdmin должен правильно функционировать.

Выполните следующую команду, чтобы использовать файл + create_tables.sql + для создания базы данных и таблиц хранилища конфигурации:

sudo mariadb < /usr/share/phpmyadmin/sql/create_tables.sql

После этого вам нужно создать административного пользователя * pma *. Откройте подсказку MariaDB:

sudo mariadb

В командной строке выполните следующую команду, чтобы создать пользователя * pma * и предоставить ему соответствующие разрешения. Обязательно измените ++, чтобы он соответствовал паролю, который вы определили в файле + config.inc.php +:

GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY '';

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

GRANT ALL PRIVILEGES ON *.* TO ''@'localhost' IDENTIFIED BY '' WITH GRANT OPTION;

После этого выйдите из оболочки MariaDB:

exit

phpMyAdmin теперь полностью установлен и настроен на вашем сервере. Однако ваш сервер Apache еще не знает, как обслуживать приложение. Чтобы решить эту проблему, мы создадим файл конфигурации Apache для него.

Шаг 3 - Настройка Apache для обслуживания phpMyAdmin

При установке phpMyAdmin из репозиториев по умолчанию процесс установки автоматически создает файл конфигурации Apache и помещает его в каталог + / etc / apache2 / conf-enabled / +. Поскольку мы установили phpMyAdmin из исходного кода, нам нужно будет вручную создать и включить этот файл.

Создайте файл с именем + phpmyadmin.conf + в каталоге + / etc / apache2 / conf-available / +:

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

Затем добавьте следующее содержимое в файл

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

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
   Options SymLinksIfOwnerMatch
   DirectoryIndex index.php

   <IfModule mod_php5.c>
       <IfModule mod_mime.c>
           AddType application/x-httpd-php .php
       </IfModule>
       <FilesMatch ".+\.php$">
           SetHandler application/x-httpd-php
       </FilesMatch>

       php_value include_path .
       php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
       php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
       php_admin_value mbstring.func_overload 0
   </IfModule>
   <IfModule mod_php.c>
       <IfModule mod_mime.c>
           AddType application/x-httpd-php .php
       </IfModule>
       <FilesMatch ".+\.php$">
           SetHandler application/x-httpd-php
       </FilesMatch>

       php_value include_path .
       php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
       php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
       php_admin_value mbstring.func_overload 0
   </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
   <IfModule mod_authz_core.c>
       <IfModule mod_authn_file.c>
           AuthType Basic
           AuthName "phpMyAdmin Setup"
           AuthUserFile /etc/phpmyadmin/htpasswd.setup
       </IfModule>
       Require valid-user
   </IfModule>
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
   Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
   Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
   Require all denied
</Directory>

Это стандартный файл конфигурации phpMyAdmin Apache, который можно найти в установках Ubuntu, хотя он будет достаточен и для установки Debian.

Сохраните и закройте файл, затем включите его, набрав:

sudo a2enconf phpmyadmin.conf

Затем перезагрузите сервис + apache2 +, чтобы изменения вступили в силу:

sudo systemctl reload apache2

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

https:///phpmyadmin

Вы увидите следующий экран входа в систему:

изображение: https: //assets.digitalocean.com/articles/phpmyadmin_deb10/phpmyadmin_login_blank.png [экран входа phpMyAdmin]

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

изображение: https: //assets.digitalocean.com/articles/phpmyadmin_deb10/phpmyadmin_ui_deb10.png [пользовательский интерфейс phpMyAdmin]

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

Шаг 4. Защита вашего экземпляра phpMyAdmin

Из-за своей повсеместности phpMyAdmin является популярной целью для злоумышленников, и вы должны быть особенно осторожны, чтобы предотвратить несанкционированный доступ. Один из самых простых способов сделать это - разместить шлюз перед всем приложением с помощью встроенных в Apache функций аутентификации и авторизации + .htaccess.

Для этого вы должны сначала разрешить использование переопределений файлов + .htaccess +, отредактировав файл конфигурации Apache.

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

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

Добавьте директиву + AllowOverride All + в секции + <Directory / usr / share / phpmyadmin> + файла конфигурации, например так:

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

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


   <IfModule mod_php5.c>
   . . .

Когда вы добавите эту строку, сохраните и закройте файл.

Чтобы применить сделанные изменения, перезапустите Apache:

sudo systemctl restart apache2

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

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

sudo nano /usr/share/phpmyadmin/.htaccess

В этом файле введите следующее содержимое:

/usr/share/phpmyadmin/.htaccess

Вот что означает каждая из этих строк:

  • + AuthType Basic +: в этой строке указывается тип аутентификации, который вы реализуете. Этот тип будет реализовывать аутентификацию по паролю с использованием файла пароля.

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

  • + AuthUserFile +: устанавливает местоположение файла пароля, который будет использоваться для аутентификации. Это должно быть за пределами каталогов, которые обслуживаются. Мы создадим этот файл в ближайшее время.

  • + Require valid-user +: указывает, что только аутентифицированным пользователям должен быть предоставлен доступ к этому ресурсу. Это то, что на самом деле мешает неавторизованным пользователям войти.

Когда вы закончите, сохраните и закройте файл.

Местоположение, которое вы выбрали для своего файла паролей, было + / usr / share / phpmyadmin / .htpasswd +. Теперь вы можете создать этот файл и передать его первоначальному пользователю с помощью утилиты + htpasswd +:

sudo htpasswd -c /usr/share/phpmyadmin/.htpasswd

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

Если вы хотите ввести дополнительного пользователя, вам нужно сделать это * без * флага + -c +, например:

sudo htpasswd /etc/phpmyadmin/.htpasswd

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

https:///phpmyadmin

изображение: https: //assets.digitalocean.com/articles/phpmyadmin_deb10/pma_deb10_apache_auth.png [пароль phpMyAdmin apache]

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

Заключение

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

Related