Securizarea mysql și mariadb pe un server linux

Plasarea serverelor în centre de date fiabile din Europa. Deschideți serverul VPS / VDS bazat pe cloud pe SSD-uri rapide în 1 minut!

Cel mai bun Gazduire:
- protejează datele de accesul nedorit într-un centru de date european protejat






- va accepta plata cel puțin în taxe.
- vă va permite să vă distribuiți distribuția

- protecția împotriva atacurilor DDos
- copie de rezervă gratuită
- Uptime 99.9999%
- Centrul de date - TIER III
- furnizor - TIER I

Sprijinim în limba rusă 24/7/365 Lucrăm cu persoane juridice și persoane fizice. Acum aveți nevoie de 24 nuclee și 72 GB de memorie RAM. Vă rog!

Tarifele noastre avantajoase vor dovedi că nu ați știut încă ieftinul de găzduire!

Minute: selectați configurația, plătiți și CMS de pe VPS este gata.
Banii înapoi - 30 de zile!

Carduri bancare, e-valută, prin intermediul terminalelor Qiwi, Webmoney, PayPal, Novoplat etc.

Puneți o întrebare la sprijinul 24/7/365

Găsiți răspunsuri în baza noastră de date și cunoașteți recomandările

În sistemele de operare Linux și Unix există multe implementări ale SQL, dintre care se numără bazele de date relaționale populare MySQL și MariaDB.

Cu toate acestea, ca majoritatea programelor, dacă nu sunt configurate corespunzător, aceste instrumente pot reprezenta un risc de securitate pentru sistem. Acest ghid va ajuta la protejarea bazelor de date MySQL sau MariaDB și, în același timp, va proteja întregul VPS.

Pentru a facilita funcționarea, manualul folosește MySQL pe serverul Ubuntu 12.04; cu toate acestea, tehnicile enumerate aici sunt potrivite pentru distribuțiile MariaDB și alte distribuții Linux.

Setare inițială

MySQL vă permite să efectuați configurația inițială de securitate în timpul instalării. În primul rând, DBMS propune setarea parolei de root.

sudo apt-get a instala mysql-server
. Configurarea mysql-server-5.5.
. Deși nu este obligatorie, este foarte recomandat să setați o parolă pentru.
. MySQL administrator "root" utilizator.
.
. Dacă acest câmp este lăsat necompletat, parola nu va fi modificată.
.
. Parola nouă pentru utilizatorul "rădăcină" MySQL.
.
. _______________________________________________________________________________.
.
.
.

După ce instalarea este finalizată, trebuie să executați mai multe scenarii. Pentru a crea o structură de directoare pentru baze de date, utilizați scriptul mysql_install_db:

Apoi rulați scriptul mysql_secure_installation, care va elimina unele setări implicite potențial periculoase.

În primul rând, acest script va cere o parolă de root, apoi vă va cere să îl modificați (dacă este necesar, setați o parolă mai sigură).

Imediat după aceea, va pune o serie de întrebări; se recomandă să răspundeți la toate aceste întrebări.

Acest lucru blochează accesul la MySQL în mod implicit și conexiunile de administrator la distanță, elimină unele baze de date de testare nesigure și actualizează setările MySQL.

Evaluarea siguranței

Principala regulă de securitate a MySQL (și aproape orice alt sistem): accesul ar trebui furnizat numai în caz de urgență. Vorbind despre protecția datelor, de multe ori trebuie să alegeți între confort și securitate.

Notă: În acest manual, alegerea se face în favoarea securității; alegerea dvs. poate varia în funcție de cerințele și obiectivele serverului.

Fișierul My.cnf

Fișierul de configurare principal este numit my.cnf MySQL și stocate în directorul / etc / sistem MySQL / Ubuntu, sau în / etc / directorul în alte sisteme.

Pentru a bloca accesul la MySQL, trebuie să modificați unele setări din acest fișier.

Deschideți fișierul ca root. Modificați calea spre director dacă executați un manual pe o altă distribuție Linux.

sudo nano /etc/mysql/my.cnf

Mai întâi, trebuie să verificați setarea adresei bind în secțiunea [mysqld]; Această setare ar trebui să indice o interfață de rețea loopback locală, 127.0.0.1.

Această setare blochează toate conexiunile la MySQL, cu excepția conexiunilor de la mașina locală.

Dacă aveți nevoie de acces la această bază de date de la o altă mașină, utilizați conexiunile SSH care vă permit să trimiteți interogări și să gestionați baza de date local și să transferați rezultatele prin tunelul SSH.







Apoi, trebuie să dezactivați funcția care vă permite să accesați sistemul de fișiere din MySQL. Aceasta poate duce la consecințe grave ale securității.

În aceeași secțiune a fișierului, trebuie să adăugați o directivă care va dezactiva acest comportament:

Acum, MySQL nu va descărca fișiere locale către utilizatori fără nivelul corespunzător de acces.

Dacă aveți spațiu suficient și nu este necesar să procesați cantități mari de date, puteți configura logarea informațiilor suplimentare pentru a putea urmări activitatea suspectă.

Înregistrarea prea multor informații în jurnale poate duce la degradarea performanței, deci acest pas trebuie luat în considerare.

Jurnalul variabil poate fi adăugat la aceeași secțiune [mysqld].

Asigurați-vă că jurnalul MySQL, jurnalul de erori și directorul jurnal nu pot fi citite de toată lumea:

sudo ls - l / var / log / mysql *
-rw-r ----- 1 mysql adm 0 Jul 23 18:06 /var/log/mysql.err
-rw-r ----- 1 mysql adm 0 Jul 23 18:06 /var/log/mysql.log
/ var / log / mysql:
total 28
-rw-rw ---- 1 mysql adm 20694 23 iulie 19:17 error.log

