Установка и защита phpMyAdmin в Ubuntu 16.04
LAMP Stack, mySQL, Ubuntu | Комментировать запись
Для корректной работы многих веб-проектов нужны системы управления базами данных (СУБД), например, 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: .htaccess, MySQL, phpMyAdmin, Ubuntu 16.04