Cum să instalați și să securizați phpMyAdmin cu Nginx pe Ubuntu 16.04

Introducere:

phpMyAdmin este un instrument deosebit de popular și eficient pentru administrarea bazelor de date MySQL, oferind o interfață web intuitivă ce facilitează gestionarea acestora. Nginx, la rândul său, este un server web rapid și performant, optimizat pentru găzduirea site-urilor web cu trafic intens. Împreună, phpMyAdmin și Nginx constituie o combinație ideală pentru a administra bazele de date MySQL într-un mod eficace și, cel mai important, sigur.

Acest tutorial pas cu pas vă va conduce prin procesul de instalare și securizare a phpMyAdmin pe un server Ubuntu 16.04 care utilizează Nginx. Astfel, veți asigura că baza dumneavoastră de date este protejată împotriva accesului neautorizat.

Aspecte Preliminare:

Înainte de a începe, asigurați-vă că aveți următoarele elemente la îndemână:

  • Un server Ubuntu 16.04 la care aveți acces root sau un utilizator cu permisiuni de administrare.
  • Nginx instalat și configurat corect pe serverul dumneavoastră.
  • MySQL instalat și configurat pe server.
  • Un nume de domeniu sau o adresă IP publică asociată serverului.

Pasul 1: Instalarea phpMyAdmin

1. Descărcarea phpMyAdmin:

  • Accesați site-ul oficial al phpMyAdmin: https://www.phpmyadmin.net/.
  • Descărcați cea mai recentă versiune stabilă a arhivei tar.gz.

2. Extragerea arhivei:

  • Utilizați comanda tar pentru a dezarhiva pachetul descărcat într-un director specific de pe server:
  • tar -zxvf phpMyAdmin-x.y.z-all-languages.tar.gz -C /var/www/html/

  • Înlocuiți x.y.z cu numărul real al versiunii phpMyAdmin.

3. Configurarea permisiunilor:

  • Verificați că directorul phpMyAdmin are permisiunile corecte:
  • chown -R www-data:www-data /var/www/html/phpMyAdmin
    chmod -R 755 /var/www/html/phpMyAdmin

Pasul 2: Configurarea Nginx

1. Crearea unui bloc de server:

  • Creați un nou fișier de configurare pentru phpMyAdmin în directorul sites-available al Nginx:
  • sudo nano /etc/nginx/sites-available/phpMyAdmin

