sql >> Database teknologi >  >> RDS >> Mysql

12 MySQL/MariaDB Sikkerhed bedste praksis for Linux

MySQL er verdens mest populære open source-databasesystem og MariaDB (en gaffel af MySQL) er verdens hurtigst voksende open source-databasesystem. Efter installation af MySQL-serveren er den usikker i sin standardkonfiguration, og sikring af den er en af ​​de væsentlige opgaver i generel databasestyring.

Dette vil bidrage til at hærde og booste den overordnede Linux-serversikkerhed, da angribere altid scanner sårbarheder i enhver del af et system, og databaser har tidligere været vigtige målområder. Et almindeligt eksempel er brute-forcing af root-adgangskoden til MySQL-databasen.

I denne guide vil vi forklare nyttige MySQL/MariaDB bedste praksis for sikkerhed for Linux.

1. Sikker MySQL-installation

Dette er det første anbefalede trin efter installation af MySQL-serveren til at sikre databaseserveren. Dette script gør det lettere at forbedre sikkerheden på din MySQL-server ved at bede dig om at:

  • indstil en adgangskode til root-kontoen, hvis du ikke indstillede den under installationen.
  • deaktiver eksternt root-brugerlogin ved at fjerne root-konti, der er tilgængelige uden for den lokale vært.
  • fjern anonyme brugerkonti og testdatabase, som som standard kan tilgås af alle brugere, også anonyme brugere.
# mysql_secure_installation

Når du har kørt det, skal du indstille root-adgangskoden og besvare rækken af ​​spørgsmål ved at indtaste [Yes/Y ] og tryk på [Enter] .

2. Bind databaseserver til Loopback-adresse

Denne konfiguration vil begrænse adgangen fra fjernmaskiner, den fortæller MySQL-serveren kun at acceptere forbindelser inde fra den lokale vært. Du kan indstille det i hovedkonfigurationsfilen.

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

Tilføj følgende linje nedenfor under [mysqld] afsnit.

bind-address = 127.0.0.1

3. Deaktiver LOCAL INFILE i MySQL

Som en del af sikkerhedshærdningen skal du deaktivere local_infile for at forhindre adgang til det underliggende filsystem fra MySQL ved hjælp af følgende direktiv under [mysqld] afsnit.

local-infile=0

4. Skift MYSQL-standardport

Porten variabel indstiller MySQL-portnummeret, der skal bruges til at lytte på TCP/IP-forbindelser. Standardportnummeret er 3306 men du kan ændre det under [mysqld] sektion som vist.

Port=5000

5. Aktiver MySQL-logning

Logfiler er en af ​​de bedste måder at forstå, hvad der sker på en server, i tilfælde af angreb kan du nemt se alle indtrængningsrelaterede aktiviteter fra logfiler. Du kan aktivere MySQL-logning ved at tilføje følgende variabel under [mysqld] afsnit.

log=/var/log/mysql.log

6. Indstil passende tilladelse på MySQL-filer

Sørg for, at du har indstillet passende tilladelser for alle mysql-serverfiler og datamapper. /etc/my.conf fil bør kun kunne skrives til root. Dette blokerer andre brugere i at ændre databaseserverkonfigurationer.

# chmod 644 /etc/my.cnf

7. Slet MySQL Shell-historik

Alle kommandoer, du udfører på MySQL-shell, gemmes af mysql-klienten i en historikfil:~/.mysql_history . Dette kan være farligt, for for enhver brugerkonti, du vil oprette, vil alle brugernavne og adgangskoder, der er skrevet på skallen, blive registreret i historiefilen.

# cat /dev/null > ~/.mysql_history

8. Kør ikke MySQL-kommandoer fra kommandolinje

Som du allerede ved, er alle kommandoer, du skriver på terminalen, gemt i en historiefil, afhængigt af den skal, du bruger (f.eks. ~/.bash_history til bash). En angriber, der formår at få adgang til denne historiefil, kan nemt se alle adgangskoder, der er registreret der.

Det anbefales kraftigt ikke at skrive adgangskoder på kommandolinjen, sådan noget som dette:

# mysql -u root -ppassword_

Når du tjekker den sidste sektion af kommandohistorikfilen, vil du se adgangskoden skrevet ovenfor.

# history 

Den passende måde at forbinde MySQL på er.

# mysql -u root -p
Enter password:

9. Definer applikationsspecifikke databasebrugere

For hver applikation, der kører på serveren, skal du kun give adgang til en bruger, der er ansvarlig for en database for en given applikation. For eksempel, hvis du har et wordpress-websted, skal du oprette en specifik bruger til wordpress-webstedets database som følger.

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

og husk altid at fjerne brugerkonti, der ikke længere administrerer nogen applikationsdatabase på serveren.

10. Brug yderligere sikkerhedsplugins og biblioteker

MySQL indeholder en række sikkerhedsplugins til:autentificering af klienters forsøg på at oprette forbindelse til mysql-serveren, validering af adgangskode og sikring af opbevaring for følsomme oplysninger, som alle er tilgængelige i den gratis version.

Du kan finde mere her:https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. Skift MySQL-adgangskoder regelmæssigt

Dette er et almindeligt råd om information/applikation/systemsikkerhed. Hvor ofte du gør dette vil helt afhænge af din interne sikkerhedspolitik. Det kan dog forhindre "snoopere", som måske har sporet din aktivitet over en længere periode, i at få adgang til din mysql-server.

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

12. Opdater MySQL-serverpakken regelmæssigt

Det anbefales stærkt at opgradere mysql/mariadb-pakker regelmæssigt for at holde trit med sikkerhedsopdateringer og fejlrettelser fra leverandørens lager. Normalt er pakker i standardoperativsystemlagre forældede.

# yum update
# apt update

Efter at have foretaget ændringer på mysql/mariadb-serveren, genstart altid tjenesten.

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

Det er alt! Vi elsker at høre fra dig via kommentarformularen nedenfor. Del med os eventuelle MySQL/MariaDB-sikkerhedstip, der mangler på listen ovenfor.


  1. Tips til at flytte SQL Server-database fra én server til en anden - SQL Tutorial af Rajan Singh

  2. PostgreSQL-fejl:Relationen eksisterer allerede

  3. Ruller Oracle transaktionen tilbage ved en fejl?

  4. Hurtigt script, der returnerer alle egenskaber fra SERVERPROPERTY() i SQL Server 2017/2019