Protecția MySQL

În timp ce lucrați cu MySQL, puteți efectua și o serie de acțiuni pentru a îmbunătăți securitatea.

Pentru aceasta, aveți nevoie de o interfață de comandă MySQL.

Introduceți parola root MySQL.

Parola și gazda

Mai întâi trebuie să vă asigurați că toți utilizatorii care au acces la MySQL sunt protejați prin parolă și sunt conectați la gazdă.

SELECT utilizator, gazdă, parolă FROM mysql.user;
+------------------+-----------+-------------------------------------------+
| | utilizator | gazdă | parola |
+------------------+-----------+-------------------------------------------+
| | rădăcină | localhost | * DE06E242B88EFB1FE4B5083587C260BACB2A6158 |
| | demo-utilizator | % | | |
| | rădăcină | 127.0.0.1 | * DE06E242B88EFB1FE4B5083587C260BACB2A6158 |
| | rădăcină | 1 | * DE06E242B88EFB1FE4B5083587C260BACB2A6158 |
| | debian-sys-maint | localhost | * ECE81E38F064E50419F3074004A8352B6A683390 |
+------------------+-----------+-------------------------------------------+
5 rânduri în set (0.00 sec)

Notă: în exemplul de mai sus, demo-utilizatorul nu are o parolă și nu este legat de gazdă. Acesta este un risc serios de securitate.

Puteți seta o parolă pentru acest utilizator folosind următoarea comandă (înlocuiți datele condiționate cu propria dvs.):

UPDATE mysql.user SET Parola = PASSWORD ('newPassWord') WHERE User = "demo-user";

Deschideți din nou tabelul de utilizatori; demo-utilizatorul are o parolă.

SELECT utilizator, gazdă, parolă FROM mysql.user;
+------------------+-----------+-------------------------------------------+
| | utilizator | gazdă | parola |
+------------------+-----------+-------------------------------------------+
| | rădăcină | localhost | * DE06E242B88EFB1FE4B5083587C260BACB2A6158 |
| | demo-utilizator | % | * D8DECEC305209EEFEC43008E1D420E1AA06B19E0 |
| | rădăcină | 127.0.0.1 | * DE06E242B88EFB1FE4B5083587C260BACB2A6158 |
| | rădăcină | 1 | * DE06E242B88EFB1FE4B5083587C260BACB2A6158 |
| | debian-sys-maint | localhost | * ECE81E38F064E50419F3074004A8352B6A683390 |
+------------------+-----------+-------------------------------------------+
5 rânduri în set (0.00 sec)

Notați câmpul gazdă: simbolul% înseamnă că acest utilizator nu este conectat la gazdă. Conectați-l la localhost:

UPDATE mysql.user SET Gazdă = 'localhost' WHERE User = "demo-user";

Redeschideți tabelul utilizator din nou; după cum puteți vedea, acum toate câmpurile sunt completate corect.

În acest moment, mysql nu ar trebui să aibă conturi nefolosite (după executarea mysql_secure_installation). Cu toate acestea, dacă există astfel de elemente în tabel, trebuie să fie șterse.

Pentru aceasta, folosiți comanda:

Șterge din mysql.user WHERE Utilizator = "";

După ce ați terminat tabela de utilizator, tastați următoarea comandă:

Utilizatori specializați

La fel ca sistemul Linux, MySQL execută procesele ca utilizatori izolați.

Fiecare aplicație care utilizează MySQL trebuie să aibă un cont de utilizator separat, cu un anumit nivel de acces la date.

Când configurați aplicațiile pentru a utiliza MySQL, trebuie să creați o bază de date pentru această aplicație:

a crea baza de date testDB;
Interogare OK, 1 rând afectat (0,00 sec)

Apoi, trebuie să creați un utilizator care va gestiona această bază de date și va transfera drepturile de acces necesare. Nivelul de acces depinde de aplicație.

Pentru a crea un utilizator, executați următoarea comandă:

CREATE USER "demo-user" @ "localhost" IDENTIFICAT prin "parola";

Pentru a acorda utilizatorului accesul la baza de date, utilizați următoarea comandă:

GRANT SELECT, UPDATE, DELETE pe testDB. * TO 'demo-user' @ 'localhost';

Pentru a prelua permisiunea utilizatorului de a edita, introduceți comanda:

REVOKE UPDATE pe testDB. * FROM 'demo-user' @ 'localhost';

Cu această comandă, puteți transfera toate drepturile la baza de date:

GRANT ALL pe testDB. * TO 'demo-user' @ 'localhost';

Actualizați întotdeauna informațiile despre privilegii după ce le schimbați.

Utilizator rădăcină

În cele din urmă, puteți modifica numele implicit al utilizatorului rădăcină. Dacă un atacator încearcă să spargă utilizatorul rădăcină, va trebui să colecteze nu numai parola, ci și numele.

Puteți modifica numele utilizatorului rădăcină cu comanda:

redenumiți utilizatorul 'root' @ 'localhost' la 'newAdminUser' @ 'localhost';

selectați utilizator, gazdă, parola din mysql.user;

Acum, din nou, trebuie să actualizați privilegiile:

Acum, pentru a începe sesiunea MySQL, trebuie să introduceți un nume nou:

mysql -u newAdminUser -p

concluzie

Desigur, această listă de recomandări pentru protejarea MySQL și MariaDB este departe de a fi exhaustivă. Cu toate acestea, aceasta elimină cele mai frecvente vulnerabilități ale DBMS.

Pentru mai multe informații despre configurarea securității, consultați site-urile MySQL și MariaDB, precum și manualele de produs. În plus, instrucțiunile pentru configurarea securizată pot fi găsite în documentația pentru aplicațiile care sunt conectate la DBMS.







Articole similare

Trimiteți-le prietenilor: