Cum sa instalam si sa asiguram phpMyAdmin cu Nginx pe un Server CentOS 7

Blog: OS
Este nevoie de sistem de un management relational al bazelor de date, cum ar fi MySQL si MariaDB pentru o parte semnificativa a site-urilor web si aplicatiilor. Cu toate acestea, nu toti utilizatorii se simt comod sa isi administreze datele prin intermediul liniei de comanda.

Introducere Este nevoie de sistem de un management relational al bazelor de date, cum ar fi MySQL si MariaDB pentru o parte semnificativa a site-urilor web si aplicatiilor. Cu toate acestea, nu toti utilizatorii se simt comod sa isi administreze datele prin intermediul liniei de comanda. Pentru a rezolva acesta problema, a fost creat un proiect numit phpMyAdmin pentru a oferi o alternativa in forma unei interfete de administrare web-based. in acest ghid, vom demonstra cum sa instalam si sa asiguram o configurare phpMyAdmin pe un server CentOS 7. Vom face aceasta configurare in partea de sus a server-ului web Nginx, care are un profil de performanta bun si poate suporta sarcini grele mai bine decat alte servere web.

Conditie Prealabila inainte de a incepe, exista cateva cerinte care trebuie stabilite. Pentru a va asigura ca aveti o baza solida pe care sa va construiti sistemul trebuie sa aveti instalat CentOS 7. Printre alte lucruri, va trebui sa configurati un utilizator cu drepturi non-root cu acces sudo  pentru comenzi administrative. Cea de-a doua conditie prealabila care trebuie indeplinita pentru a incepe acest ghid este sa instalati grupul LEMP (Linux, Nginx, MariaDB si PHP) pe server-ul CentOS 7. Aceasta este platforma pe care o vom folosi pentru asigura interfata phpMyAdmin (MariaDB este de asemenea software-ul de management al bazelor de date pe care dorim sa le gestioneze). Daca nu aveti inca LEMP instalat pe server, parcurgeti ghidul de instalare LEMP pe CentOS 7.

Cand server-ul este intr-o stare de functionare adecvata dupa parcurgerea acestor ghiduri, puteti continua cu restul paginii. Pasul Unu – Instalarea phpMyAdmin Odata platforma LEMP instalata, putem incepe instalarea software-ului phpMyAdmin. Din pacate, phpMyAdmin nu este disponibil in arhiva implicita a CentOS 7. Pentru a obtine pachetele de care avem nevoie, va trebui sa adaugam o alta arhiva in sistemul nostru.

Arhiva EPEL (Extra Packages for Enterprise Linux) contine multe pachete aditionale, inclusiv pachetul phpMyAdmin de care avem nevoie.

Din fericire, procedura de adaugare a arhivei EPEL s-a usurat. Acolo este practic un pachet numit epel-release care reconfigureaza managerul de pachete pentru a utiliza arhiva EPEL. il puteti instala tastand:

sudo yum install epel-release

Acum ca aveti acces la arhiva EPEL, puteti instala phpMyAdmin cu ajutorul yum:

sudo yum install phpmyadmin

Instalarea se va finaliza. Pentru ca server-ul Nginx sa gaseasca si sa serveasca corect fisierele phpMyAdmin va trebui sa cream un link intre fisierele de instalare si directorul nostru document root Nginx tastand:

sudo ln -s /usr/share/phpMyAdmin /usr/share/nginx/html

Trebuie sa repornim procesorul PHP pentru a ne asigura ca poate incarca modulele suplimentare pe care le-am incarcat:

sudo systemctl restart php-fpm

Cu aceasta, instalarea phpMyAdmin este functionala. Pentru a accesa interfata, mergeti la numele domeniului sau la adresa publica IP si adaugati /phpMyAdmin  in browser: http://server_domain_or_IP/phpMyAdmin

phpMyAdmin login screen

Pentru a va autentifica, folositi perechea nume utilizator/parola pentru un utilizator valid MariaDB. Utilizatorul root si parola administrativa MariaDB este o buna alegere pentru a incepe.

