Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код: Skills Начать
Рубрики
Linux Администрация Безопасность

Как установить и защитить phpMyAdmin на Ubuntu (Полное руководство)

phpMyAdmin — один из наиболее широко используемых инструментов с открытым исходным кодом для управления базами данных MySQL и MariaDB через веб-интерфейс. Независимо от того, являетесь ли вы разработчиком, системным администратором или владельцем веб-сайта, он значительно упрощает сложные операции с базами данных — от выполнения SQL запросов до импорта/экспорта данных — без необходимости использования командной строки.

Однако, поскольку phpMyAdmin по умолчанию доступен через публичный URL, оставить его без защиты — серьезный риск. Это подробное руководство проведет вас через установку phpMyAdmin на Ubuntu 20.04/22.04, его настройку с Apache и усиление безопасности против несанкционированного доступа с использованием нескольких уровней защиты.

Предварительные требования

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

  • Сервер с Ubuntu 20.04 или 22.04 (физический или виртуальный)
  • MySQL или MariaDB установлены и активно работают
  • Установлен веб-сервер Apache2
  • Учетная запись пользователя с привилегиями sudo
  • Доменное имя или статический IP-адрес, указывающий на ваш сервер
  • (Рекомендуется) Действительный SSL-сертификат для зашифрованного доступа HTTPS

> Совет: Если у вас еще нет серверной среды, рассмотрите AlexHost VPS Hosting — полностью управляемые или неуправляемые планы Linux VPS с мгновенной подготовкой, доступом root и хранилищем SSD, идеальные для безопасного запуска phpMyAdmin.

Шаг 1 — Обновление системы и индекса пакетов

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

sudo apt update && sudo apt upgrade -y

Шаг 2 — Установка phpMyAdmin

Установите phpMyAdmin из официального репозитория Ubuntu APT:

sudo apt install phpmyadmin -y

Во время установки появится интерактивный мастер конфигурации. Внимательно следуйте этим шагам:

2.1 — Выберите веб-сервер

Вам будет предложено выбрать веб-сервер для автоматической конфигурации:

Please choose the web server that should be automatically configured to run phpMyAdmin.

  [*] apache2
  [ ] lighttpd

Используйте пробел для выбора apache2, затем нажмите Tab для выделения <Ok> и нажмите Enter.

2.2 — Конфигурация базы данных с dbconfig-common

Далее вас спросят, хотите ли вы настроить базу данных для phpMyAdmin с помощью dbconfig-common:

Configure database for phpmyadmin with dbconfig-common?

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

2.3 — Проверка установки

После завершения установки убедитесь, что phpMyAdmin установлен:

dpkg -l phpmyadmin

Вы должны увидеть строку с версией установленного пакета.

Шаг 3 — Настройка Apache для phpMyAdmin

В некоторых конфигурациях Ubuntu файл конфигурации Apache для phpMyAdmin не включается автоматически. Проверьте и включите его вручную.

3.1 — Включение конфигурации phpMyAdmin

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin

3.2 — Проверка файла конфигурации

Откройте файл конфигурации для просмотра его содержимого:

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

Файл должен содержать следующие директивы (или аналогичные):

Alias /phpmyadmin /usr/share/phpmyadmin

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

    <IfModule mod_authz_core.c>
        # Apache 2.4
        <RequireAny>
            Require all granted
        </RequireAny>
    </IfModule>
</Directory>

<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        <RequireAny>
            Require all granted
        </RequireAny>
    </IfModule>
</Directory>

Сохраните и закройте файл с помощью CTRL+X, затем Y, затем Enter.

3.3 — Перезагрузка Apache

Примените изменения конфигурации:

sudo systemctl restart apache2

Проверьте, что Apache работает без ошибок:

sudo systemctl status apache2

Шаг 4 — Защитите phpMyAdmin с помощью HTTP Basic Authentication

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

4.1 — Установите apache2-utils

sudo apt install apache2-utils -y

4.2 — Создайте файл пароля и пользователя

Создайте файл .htpasswd и добавьте первого административного пользователя. Замените your_admin_user на выбранное вами имя пользователя:

sudo mkdir -p /etc/phpmyadmin
sudo htpasswd -c /etc/phpmyadmin/.htpasswd your_admin_user

Вам будет предложено ввести и подтвердить пароль. Чтобы добавить дополнительных пользователей позже (без флага -c, который перезапишет файл):

sudo htpasswd /etc/phpmyadmin/.htpasswd another_user

4.3 — Обновите конфигурацию Apache для phpMyAdmin

Отредактируйте файл конфигурации phpMyAdmin, чтобы обеспечить аутентификацию:

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

Найдите блок <Directory /usr/share/phpmyadmin> и добавьте следующие строки внутри него:

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

    # HTTP Basic Authentication
    AuthType Basic
    AuthName "Restricted Access — Authorized Personnel Only"
    AuthUserFile /etc/phpmyadmin/.htpasswd
    Require valid-user

    <IfModule mod_authz_core.c>
        <RequireAny>
            Require valid-user
        </RequireAny>
    </IfModule>
</Directory>

Сохраните и закройте файл.

4.4 — Перезагрузите Apache

sudo systemctl restart apache2

Теперь переход на /phpmyadmin сначала потребует ввода учетных данных HTTP-аутентификации перед отображением страницы входа phpMyAdmin.

Шаг 5 — Ограничение доступа по IP-адресу (опционально, но рекомендуется)

Для еще более надежной защиты ограничьте доступ к phpMyAdmin только определенными доверенными IP-адресами. Это особенно полезно, если вы всегда получаете доступ к серверу с фиксированного IP-адреса (например, из корпоративной сети или VPN).