2. Adăugarea configurației blocului server:

  • Adăugați următoarele linii în fișierul nou creat:
  • server {
    listen 80;
    server_name phpmyadmin.example.com;
    root /var/www/html/phpMyAdmin;
    index index.php;

    location / {
    try_files $uri $uri/ =404;
    }

    location ~ /\.ht {
    deny all;
    }

    location ~* \.php$ {
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    }

  • Înlocuiți phpmyadmin.example.com cu numele de domeniu sau adresa IP a serverului dumneavoastră.

3. Activarea blocului server:

  • Creați o legătură simbolică către fișierul de configurare din directorul sites-enabled:
  • sudo ln -s /etc/nginx/sites-available/phpMyAdmin /etc/nginx/sites-enabled/

4. Reîncărcarea Nginx:

  • Reîncărcați configurația Nginx pentru ca modificările să fie aplicate:
  • sudo systemctl reload nginx

Pasul 3: Securizarea phpMyAdmin

1. Configurarea autentificării:

  • Deschideți fișierul config.inc.php din directorul phpMyAdmin:
  • sudo nano /var/www/html/phpMyAdmin/config.inc.php

2. Setarea parolei:

  • Localizați secțiunea $cfg['Servers'][$i]['auth_type'] și schimbați valoarea la config.
  • Căutați secțiunea $cfg['Servers'][$i]['password'] și introduceți o parolă complexă pentru accesul la phpMyAdmin.

3. Setarea permisiunilor:

  • Localizați secțiunea $cfg['Servers'][$i]['AllowNoPassword'] și schimbați valoarea la false.
  • Localizați secțiunea $cfg['Servers'][$i]['user'] și setați-o la utilizatorul MySQL cu drepturi de administrare.
  • Salvați modificările în fișierul config.inc.php.

4. Restricționarea accesului:

  • Folosiți un fișier .htaccess pentru a limita accesul la phpMyAdmin la anumite adrese IP:
  • <Files config.inc.php>
    order allow,deny
    allow from 192.168.1.1
    deny from all
    </Files>

  • Înlocuiți 192.168.1.1 cu adresa IP sau intervalul de adrese IP de la care doriți să permiteți accesul.

5. Protejarea cu HTTPS:

  • Utilizați un certificat SSL/TLS pentru a securiza conexiunea la phpMyAdmin prin HTTPS.
  • Generați o cerere pentru un certificat SSL/TLS:
  • sudo certbot certonly --standalone -d phpmyadmin.example.com

  • Configurați Nginx pentru a folosi HTTPS:
  • Modificați fișierul de configurare Nginx pentru phpMyAdmin, adăugând următoarele linii:
  • listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/phpmyadmin.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/phpmyadmin.example.com/privkey.pem;

  • Reîncărcați configurația Nginx:
  • sudo systemctl reload nginx

Pasul 4: Testare și Verificare

  • Accesați phpMyAdmin prin intermediul browser-ului web, folosind numele de domeniu sau adresa IP a serverului dumneavoastră și portul 80 (sau 443 dacă utilizați HTTPS).
  • Conectați-vă la phpMyAdmin cu utilizatorul și parola setate în config.inc.php.
  • Verificați dacă aveți posibilitatea să accesați și să administrați baza de date MySQL.

Concluzie:

Instalarea și securizarea phpMyAdmin împreună cu Nginx pe Ubuntu 16.04 reprezintă o procedură simplă, dar esențială pentru a asigura o administrare sigură a bazelor de date MySQL. Urmând pașii detaliați mai sus, ați realizat un mediu securizat și performant pentru gestionarea bazelor de date. Este crucial să vă asigurați că toate parolele utilizate sunt puternice și că accesul la phpMyAdmin este restricționat exclusiv utilizatorilor autorizați.

Întrebări Frecvente:

1. Care este diferența dintre Nginx și Apache?

Nginx este un server web rapid și ușor, ideal pentru a gestiona volume mari de trafic web. Apache, pe de altă parte, este un server web mai robust și flexibil, cu o gamă mai largă de funcții și module.

2. Ce este phpMyAdmin?

phpMyAdmin este un instrument de administrare a bazelor de date MySQL, ce oferă o interfață web accesibilă și ușor de folosit.

3. Ce este un certificat SSL/TLS?

Un certificat SSL/TLS este un fișier electronic ce permite conexiuni securizate prin HTTPS, criptând datele transmise.

4. Cum pot să schimb parola de acces la phpMyAdmin?

Deschideți fișierul config.inc.php din directorul phpMyAdmin și modificați valoarea din secțiunea $cfg['Servers'][$i]['password'].

5. Cum pot să restricționez accesul la phpMyAdmin doar de la anumite adrese IP?

Creați un fișier .htaccess în directorul phpMyAdmin și adăugați regulile de acces dorite.

6. Cum pot să activez autentificarea prin utilizatorii MySQL?

Modificați valoarea din secțiunea $cfg['Servers'][$i]['auth_type'] din fișierul config.inc.php în mysql.

7. Ce se întâmplă dacă uit parola de acces la phpMyAdmin?

Va fi necesar să resetați parola de acces la baza de date MySQL.

8. Cum pot să actualizez phpMyAdmin la o versiune nouă?

Descărcați cea mai recentă versiune a phpMyAdmin, dezarhivați-o peste versiunea existentă și actualizați permisiunile.

9. Care sunt cele mai bune practici de securitate pentru phpMyAdmin?

Utilizați parole puternice, restricționați accesul prin adrese IP, actualizați periodic phpMyAdmin și MySQL și utilizați HTTPS pentru conexiuni securizate.

10. Unde pot găsi documentația oficială pentru phpMyAdmin?

Pe site-ul oficial phpMyAdmin: https://docs.phpmyadmin.net/en/.

Taguri: phpMyAdmin, Nginx, Ubuntu 16.04, MySQL, securitate, instalare, configurare, administrare, baze de date, server web, HTTPS, SSL/TLS