Dupa aceea veti putea accesa interfata de administrare:

phpMyAdmin admin interface

Familiarizati-va cu aceasta interfata. in sectiunea urmatoare vom lua cateva masuri pentru a securiza interfata. Pasul Doi – Securizarea Interfetei phpMyAdmin phpMyAdmin intalat pe server-ul dvs. ar trebui sa fie complet utilizabil in acest moment. Oricum, prin instalarea unei interfete web, am expus sistemul MySQL lumii exterioare. Chiar si cu includerea ecranului de autentificare, aceasta ramane o problema. Datorita popularitatii phpMyAdmin combinata cu  marea cantitate de informatii la care ofera acces, instalari ca aceasta sunt tinte comune pentru atacatori. Vom implementa doua strategii simple pentru a diminua sansele ca programul dvs. sa fie tintit si compromis.

Vom schimba interfata locatiei din /phpMyAdmin in altceva pentru a ocoli unele tentative de bot brute-force. Vom crea, de asemenea, un nivel suplimentar de autentificare gateway care trebuie sa fie trecut, chiar inainte de a ajunge in fereastra de conectare phpMyAdmin. Schimbarea Locatiei de Acces a Aplicatiei Pentru ca server-ul dvs. web Nginx sa gaseasca si sa serveasca fisierele phpMyAdmin, am creat un link simbolic de la directorul phpMyAdmin la documentul root in pasul precedent. Pentru a schimba URL-ul de unde poate fi accesta interfata phpMyAdmin, va trebui sa redenumim simbolic link-ul. Mutati in directorul root Nginx pentru a avea o idee mai buna despre ceea ce facem:

cd /usr/share/nginx/html
ls -l

-rw-r--r-- 1 root root 537 Aug  5 08:15 50x.html
-rw-r--r-- 1 root root 612 Aug  5 08:15 index.html
lrwxrwxrwx 1 root root  21 Aug  6 17:29 phpMyAdmin -> /usr/share/phpMyAdmin

Dupa cum puteti vedea, avem un link simbolic denumit phpMyAdmin in acest director. Puteti schimba numele link-ului dupa cum doriti. Aceasta va schimba  locatia unde phpMyAdmin poate fi accesat de un browser, care poate ajuta la ascunderea  punctului de acces din hard-coded bots. Alegeti un nume care nu indica scopul locatiei. in acest ghid, vom denumi locatia de acces /nothingtosee. Pentru a realiza acest lucru, vom redenumi link-ul:

sudo mv phpMyAdmin nothingtosee
ls -l

total 8
-rw-r--r-- 1 root root 537 Aug  5 08:15 50x.html
-rw-r--r-- 1 root root 612 Aug  5 08:15 index.html
lrwxrwxrwx 1 root root  21 Aug  6 17:29 nothingtosee -> /usr/share/phpMyAdmin

Acum, daca veti merge in locatia anterioara instalarii phpMyAdmin, veti primi eroarea 404: http://server_domain_or_IP/phpMyAdmin

phpMyAdmin 404 error

Oricum, interfata dvs. phpMyAdmin va fi disponibila in noua locatie pe care am selectat-o:

http://server_domain_or_IP/nothingtosee

phpMyAdmin login screen

Configurarea Autentificarii  Gate a unui Server Web Urmatoarea caracteristica pe care ne-am dori-o pentru instalare noastra este un mod de autentificare care i s-ar cere utilizatorului sa il treaca inainte de a vedea caseta de autentificare a phpMyAdmin. Din fericire, majoritatea servere-lor web, inclusiv Nginx, ofera aceasta optiune nativ. Va trebui sa modificati fisierul de configurare Nginx cu detalii. inainte de a face acest lucru, vom crea un fisier cu parole care va stoca creditarile de autentificare. Nginx cere ca parolele sa fie criptate folosind functia crypt(). Suita Open SSL, care ar trebui sa fie instalata deja pe server, include aceasta functionalitate. Pentru a crea parola criptata, tastati:

openssl passwd