Отредактируйте конфигурацию phpMyAdmin Apache:

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

Измените блок <Directory> для включения ограничений на основе IP:

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

    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /etc/phpmyadmin/.htpasswd

    <RequireAll>
        Require valid-user
        Require ip 203.0.113.50
        # Add more trusted IPs below:
        # Require ip 198.51.100.0/24
    </RequireAll>
</Directory>

Замените 203.0.113.50 на ваш фактический доверенный IP-адрес или подсеть. Сохраните файл и перезагрузите Apache:

sudo systemctl restart apache2

> Примечание: Если ваш IP-адрес часто меняется, рассмотрите возможность использования VPN со статическим IP-адресом или полагайтесь только на HTTP Basic Authentication в сочетании с SSL.

Шаг 6 — Включите SSL для шифрования трафика

Отправка учетных данных базы данных по простому HTTP является критической угрозой безопасности. Вы всегда должны получать доступ к phpMyAdmin через HTTPS. Есть два основных подхода:

Вариант A — Используйте бесплатный SSL-сертификат Let’s Encrypt

Если у вас есть доменное имя, указывающее на ваш сервер, установите Certbot:

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com

Certbot автоматически настроит Apache для перенаправления HTTP на HTTPS и установит бесплатный автоматически обновляемый сертификат.

Вариант B — Используйте коммерческий SSL-сертификат

Для производственных сред, обрабатывающих конфиденциальные данные, коммерчески выданный SSL-сертификат обеспечивает более надежные сигналы доверия и защиту гарантией. Вы можете получить доверенные SSL-сертификаты непосредственно от AlexHost SSL Certificates, с опциями от сертификатов Domain Validation (DV) до Extended Validation (EV).

После установки SSL-сертификата убедитесь, что ваш URL phpMyAdmin использует https://:

https://yourdomain.com/phpmyadmin

Шаг 7 — Доступ к phpMyAdmin

После установки и применения мер безопасности откройте браузер и перейдите по адресу:

https://your_server_ip_or_domain/phpmyadmin

Вы столкнетесь с двумя запросами аутентификации по очереди:

  1. Запрос HTTP Basic Authentication — Введите имя пользователя и пароль, которые вы создали с помощью htpasswd
  2. Страница входа phpMyAdmin — Введите имя пользователя MySQL/MariaDB (например, root) и его пароль

После успешного входа у вас будет полный доступ к вашим базам данных MySQL через графический интерфейс phpMyAdmin.

Устранение распространённых проблем

phpMyAdmin возвращает ошибку 404 Not Found

Конфигурация Apache может быть не связана или не включена. Выполните:

sudo a2enconf phpmyadmin
sudo systemctl reload apache2

Также проверьте наличие symlink:

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

Ошибка “Cannot Connect to MySQL Server”

Проверьте, что MySQL/MariaDB запущен:

sudo systemctl status mysql
# or for MariaDB:
sudo systemctl status mariadb

Если он остановлен, запустите его:

sudo systemctl start mysql

HTTP 500 Internal Server Error

Это часто указывает на отсутствие модуля PHP. Установите необходимые расширения PHP:

sudo apt install php-mbstring php-zip php-gd php-json php-curl -y
sudo systemctl restart apache2

Пустая страница после входа

Очистите кэш браузера или проверьте журналы ошибок Apache для получения подробной информации:

sudo tail -f /var/log/apache2/error.log

Сводка лучших практик безопасности

Перед запуском в производство проверьте этот контрольный список безопасности:

Мера безопасностиСтатус
HTTP Basic Authentication включена
SSL/HTTPS настроен
Применено ограничение IP (если применимо)
Удаленный вход MySQL root отключен
URL phpMyAdmin изменен с значения по умолчанию /phpmyadminРекомендуется
Запланированы регулярные обновления системы
Firewall (UFW) настроенРекомендуется

Переименуйте URL phpMyAdmin (дополнительный шаг усиления безопасности)

Изменение пути URL по умолчанию /phpmyadmin на что-то менее предсказуемое значительно снижает атаки автоматизированных ботов. Отредактируйте конфигурацию Apache:

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

Измените:

Alias /phpmyadmin /usr/share/phpmyadmin

На что-то менее очевидное:

Alias /db-manager-2024 /usr/share/phpmyadmin

Перезагрузите Apache и обновите ваши закладки соответственно.

Заключение

Установка phpMyAdmin на Ubuntu — это простой процесс, но правильная защита является обязательной. Комбинируя HTTP Basic Authentication, ограничения доступа на основе IP, SSL-шифрование и пользовательский URL-alias, вы создаете несколько перекрывающихся уровней защиты, которые защищают ваши базы данных от несанкционированного доступа и автоматизированных атак.

Подведем итоги того, что мы рассмотрели:

  • ✅ Установлена phpMyAdmin через APT на Ubuntu 20.04/22.04
  • ✅ Настроен Apache для правильной работы phpMyAdmin
  • ✅ Добавлена HTTP Basic Authentication в качестве второго уровня безопасности
  • ✅ Ограничен доступ по доверенным IP-адресам
  • ✅ Включено SSL/HTTPS для шифрования всего трафика
  • ✅ Применено дополнительное усиление безопасности путем переименования URL по умолчанию

Безопасная конфигурация phpMyAdmin настолько же надежна, насколько надежен сервер, на котором она работает. Для надежного и высокопроизводительного фундамента изучите AlexHost Dedicated Servers для полного контроля над оборудованием или AlexHost Shared Web Hosting для легких проектов, требующих управляемой среды. Если вам нужна панель управления для управления вашим сервером наряду с phpMyAdmin, ознакомьтесь с AlexHost VPS с cPanel для комплексного управления.

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