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

12 Best practice per la sicurezza MySQL/MariaDB per Linux

MySQL è il sistema di database open source più popolare al mondo e MariaDB (un fork di MySQL) è il sistema di database open source in più rapida crescita al mondo. Dopo aver installato il server MySQL, non è sicuro nella sua configurazione predefinita e la sua sicurezza è una delle attività essenziali nella gestione generale del database.

Ciò contribuirà a rafforzare e potenziare la sicurezza complessiva del server Linux, poiché gli aggressori scansionano sempre le vulnerabilità in qualsiasi parte di un sistema e i database sono stati in passato aree di destinazione chiave. Un esempio comune è la forzatura bruta della password di root per il database MySQL.

In questa guida spiegheremo utili MySQL/MariaDB best practice di sicurezza per Linux.

1. Installazione sicura di MySQL

Questo è il primo passaggio consigliato dopo l'installazione del server MySQL, per proteggere il server del database. Questo script facilita il miglioramento della sicurezza del tuo server MySQL chiedendoti di:

  • imposta una password per l'account root, se non l'hai impostata durante l'installazione.
  • disabilita l'accesso utente root remoto rimuovendo gli account root accessibili dall'esterno dell'host locale.
  • rimuovere gli account utente anonimi e testare il database a cui per impostazione predefinita possono accedere tutti gli utenti, anche gli utenti anonimi.
# mysql_secure_installation

Dopo averlo eseguito, imposta la password di root e rispondi alla serie di domande inserendo [Sì/S ] e premi [Invio] .

2. Associa il server di database all'indirizzo di loopback

Questa configurazione limiterà l'accesso da macchine remote, dice al server MySQL di accettare solo connessioni dall'interno del localhost. Puoi impostarlo nel file di configurazione principale.

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

Aggiungi la seguente riga sotto [mysqld] sezione.

bind-address = 127.0.0.1

3. Disabilita LOCAL INFILE in MySQL

Come parte del rafforzamento della sicurezza, devi disabilitare local_infile per impedire l'accesso al filesystem sottostante da MySQL utilizzando la seguente direttiva in [mysqld] sezione.

local-infile=0

4. Cambia la porta predefinita MySQL

Il porto variabile imposta il numero della porta MySQL che verrà utilizzata per l'ascolto su connessioni TCP/IP. Il numero di porta predefinito è 3306 ma puoi cambiarlo in [mysqld] sezione come mostrato.

Port=5000

5. Abilita la registrazione MySQL

I log sono uno dei modi migliori per capire cosa succede su un server, in caso di eventuali attacchi, puoi facilmente vedere qualsiasi attività relativa alle intrusioni dai file di registro. Puoi abilitare la registrazione MySQL aggiungendo la seguente variabile sotto [mysqld] sezione.

log=/var/log/mysql.log

6. Imposta l'autorizzazione appropriata sui file MySQL

Assicurati di avere le autorizzazioni appropriate impostate per tutti i file del server MySQL e le directory di dati. Il /etc/my.conf il file dovrebbe essere scrivibile solo su root. Ciò impedisce ad altri utenti di modificare le configurazioni del server di database.

# chmod 644 /etc/my.cnf

7. Elimina la cronologia della shell di MySQL

Tutti i comandi eseguiti sulla shell MySQL sono archiviati dal client mysql in un file di cronologia:~/.mysql_history . Questo può essere pericoloso, perché per qualsiasi account utente che creerai, tutti i nomi utente e le password digitate sulla shell verranno registrati nel file di cronologia.

# cat /dev/null > ~/.mysql_history

8. Non eseguire comandi MySQL dalla riga di comando

Come già sai, tutti i comandi che digiti sul terminale sono archiviati in un file di cronologia, a seconda della shell che stai utilizzando (ad esempio ~/.bash_history per bash). Un utente malintenzionato che riesce ad accedere a questo file di cronologia può facilmente vedere tutte le password registrate lì.

Si sconsiglia vivamente di digitare le password sulla riga di comando, qualcosa del genere:

# mysql -u root -ppassword_

Quando controlli l'ultima sezione del file della cronologia dei comandi, vedrai la password digitata sopra.

# history 

Il modo appropriato per connettere MySQL è.

# mysql -u root -p
Enter password:

9. Definire gli utenti del database specifici dell'applicazione

Per ogni applicazione in esecuzione sul server, concedere l'accesso solo a un utente responsabile di un database per una determinata applicazione. Ad esempio, se hai un sito wordpress, crea un utente specifico per il database del sito wordpress come segue.

# 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

e ricorda di rimuovere sempre gli account utente che non gestiscono più alcun database dell'applicazione sul server.

10. Usa plugin e librerie di sicurezza aggiuntive

MySQL include una serie di plugin di sicurezza per:autenticazione dei tentativi da parte dei client di connettersi al server MySQL, convalida della password e protezione dell'archiviazione per informazioni sensibili, tutti disponibili nella versione gratuita.

Puoi trovare di più qui:https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. Cambia regolarmente le password MySQL

Questo è un consiglio comune per la sicurezza di informazioni/applicazioni/sistema. La frequenza con cui lo farai dipenderà interamente dalla tua politica di sicurezza interna. Tuttavia, può impedire ai "ficcanaso" che potrebbero aver tracciato la tua attività per un lungo periodo di tempo, di ottenere l'accesso al tuo server mysql.

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

12. Aggiorna regolarmente il pacchetto di MySQL Server

Si consiglia vivamente di aggiornare regolarmente i pacchetti mysql/mariadb per stare al passo con gli aggiornamenti di sicurezza e le correzioni di bug, dal repository del fornitore. Normalmente i pacchetti nei repository del sistema operativo predefinito sono obsoleti.

# yum update
# apt update

Dopo aver apportato modifiche al server mysql/mariadb, riavvia sempre il servizio.

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

È tutto! Ci piace sentirti tramite il modulo di commento qui sotto. Condividi con noi tutti i suggerimenti sulla sicurezza MySQL/MariaDB mancanti nell'elenco sopra.