Как установить и защитить phpMyAdmin в Ubuntu 16.04

Вступление

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

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

Предпосылки

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

Сначала предположим, что вы используете пользователя без полномочий root с правами sudo, как описано в шагах 1-4 в https://digitalocean.com/community/articles/initial-server-setup-with-ubuntu- 16-04 [начальная настройка сервера Ubuntu 16.04].

Мы также предполагаем, что вы завершили установку LAMP (Linux, Apache, MySQL и PHP) на свой сервер Ubuntu 16.04. Если это еще не завершено, вы можете следовать этому руководству на https://digitalocean.com/community/articles/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04 установка стека LAMP в Ubuntu 16.04.

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

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

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

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

По этим причинам, а также потому, что это широко развернутое PHP-приложение, которое часто предназначено для атак, вы никогда не должны запускать phpMyAdmin в удаленных системах через обычное HTTP-соединение. Если у вас нет существующего домена, настроенного с использованием сертификата SSL / TLS, вы можете следовать этому руководству на https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s- encrypt-on-ubuntu-16-04 [защита Apache с помощью Let’s Encrypt в Ubuntu 16.04].

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

Шаг первый - установить phpMyAdmin

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

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

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

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

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

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

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

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

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

Единственное, что нам нужно сделать, это явно включить PHP + mcrypt + и + mbstring +, что мы можем сделать, набрав:

sudo phpenmod mcrypt
sudo phpenmod mbstring

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

sudo systemctl restart apache2

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

https:///phpmyadmin

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

Теперь вы можете войти в интерфейс, используя имя пользователя + root + и пароль администратора, который вы установили во время установки MySQL.

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

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

Шаг второй - Защитите свой экземпляр phpMyAdmin

Мы смогли довольно легко настроить и запустить наш интерфейс phpMyAdmin. Однако мы еще не закончили. Из-за своей повсеместности phpMyAdmin является популярной целью для злоумышленников. Мы должны принять дополнительные меры для предотвращения несанкционированного доступа.

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

Настройте 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

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

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

sudo nano /usr/share/phpmyadmin/.htaccess

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

/usr/share/phpmyadmin/.htaccess

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

Давайте рассмотрим, что означает каждая из этих строк:

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

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

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

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

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

Создайте файл .htpasswd для аутентификации

Расположение, которое мы выбрали для вашего файла паролей, было «+ / 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, чтобы ввести другие учетные данные. Это добавит дополнительный уровень безопасности, так как phpMyAdmin страдал от уязвимостей в прошлом.

Заключение

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

Related