GNU/Linux >> Linux Esercitazione >  >> Panels >> Panels

Come configurare connessioni remote e sicure per MySQL su Ubuntu 16.04

In questo articolo, ti mostreremo come configurare connessioni remote e sicure per MySQL su Ubuntu 16.04 VPS. Se stai utilizzando una connessione non crittografata per connetterti al tuo server MariaDB/MySQL remoto, tutti coloro che hanno accesso alla rete possono monitorare e analizzare i dati inviati o ricevuti tra il client e il server. Questa guida dovrebbe funzionare anche su altri sistemi VPS Linux, ma è stata testata e scritta per un VPS Ubuntu 16.04.

1. Accedi al tuo VPS tramite SSH

ssh my_sudo_user@my_server

I passaggi di questo tutorial presuppongono che tu abbia installato MySQL 5.7 con la configurazione predefinita.

Abilita connessioni SSL:

2. Crea una nuova autorità di certificazione locale

Utilizzeremo l'autorità di certificazione locale come certificato radice autofirmato che utilizzeremo per firmare sia i certificati server che client. Per creare un nuovo file dell'autorità di certificazione locale, eseguire i seguenti comandi:

sudo openssl genrsa -out /etc/mysql/ca-key.pem 2048
sudo chmod 600 /etc/mysql/ca-key.pem
sudo openssl req -new -key /etc/mysql/ca-key.pem -out /etc/mysql/ca-csr.pem -subj /CN=mysql-CA/
sudo openssl x509 -req -in /etc/mysql/ca-csr.pem -out /etc/mysql/cacert.pem -signkey /etc/mysql/ca-key.pem -days 3650
sudo echo 01 > /etc/mysql/cacert.srl

3. Genera certificato e chiave server

Per generare un certificato e una chiave del server, impartisci i seguenti comandi:

sudo openssl genrsa -out /etc/mysql/server-key.pem 2048
sudo chmod 600 /etc/mysql/server-key.pem
sudo openssl req -new -key /etc/mysql/server-key.pem -out /etc/mysql/server-csr.pem -subj /CN=mysql/
sudo openssl x509 -req -in /etc/mysql/server-csr.pem -out /etc/mysql/server-cert.pem -CA /etc/mysql/cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365

4. Genera certificato e chiave clienti

Successivamente, dobbiamo generare il certificato client. Esegui i seguenti comandi per generare un certificato client e una chiave:

sudo openssl genrsa -out /etc/mysql/client-key.pem 2048
sudo chmod 600 /etc/mysql/client-key.pem
sudo openssl req -new -key /etc/mysql/client-key.pem -out /etc/mysql/client-csr.pem -subj /CN=mysql/
sudo openssl x509 -req -in /etc/mysql/client-csr.pem -out /etc/mysql/client-cert.pem -CA /etc/mysql/cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365

Se desideri avere un certificato SSL firmato da una CA, puoi acquistare un certificato SSL affidabile qui.

5. Abilita le connessioni SSL del server MySQL

Apri il file di configurazione di MySQL con il tuo editor di testo:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

e decommentare le seguenti righe:

ssl-ca=/etc/mysql/cacert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

Salva il file e riavvia il servizio MySQL:

sudo systemctl restart mysql 

Per verificare che SSL sia abilitato, accedi al server MySQL

mysql -uroot -p

ed esegui il seguente comando:

mysql> show variables LIKE '%ssl%';

L'output dovrebbe essere simile al seguente:

+---------------+----------------------------+
| Variable_name | Value                      |
+---------------+----------------------------+
| have_openssl  | YES                        |
| have_ssl      | YES                        |
| ssl_ca        | /etc/mysql/cacert.pem      |
| ssl_capath    |                            |
| ssl_cert      | /etc/mysql/server-cert.pem |
| ssl_cipher    |                            |
| ssl_crl       |                            |
| ssl_crlpath   |                            |
| ssl_key       | /etc/mysql/server-key.pem  |
+---------------+----------------------------+
9 rows in set (0.15 sec)

