GNU/Linux >> Tutoriels Linux >  >> Panels >> Panels

Comment configurer des connexions distantes et sécurisées pour MySQL sur Ubuntu 16.04

Dans cet article, nous allons vous montrer comment configurer des connexions distantes et sécurisées pour MySQL sur Ubuntu 16.04 VPS. Si vous utilisez une connexion non chiffrée pour vous connecter à votre serveur MariaDB/MySQL distant, alors toute personne ayant accès au réseau peut surveiller et analyser les données envoyées ou reçues entre le client et le serveur. Ce guide devrait également fonctionner sur d'autres systèmes VPS Linux, mais a été testé et écrit pour un VPS Ubuntu 16.04.

1. Connectez-vous à votre VPS via SSH

ssh my_sudo_user@my_server

Les étapes de ce didacticiel supposent que vous avez installé MySQL 5.7 avec la configuration par défaut.

Activer les connexions SSL :

2. Créer une nouvelle autorité de certification locale

Nous utiliserons l'autorité de certification locale comme certificat racine auto-signé que nous utiliserons pour signer les certificats serveur et client. Pour créer un nouveau fichier d'autorité de certification locale, exécutez les commandes suivantes :

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. Générer un certificat et une clé de serveur

Pour générer un certificat de serveur et une clé, exécutez les commandes suivantes :

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. Générer le certificat et la clé des clients

Ensuite, nous devons générer le certificat client. Exécutez les commandes suivantes pour générer un certificat client et une clé :

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

Si vous souhaitez disposer d'un certificat SSL signé par une autorité de certification, vous pouvez acheter un certificat SSL de confiance ici.

5. Activer les connexions SSL du serveur MySQL

Ouvrez le fichier de configuration MySQL avec votre éditeur de texte :

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

et décommentez les lignes suivantes :

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

Enregistrez le fichier et redémarrez le service MySQL :

sudo systemctl restart mysql 

Pour vérifier que SSL est activé, connectez-vous au serveur MySQL

mysql -uroot -p

et exécutez la commande suivante :

mysql> show variables LIKE '%ssl%';

Le résultat devrait ressembler à celui-ci :

+---------------+----------------------------+
| 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. Activer les connexions à distance via SSL

Par défaut, MySQL n'écoute que les connexions sur localhost. Pour activer les connexions à distance, vous devez reconfigurer MySQL sur votre serveur pour écouter sur toutes les interfaces, pour ce faire, ouvrez le fichier de configuration MySQL :

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

et changer

bind-address            = 127.0.0.1

à

bind-address            = 0.0.0.0

Pour que les modifications prennent effet, redémarrez le serveur MySQL avec la commande suivante :

sudo systemctl restart mysql 

Vérifiez que votre serveur MySQL écoute sur toutes les interfaces :

sudo netstat -anp | grep 3306

le résultat devrait ressembler à celui-ci :

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

Pour permettre à votre client MySQL de se connecter au serveur MySQL, vous devez accorder à l'utilisateur de la base de données l'accès à la base de données sur le serveur distant.

Par exemple, si vous souhaitez accorder l'accès au dbuser utilisateur au database_name base de données et pour forcer SSL, connectez-vous au shell MySQL en tant que root et exécutez la commande suivante :

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

192.168.1.10 est l'adresse IP de votre ordinateur client MySQL.

Ensuite, vous devez configurer votre client MySQL pour utiliser le certificat SSL généré précédemment. Copiez les fichiers suivants de votre serveur MySQL vers votre ordinateur client MySQL :

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

7. Configurer le client MySQL

ouvrez la configuration de votre client MySQL et ajoutez les lignes suivantes :

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

8. Testez votre connexion

Vous pouvez maintenant tester votre connexion de la machine cliente au serveur de base de données MySQL :

mysql -udbuser -pdbuserpassword -h 192.168.1.5

192.168.1.5 est l'adresse IP de votre serveur de base de données MySQL.

C'est ça. Vous avez configuré avec succès des connexions distantes et sécurisées pour MySQL sur votre VPS Ubuntu 16.04. Pour plus d'informations sur les connexions sécurisées MySQL, veuillez consulter la documentation officielle de MySQL.

Bien sûr, vous n'êtes pas obligé de configurer des connexions distantes et sécurisées pour MySQL sur Ubuntu 16.04 si vous utilisez l'un de nos services d'hébergement VPS Ubuntu, auquel cas vous pouvez simplement demander à nos administrateurs Linux experts de configurer des connexions distantes et sécurisées pour MySQL sur Ubuntu 16.04 pour vous. Ils sont disponibles 24h/24 et 7j/7 et prendront immédiatement en charge votre demande.

PS . Si vous avez aimé cet article sur la configuration des connexions distantes et sécurisées pour MySQL sur Ubuntu 16.04, partagez-le avec vos amis sur les réseaux sociaux en utilisant les boutons à gauche ou laissez simplement une réponse ci-dessous. Merci.


Panels
  1. Comment installer et configurer SuiteCRM avec OPcache sur un VPS Ubuntu 14.04

  2. Comment installer et configurer Tinyproxy sur Ubuntu 14.04

  3. Comment installer et configurer LibreNMS sur Ubuntu 16.04

  4. Comment installer et configurer OpenSSH sur Ubuntu 16.04

  5. Comment installer WordPress sur Ubuntu 18.04 et le configurer pour utiliser une base de données distante

Comment installer et sécuriser phpMyAdmin sur Ubuntu

Comment installer et configurer Zabbix sur Ubuntu 18.04

Comment activer SSL et les connexions à distance pour MySQL sur CentOS 7

Comment installer et sécuriser phpMyAdmin sur Ubuntu 18.04 LTS

Comment installer et configurer MySQL dans Ubuntu 20.04 LTS

Comment installer et configurer MySQL sur Ubuntu 18.04