Заощадьте 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?

Виберіть Так. Потім вам буде запропоновано ввести пароль 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).

Відредагуйте конфігурацію Apache для phpMyAdmin:

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Рекомендується
Регулярні оновлення системи заплановані
Брандмауер (UFW) налаштованоРекомендується

Перейменуйте URL phpMyAdmin (додатковий крок посилення)

Зміна типової /phpmyadmin шляху URL на щось менш передбачуване значно зменшує атаки автоматизованих ботів. Відредагуйте конфігурацію 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. Кілька хвилин активного захисту сьогодні можуть запобігти катастрофічній витоку даних завтра.