12 MySQL/MariaDB sigurnosnih najboljih praksi za Linux


MySQL je najpopularniji svjetski sistem baza podataka otvorenog koda, a MariaDB (razvoj MySQL) je svjetski najbrže rastući sistem baza podataka otvorenog koda. Nakon instaliranja MySQL servera, on je nesiguran u svojoj zadanoj konfiguraciji, a njegovo osiguranje je jedan od bitnih zadataka u općem upravljanju bazom podataka.

Pročitajte također: Naučite MySQL/MariaDB za početnike – 1. dio

Ovo će doprinijeti jačanju i jačanju ukupne sigurnosti Linux servera, jer napadači uvijek skeniraju ranjivosti u bilo kojem dijelu sistema, a baze podataka su u prošlosti bile ključne ciljne oblasti. Uobičajeni primjer je grubo prisiljavanje root lozinke za MySQL bazu podataka.

U ovom vodiču ćemo objasniti korisnu najbolju sigurnosnu praksu MySQL/MariaDB za Linux.

1. Sigurna MySQL instalacija

Ovo je prvi preporučeni korak nakon instaliranja MySQL servera, ka osiguranju servera baze podataka. Ova skripta olakšava poboljšanje sigurnosti vašeg MySQL servera tražeći od vas da:

  • postavite lozinku za root nalog, ako je niste postavili tokom instalacije.
  • onemogućite prijavu udaljenog root korisnika uklanjanjem root naloga koji su dostupni izvan lokalnog hosta.
  • uklonite anonimne korisničke račune i testirajte bazu podataka kojoj po defaultu mogu pristupiti svi korisnici, čak i anonimni korisnici.
mysql_secure_installation

Nakon što ga pokrenete, postavite root lozinku i odgovorite na niz pitanja unosom [Yes/Y] i pritisnite [Enter].

2. Povežite server baze podataka na adresu povratne petlje

Ova konfiguracija će ograničiti pristup sa udaljenih mašina, govori MySQL serveru da prihvata veze samo iz lokalnog hosta. Možete ga postaviti u glavnoj konfiguracijskoj datoteci.

vi /etc/my.cnf	                   [RHEL/CentOS]	
vi /etc/mysql/my.conf                    [Debian/Ubuntu] 
OR
vi /etc/mysql/mysql.conf.d/mysqld.cnf    [Debian/Ubuntu] 

Dodajte sljedeći red ispod pod [mysqld] odjeljak.

bind-address = 127.0.0.1

3. Onemogućite LOCAL INFILE u MySQL

Kao dio pojačanja sigurnosti, morate onemogućiti local_infile da spriječite pristup osnovnom sistemu datoteka iz MySQL-a koristeći sljedeću direktivu u odjeljku [mysqld].

local-infile=0

4. Promijenite MYSQL zadani port

Varijabla Port postavlja broj MySQL porta koji će se koristiti za slušanje TCP/IP veza. Zadani broj porta je 3306 ali ga možete promijeniti u odjeljku [mysqld] kao što je prikazano.

Port=5000

5. Omogućite MySQL evidentiranje

Dnevnici su jedan od najboljih načina da shvatite šta se dešava na serveru, u slučaju bilo kakvih napada, možete lako vidjeti sve aktivnosti vezane za upad iz datoteka evidencije. Možete omogućiti MySQL evidentiranje dodavanjem sljedeće varijable u odjeljak [mysqld].

log=/var/log/mysql.log

6. Postavite odgovarajuću dozvolu za MySQL datoteke

Uvjerite se da imate postavljene odgovarajuće dozvole za sve datoteke mysql servera i direktorije podataka. Datoteku /etc/my.conf treba pisati samo root. Ovo blokira druge korisnike da mijenjaju konfiguracije poslužitelja baze podataka.

chmod 644 /etc/my.cnf

7. Izbrišite MySQL Shell History

Sve naredbe koje izvršavate na MySQL ljusci pohranjuje mysql klijent u historijski fajl: ~/.mysql_history. Ovo može biti opasno, jer za sve korisničke naloge koje kreirate, sva korisnička imena i lozinke upisane na ljusci će biti zabeležene u datoteci istorije.

cat /dev/null > ~/.mysql_history

8. Nemojte pokretati MySQL komande iz komandne linije

Kao što već znate, sve naredbe koje upišete na terminalu se pohranjuju u historijski fajl, ovisno o ljusci koju koristite (na primjer ~/.bash_history za bash). Napadač koji uspije pristupiti ovoj historijskoj datoteci može lako vidjeti sve lozinke koje su tamo zabilježene.

Strogo se ne preporučuje upisivanje lozinki u komandnu liniju, otprilike ovako:

mysql -u root -ppassword_

Kada provjerite posljednji odjeljak datoteke historije komandi, vidjet ćete lozinku upisanu iznad.

history 

Odgovarajući način za povezivanje MySQL je.

mysql -u root -p
Enter password:

9. Definirajte korisnike baze podataka specifične za aplikaciju

Za svaku aplikaciju koja se izvodi na serveru, dajte pristup samo korisniku koji je zadužen za bazu podataka za datu aplikaciju. Na primjer, ako imate wordpress stranicu, kreirajte određenog korisnika za bazu podataka wordpress stranice na sljedeći način.

mysql -u root -p
MariaDB [(none)]> CREATE DATABASE osclass_db;
MariaDB [(none)]> CREATE USER 'osclassdmin'@'localhost' IDENTIFIED BY 'osclass@dmin%!2';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO 'osclassdmin'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

i zapamtite da uvijek uklonite korisničke naloge koji više ne upravljaju nijednom aplikacijskom bazom podataka na serveru.

10. Koristite dodatne sigurnosne dodatke i biblioteke

MySQL uključuje brojne sigurnosne dodatke za: provjeru autentičnosti pokušaja klijenata da se povežu na mysql server, provjeru lozinke i osiguranje pohrane za osjetljive informacije, koji su svi dostupni u besplatnoj verziji.

Više možete pronaći ovdje: https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. Redovno mijenjajte MySQL lozinke

Ovo je uobičajena informacija/aplikacija/sigurnosni savjet. Koliko često ćete to raditi u potpunosti će zavisiti od vaše politike unutrašnje sigurnosti. Međutim, to može spriječiti „njuškare“ koji su možda pratili vašu aktivnost tokom dužeg vremenskog perioda, da dobiju pristup vašem mysql serveru.

MariaDB [(none)]> USE mysql;
MariaDB [(none)]> UPDATE user SET password=PASSWORD('YourPasswordHere') WHERE User='root' AND Host = 'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

12. Redovno ažurirajte MySQL serverski paket

Preporučljivo je redovno nadograđivati mysql/mariadb pakete kako biste bili u toku sa sigurnosnim ažuriranjima i ispravkama grešaka, iz skladišta dobavljača. Obično su paketi u podrazumevanim repozitorijumima operativnog sistema zastareli.

yum update
apt update

Nakon bilo kakvih promjena na mysql/mariadb serveru, uvijek ponovo pokrenite uslugu.

systemctl restart mariadb		#RHEL/CentOS
systemctl restart mysql		#Debian/Ubuntu

Pročitajte također: 15 korisnih savjeta za podešavanje i optimizaciju performansi MySQL/MariaDB

To je sve! Volimo čuti od vas putem obrasca za komentare ispod. Podijelite s nama sve sigurnosne savjete za MySQL/MariaDB koji nedostaju na gornjoj listi.