15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți
01.11.2024

Cum să instalezi și să securizezi phpMyAdmin pe Ubuntu (Ghid complet)

phpMyAdmin este unul dintre cele mai utilizate instrumente open-source pentru gestionarea bazelor de date MySQL și MariaDB printr-o interfață grafică bazată pe browser. Indiferent dacă ești dezvoltator, administrator de sisteme sau proprietar de site web, aceasta simplifică dramatic operațiunile complexe cu baze de date — de la executarea interogărilor SQL la importul/exportul de date — fără a necesita cunoștințe de linie de comandă.

Cu toate acestea, deoarece phpMyAdmin este accesibil printr-un URL public implicit, lăsarea sa nesecurizată este un risc serios. Acest ghid cuprinzător te ghidează prin instalarea phpMyAdmin pe Ubuntu 20.04/22.04, configurarea acestuia cu Apache și consolidarea acestuia împotriva accesului neautorizat folosind mai multe straturi de securitate.

Cuprins

  1. Cerințe preliminare
  2. Pasul 1 — Actualizarea sistemului și indexului pachetelor
  3. Pasul 2 — Instalarea phpMyAdmin
  4. Pasul 3 — Configurarea Apache pentru phpMyAdmin
  5. Pasul 4 — Securizarea phpMyAdmin cu autentificare HTTP de bază
  6. Pasul 5 — Restricționarea accesului după adresa IP (Opțional, dar recomandat)
  7. Pasul 6 — Activarea SSL pentru criptarea traficului
  8. Pasul 7 — Accesarea phpMyAdmin
  9. Depanarea problemelor comune
  10. Concluzie

