Установка и защита phpMyAdmin в Debian 9
Debian, MariaDB, mySQL | Комментировать запись
Для корректной работы многих веб-проектов нужны системы управления базами данных (СУБД), например, MySQL. Однако взаимодействовать с системой исключительно с помощью командной строки MySQL не всегда удобно.
Благодаря phpMyAdmin пользователи могут управлять системой MySQL через веб-интерфейс. Данный мануал содержит пошаговые инструкции по установке и защите веб-интерфейса phpMyAdmin в Debian 9.
Требования
- Сервер Debian 9,настроенный по этому мануалу (с пользователем sudo и настроенным ufw).
- Стек LAMP (его можно установить с помощью этого мануала).
- Сертификат Let’s Encrypt для Apache 9. Его можно бесплатно получить с помощью мануала Создание сертификата Let’s Encrypt для Apache в 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: Debian, Debian 9, MariaDB, MySQL, phpMyAdmin