Vi se va cere sa introduceti si sa confirmati parola pe care vreti sa o folositi. Utilitarul va afisa apoi o versiune criptata a parolei care va arata ca mai jos:

O5az.RSPzd.HE

Copiati aceasta valoare, pentru ca veti avea nevoie  sa o lipiti in fisierul de autentificare pe care il vom crea. Acum, creati un fisier de autentificare. il vom denumi pma_pass si il vom plasa in directorul de configurare Nginx:

sudo nano /etc/nginx/pma_pass

In acest fisier, va trebui sa specificati numele de utilizator pe care doriti sa il folositi, urmat de doua puncte (:) si de versiunea criptata a parolei pe care ati primit-o de la utilitarul openssl passwd. Vom denumi utilizatorul demo, dar dvs. va trebui sa alegeti un nume de utilizator diferit. Fisierul acestui ghid arata ca cel de mai jos:

demo:O5az.RSPzd.HE

Salvati si inchideti fisierul cand ati terminat. Acum, suntem gata sa modificam fisierul de configurare Nginx. Deschideti acest fisier in editorul text pentru a incepe:

sudo nano /etc/nginx/conf.d/default.conf

In acest fisier, va trebui sa adaugam o noua sectiune locatie. Aceasta va viza locatia pe care am ales-o pentru interfata phpMyAdmin (in acest ghid am selectat /nothingtosee) Creati acesta sectiune in unitatea server, dar in afara oricaror alte unitati. Vom pune noua noastra sectiune locatie location /sub unitate ca in exemplul de mai jos:

server {
    . . .

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

    location /nothingtosee {
    }

    . . .
}

In aceasta unitate, va trebui sa configuram o valoare a directivei numita auth_basic pentru mesajul de autentificare care va fi afisat utilizatorilor. Nu dorim sa le aratam utilizatorilor neautentificati ce protejam, asa ca nu oferiti detalii specifice. Vom folosi “Admin Login” in exemplul nostru. Mai apoi va trebui sa folosim directiva auth_basic_user_file pentru a pentru a indica server-ului web fisierul de autentificare pe care l-am creat. Nginx va cere utilizatorilor detaliile autentificarii si va verifica daca valorile introduse se potrivesc cu cele introduse in fisierul specificat. Dupa ce ati terminat, fisierul ar trebui sa arate ca cel de mai jos:

server {
    . . .

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

    location /nothingtosee {
        auth_basic "Admin Login";
        auth_basic_user_file /etc/nginx/pma_pass;
    }

    . . .
}

Salvati si inchideti fisierul cand ati terminat. Pentru a pune in aplicare noua noastra modalitate de autentificare, va trebui sa repornim server-ul web:

sudo systemctl restart nginx

Acum, daca accesam locatia phpMyAdmin in server-ul web (va trebui sa goliti memoria cache sau sa folositi o alta sesiune a browser-ului daca deja utilizati phpMyAdmin ), vi se va cere numele de utilizator si parola pe care ati adaugat-o in fisierul  pma_pass: http://server_domain_or_IP/nothingtosee Nginx authentication page

Dupa ce introduceti acreditarile dvs., veti fi directionat catre pagina normala de conectare phpMyAdmin. Aceasta metoda suplimentara de protectie va va ajuta sa mentineti jurnalele incercarilor de autentificare MySQL curate, in plus fata de beneficiul de securitate adaugat. Concluzii Acum puteti organiza baza de date MySQL prin intermediul unei interfete web sigura si rezonabila. Acest UI expune cea mai mare parte a functionalitatii care este disponibila din linia de comanda MySQL. Puteti consulta bazele de date si schema, executa interogari si crea  noi seturi si structuri de date.

Din aceeasi categorie

Te muti la noi?

Migrarea catre un nou furnizor de hosting poate fi extrem de complicata . Fii relaxat si lasa-i expertii nostri sa o faca! Vom muta site-ul existent în 48 de ore, fara intrerupere . Inclus GRATUIT la achizitionarea oricarui pachet de gazduire BTS Telecom.