Cerințe preliminare {#prerequisites}

Înainte de a începe, asigură-te că sunt îndeplinite următoarele cerințe:

  • Un server care rulează Ubuntu 20.04 sau 22.04 (fizic sau virtual)
  • MySQL sau MariaDB instalat și activ în funcțiune
  • Server web Apache2 instalat
  • Un cont de utilizator cu privilegii sudo
  • Un nume de domeniu sau adresă IP statică care indică serverul tău
  • (Recomandat) Un certificat SSL valid pentru acces HTTPS criptat

> Sfat: Dacă nu ai încă un mediu de server, ia în considerare AlexHost VPS Hosting — planuri VPS Linux complet gestionate sau negestionate cu aprovizionare instantanee, acces root și stocare SSD, ideale pentru a rula phpMyAdmin în siguranță.

Pasul 1 — Actualizarea sistemului și indexului pachetelor {#step-1}

Începe întotdeauna prin reîmprospătarea listelor de pachete și aplicarea oricăror actualizări de sistem în așteptare. Aceasta asigură că instalezi cea mai recentă versiune disponibilă a phpMyAdmin și evită conflictele de dependență.

sudo apt update && sudo apt upgrade -y

Pasul 2 — Instalarea phpMyAdmin {#step-2}

Instalează phpMyAdmin folosind depozitul oficial Ubuntu APT:

sudo apt install phpmyadmin -y

În timpul instalării, va apărea un asistent de configurare interactiv. Urmează acești pași cu atenție:

2.1 — Alegerea unui server web

Ți se va cere să selectezi un server web pentru a configura automat:

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

  [*] apache2
  [ ] lighttpd

Folosește bara de spațiu pentru a selecta apache2, apoi apasă Tab pentru a evidenția <Ok> și apasă Enter.

2.2 — Configurarea bazei de date cu dbconfig-common

În continuare, ți se va cere dacă dorești să configurezi o bază de date pentru phpMyAdmin folosind dbconfig-common:

Configure database for phpmyadmin with dbconfig-common?

Selectează Da. Ți se va cere apoi să introduci o parolă de aplicație MySQL pentru utilizatorul intern al bazei de date phpMyAdmin. Fie introduci o parolă puternică, fie o lași goală pentru a fi generată automat.

2.3 — Verificarea instalării

După ce instalarea se completează, confirmă că phpMyAdmin este instalat:

dpkg -l phpmyadmin

Ar trebui să vezi o linie care arată versiunea pachetului instalat.

Pasul 3 — Configurarea Apache pentru phpMyAdmin {#step-3}

În unele configurații Ubuntu, fișierul de configurare Apache phpMyAdmin nu este activat automat. Verifică și activează-l manual.

3.1 — Activarea configurării phpMyAdmin

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

3.2 — Verificarea fișierului de configurare

Deschide fișierul de configurare pentru a-i revizui conținutul:

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

Fișierul ar trebui să conțină următoarele directive (sau similare):

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>

Salvează și închide fișierul cu CTRL+X, apoi Y, apoi Enter.

3.3 — Repornirea Apache

Aplică modificările de configurare:

sudo systemctl restart apache2

Verifică că Apache rulează fără erori:

sudo systemctl status apache2

Pasul 4 — Securizarea phpMyAdmin cu autentificare HTTP de bază {#step-4}

În mod implicit, oricine cunoaște adresa IP a serverului tău poate accesa pagina de conectare phpMyAdmin. Adăugarea unui strat de autentificare HTTP de bază creează o a doua poartă de parolă înainte ca utilizatorii să vadă chiar și formularul de conectare phpMyAdmin.

4.1 — Instalarea apache2-utils

sudo apt install apache2-utils -y

4.2 — Crearea fișierului de parolă și a utilizatorului

Creează un fișier .htpasswd și adaugă primul utilizator administrativ. Înlocuiește your_admin_user cu numele de utilizator ales:

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

Ți se va cere să introduci și să confirmi o parolă. Pentru a adăuga utilizatori suplimentari mai târziu (fără steagul -c, care ar suprascrie fișierul):

sudo htpasswd /etc/phpmyadmin/.htpasswd another_user

4.3 — Actualizarea configurării Apache phpMyAdmin

Editează fișierul de configurare phpMyAdmin pentru a impune autentificarea:

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

Localizează blocul <Directory /usr/share/phpmyadmin> și adaugă următoarele linii în interiorul acestuia:

<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>

Salvează și închide fișierul.

4.4 — Repornirea Apache

sudo systemctl restart apache2

Acum, navigarea la /phpmyadmin va solicita mai întâi acreditările de autentificare HTTP înainte de a afișa pagina de conectare phpMyAdmin.

Pasul 5 — Restricționarea accesului după adresa IP (Opțional, dar recomandat) {#step-5}

Pentru o protecție și mai puternică, restricționează accesul phpMyAdmin doar la anumite adrese IP de încredere. Aceasta este deosebit de utilă dacă accesezi întotdeauna serverul tău de la o IP fixă (cum ar fi o rețea de birou sau o VPN).

Editează configurarea Apache phpMyAdmin:

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

Modifică blocul <Directory> pentru a include restricții bazate pe 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>

Înlocuiește 203.0.113.50 cu adresa IP sau subnet-ul tău real de încredere. Salvează fișierul și repornește Apache:

sudo systemctl restart apache2

> Notă: Dacă adresa IP se schimbă frecvent, ia în considerare utilizarea unei VPN cu IP static, sau bazează-te doar pe autentificarea HTTP de bază combinată cu SSL.

Pasul 6 — Activarea SSL pentru criptarea traficului {#step-6}

Trimiterea acreditărilor bazei de date peste HTTP simplu este un risc critic de securitate. Ar trebui să accesezi întotdeauna phpMyAdmin peste HTTPS. Există două abordări principale:

Opțiunea A — Utilizarea unui certificat SSL Let’s Encrypt (Gratuit)

Dacă ai un nume de domeniu care indică serverul tău, instalează Certbot:

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

Certbot va configura automat Apache pentru a redirecționa HTTP la HTTPS și va instala un certificat gratuit, cu reînnoire automată.

Opțiunea B — Utilizarea unui certificat SSL comercial

Pentru mediile de producție care gestionează date sensibile, un certificat SSL emis comercial oferă semnale de încredere mai puternice și protecție prin garanție. Puteți obține certificatele SSL de încredere direct de la AlexHost SSL Certificates, cu opțiuni variind de la Validare de domeniu (DV) la certificatele cu Validare extinsă (EV).

După instalarea certificatului SSL, asigură-te că URL-ul phpMyAdmin folosește https://:

https://yourdomain.com/phpmyadmin

Pasul 7 — Accesarea phpMyAdmin {#step-7}

Cu instalarea și măsurile de securitate în vigoare, deschide browserul și navighează la:

https://your_server_ip_or_domain/phpmyadmin

Vei întâlni două solicitări de autentificare în secvență:

  1. Solicitarea de autentificare HTTP de bază — Introduceți numele de utilizator și parola pe care le-ați creat cu htpasswd
  2. Pagina de conectare phpMyAdmin — Introduceți numele de utilizator MySQL/MariaDB (de exemplu, root) și parola acestuia

După conectarea cu succes, vei avea acces complet la bazele de date MySQL prin interfața grafică phpMyAdmin.

Depanarea problemelor comune {#troubleshooting}

phpMyAdmin returnează o eroare 404 Not Found

Configurarea Apache poate să nu fie legată sau activată. Rulează:

sudo a2enconf phpmyadmin
sudo systemctl reload apache2

De asemenea, verifică că symlink-ul există:

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

Eroare „Nu se poate conecta la serverul MySQL”

Verifică că MySQL/MariaDB rulează:

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

Dacă este oprit, pornește-l:

sudo systemctl start mysql

Eroare HTTP 500 Internal Server Error

Aceasta indică adesea că lipsește un modul PHP. Instalează extensiile PHP necesare:

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

Pagină goală după conectare

Șterge cache-ul browserului, sau verifică jurnalele de erori Apache pentru detalii:

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

Rezumatul celor mai bune practici de securitate

Înainte de a merge în producție, revizuiește această listă de verificare a securității:

Măsura de securitateStatus
Autentificarea HTTP de bază activată
SSL/HTTPS configurat
Restricție IP aplicată (dacă este cazul)
Conectarea la distanță MySQL root dezactivată
URL-ul phpMyAdmin schimbat din implicit /phpmyadminRecomandat
Actualizări regulate ale sistemului programate
Firewall (UFW) configuratRecomandat

Redenumirea URL-ului phpMyAdmin (Pas bonus de consolidare)

Schimbarea căii URL-ului implicit /phpmyadmin la ceva mai puțin previzibil reduce

15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți