Как установить и защитить phpMyAdmin в Debian 9

Вступление

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

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

Предпосылки

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

Во-первых, мы предполагаем, что на вашем сервере есть пользователь не-root * с правами + sudo +, а также брандмауэр, настроенный с помощью + ufw +, как описано в https://www.digitalocean.com/. community / tutorials / initial-server-setup-with-debian-9 [руководство по первоначальной настройке сервера для Debian 9].

Мы также предполагаем, что вы завершили установку LAMP (Linux, Apache, MariaDB и PHP) на вашем сервере Debian 9. Если вы этого еще не сделали, следуйте нашему руководству на installinstall LAMP стек на Debian 9, чтобы установить это.

Наконец, при использовании программного обеспечения, такого как 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-9 [защита Apache с помощью Let’s Encrypt в Debian 9]. Для этого вам потребуется register имя домена, https: // www .digitalocean.com / community / tutorials / anstruction-to-digitalocean-dns [создать записи DNS для вашего сервера] и https://www.digitalocean.com/community/tutorials/how-to-install-the- apache-web-server-on-debian-9 # step-5-% E2% 80% 94-setup-up-virtual-hosts- (рекомендуется) [настроить виртуальный хост Apache].

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

Шаг 1 - Установка phpMyAdmin

Для начала мы установим phpMyAdmin из репозиториев Debian по умолчанию.

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

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

Это задаст вам несколько вопросов, чтобы правильно настроить установку.

  • Для выбора сервера выберите + apache2 +

  • Выберите + Yes +, когда вас спросят, использовать ли + dbconfig-common + для настройки базы данных.

  • Затем вас попросят выбрать и подтвердить пароль приложения MySQL для phpMyAdmin.

Процесс установки добавляет файл конфигурации phpMyAdmin Apache в каталог + / etc / apache2 / conf-enabled / +, где он автоматически читается. Единственное, что вам нужно сделать, - это явно включить расширение PHP + mbstring +, которое используется для управления строками не-ASCII и преобразования строк в различные кодировки. Сделайте это, набрав:

sudo phpenmod mbstring

После этого перезапустите Apache, чтобы ваши изменения были распознаны:

sudo systemctl restart apache2

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

Шаг 2 - Настройка аутентификации пользователя и привилегий

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

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

Если вы следовали обязательному руководству на https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mariadb-php-lamp-stack-debian9#step-2-%E2%80% 94-Installation-mariadb [установка стека LAMP] и созданная учетная запись пользователя MariaDB, как описано в шаге 2, вы можете просто войти в phpMyAdmin под этой учетной записью, используя пароль, который вы создали при настройке, перейдя по этой ссылке:

https:///phpmyadmin

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

Начните с открытия оболочки MariaDB:

sudo mariadb

Оттуда создайте нового пользователя и дайте ему надежный пароль:

CREATE USER ''@'localhost' IDENTIFIED BY '';

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

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

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

exit

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

https:///phpmyadmin

изображение: https: //assets.digitalocean.com/articles/phpmyadmin_1804/phpmyadmin_sammy_login_small.png [экран входа в систему phpMyAdmin]

Войдите в интерфейс с именем пользователя и паролем, которые вы настроили.

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

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

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

Шаг 3. Защита вашего экземпляра 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

   . . .

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

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

sudo systemctl restart apache2

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

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

sudo nano /usr/share/phpmyadmin/.htaccess

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

/usr/share/phpmyadmin/.htaccess

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

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

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

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

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

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

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

sudo htpasswd -c /etc/phpmyadmin/.htpasswd

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

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

sudo htpasswd /etc/phpmyadmin/.htpasswd

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

https:///phpmyadmin

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

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

Заключение

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

Related