6. Abilita connessioni remote tramite SSL

Per impostazione predefinita, MySQL ascolta solo le connessioni su localhost. Per abilitare le connessioni remote devi riconfigurare MySQL sul tuo server per l'ascolto su tutte le interfacce, per farlo apri il file di configurazione di MySQL:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

e cambia

bind-address            = 127.0.0.1

a

bind-address            = 0.0.0.0

Affinché le modifiche abbiano effetto, riavvia il server MySQL con il seguente comando:

sudo systemctl restart mysql 

Verifica che il tuo server MySQL sia in ascolto su tutte le interfacce:

sudo netstat -anp | grep 3306

l'output dovrebbe essere simile al seguente:

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      938/mysqld

Per consentire al tuo client MySQL di connettersi al server MySQL, devi concedere all'utente del database l'accesso al database sul server remoto.

Ad esempio se vuoi concedere l'accesso a dbuser utente al database_name database e per forzare SSL, accedi alla shell MySQL come root ed esegui il comando seguente:

GRANT ALL ON database_name.* TO [email protected] IDENTIFIED BY 'dbuserpassword' REQUIRE SSL;

dove 192.168.1.10 è l'indirizzo IP della tua macchina client MySQL.

Successivamente, devi configurare il tuo client MySQL per utilizzare il certificato SSL generato in precedenza. Copia i seguenti file dal tuo server MySQL al tuo computer client MySQL:

/etc/mysql/cacert.pem
/etc/mysql/client-cert.pem
/etc/mysql/client-key.pem

7. Configura client MySQL

apri la configurazione del tuo client MySQL e aggiungi le seguenti righe:

[client]
ssl-ca=/etc/mysql/cacert.pem
ssl-cert=/etc/mysql/client-cert.pem
ssl-key=/etc/mysql/client-key.pem

8. Metti alla prova la tua connessione

Ora puoi testare la tua connessione dalla macchina client al server del database MySQL:

mysql -udbuser -pdbuserpassword -h 192.168.1.5

dove 192.168.1.5 è l'indirizzo IP del tuo server di database MySQL.

Questo è tutto. Hai configurato correttamente connessioni remote e sicure per MySQL sul tuo VPS Ubuntu 16.04. Per ulteriori informazioni sulle connessioni sicure MySQL, fare riferimento alla documentazione ufficiale di MySQL.

Ovviamente, non devi configurare connessioni remote e sicure per MySQL su Ubuntu 16.04 se utilizzi uno dei nostri servizi di hosting VPS Ubuntu, nel qual caso puoi semplicemente chiedere ai nostri esperti amministratori Linux di configurare connessioni remote e sicure per MySQL su Ubuntu 16.04 per te. Sono disponibili 24 ore su 24, 7 giorni su 7 e si prenderanno immediatamente cura della tua richiesta.

PS . Se ti è piaciuto questo post su come configurare connessioni remote e sicure per MySQL su Ubuntu 16.04, condividilo con i tuoi amici sui social network usando i pulsanti a sinistra o lascia semplicemente una risposta qui sotto. Grazie.


Panels
  1. Come installare e configurare CyberPanel su Ubuntu 18.04

  2. Come installare e configurare SuiteCRM con OPcache su un VPS Ubuntu 14.04

  3. Come installare e configurare Tinyproxy su Ubuntu 14.04

  4. Come installare e configurare PHP OPcache su Ubuntu 20.04

  5. Come installare e configurare strongSwan VPN su Ubuntu 18.04

Come installare e proteggere phpMyAdmin su Ubuntu

Come installare e configurare Zabbix su Ubuntu 18.04

Come abilitare SSL e connessioni remote per MySQL su CentOS 7

Come installare e proteggere phpMyAdmin su Ubuntu 18.04 LTS

Come installare e configurare MySQL in Ubuntu 20.04 LTS

Come installare e configurare MySQL su Ubuntu 18.04