DevOps

Sécuriser MySQL avec SSL/TLS

La sécurisation des communications vers les bases de données MySQL à l’aide de protocoles de chiffrement tels que SSL/TLS est une pratique essentielle pour renforcer la confidentialité et l’intégrité des données transitant entre les clients et le serveur de base de données. Dans le contexte d’un serveur Ubuntu 16.04, ce processus nécessite une configuration minutieuse, alliant l’installation de certificats SSL/TLS, la modification des paramètres du serveur MySQL, et la configuration des clients pour utiliser le chiffrement.

Tout d’abord, il est impératif de générer les certificats SSL/TLS. Vous pouvez créer votre propre autorité de certification (CA) pour signer ces certificats ou obtenir des certificats signés par une autorité de certification de confiance. Pour simplifier, nous considérerons la création d’une autorité de certification locale.

Commencez par installer OpenSSL, si ce n’est pas déjà fait, en utilisant la commande suivante dans le terminal :

bash
sudo apt-get update sudo apt-get install openssl

Ensuite, créez un répertoire pour stocker les fichiers de certificats et naviguez vers ce répertoire :

bash
sudo mkdir /etc/mysql/ssl cd /etc/mysql/ssl

Générez une clé privée pour votre autorité de certification (CA) :

bash
sudo openssl genpkey -algorithm RSA -out ca-key.pem

Ensuite, créez un certificat auto-signé pour votre CA :

bash
sudo openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem

Après avoir créé la CA, générez la clé privée et la demande de certificat pour le serveur MySQL :

bash
sudo openssl genpkey -algorithm RSA -out server-key.pem sudo openssl req -new -key server-key.pem -out server-req.pem

Signez la demande de certificat du serveur avec la CA :

bash
sudo openssl x509 -req -in server-req.pem -days 3650 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

Maintenant, assurez-vous que les fichiers de certificats ont les autorisations appropriées pour garantir la sécurité :

bash
sudo chmod 600 * sudo chown mysql:mysql *

Après la génération des certificats, modifiez la configuration du serveur MySQL pour activer le support SSL/TLS. Ouvrez le fichier de configuration MySQL avec votre éditeur de texte préféré :

bash
sudo nano /etc/mysql/my.cnf

Ajoutez les lignes suivantes dans la section [mysqld] du fichier de configuration :

conf
[mysqld] ssl-ca=/etc/mysql/ssl/ca.pem ssl-cert=/etc/mysql/ssl/server-cert.pem ssl-key=/etc/mysql/ssl/server-key.pem

Enregistrez les modifications et redémarrez le serveur MySQL pour appliquer la nouvelle configuration :

bash
sudo service mysql restart

À ce stade, le serveur MySQL est configuré pour utiliser SSL/TLS. Cependant, pour que les clients puissent établir des connexions sécurisées, ils doivent être configurés en conséquence. Si vous utilisez un client MySQL en ligne de commande, ajoutez les options SSL lors de la connexion :

bash
mysql -u your_username -p --ssl-ca=/etc/mysql/ssl/ca.pem --ssl-cert=/etc/mysql/ssl/client-cert.pem --ssl-key=/etc/mysql/ssl/client-key.pem

Il est crucial de créer également des certificats pour les clients. Répétez le processus de génération de certificats pour chaque client, en ajustant les noms de fichiers selon vos besoins. Assurez-vous de distribuer le certificat du client approprié à chaque utilisateur du client.

En conclusion, la sécurisation des connexions vers les bases de données MySQL sur un serveur Ubuntu 16.04 en utilisant SSL/TLS nécessite la génération de certificats, la configuration du serveur MySQL, et la mise en place de certificats pour les clients. Cette approche renforce la sécurité des données transitant entre les clients et le serveur de base de données, contribuant ainsi à la protection des informations sensibles.

Plus de connaissances

Pour approfondir la compréhension du processus de sécurisation des connexions vers les bases de données MySQL à l’aide de SSL/TLS sur un serveur Ubuntu 16.04, examinons de manière détaillée les différents aspects de cette mise en œuvre.

  1. Génération des Certificats SSL/TLS :

    • La première étape du processus consiste à générer les certificats SSL/TLS. OpenSSL, une bibliothèque de cryptographie open source, est utilisé pour créer une autorité de certification (CA) locale et les certificats nécessaires.

    • La création d’une CA locale permet d’émettre des certificats pour le serveur MySQL et éventuellement pour les clients. Ces certificats permettent d’établir des connexions sécurisées entre les différentes entités du système.

  2. Installation d’OpenSSL :

    • OpenSSL est une bibliothèque qui fournit des implémentations de protocoles de sécurité, y compris SSL et TLS. L’installation de cette bibliothèque est essentielle pour générer des clés privées et des certificats.

    • La commande sudo apt-get install openssl assure l’installation d’OpenSSL sur le serveur Ubuntu 16.04.

  3. Configuration du Serveur MySQL :

    • Une fois les certificats générés, la configuration du serveur MySQL doit être adaptée pour prendre en charge SSL/TLS. Le fichier de configuration principal de MySQL, généralement situé à /etc/mysql/my.cnf, est modifié pour inclure les chemins des certificats du serveur.

    • Les paramètres ssl-ca, ssl-cert, et ssl-key dans la section [mysqld] indiquent les chemins vers les fichiers CA, certificat du serveur, et clé privée du serveur, respectivement.

  4. Permissions des Certificats :

    • La sécurité des certificats est primordiale. Les autorisations des fichiers de certificats sont ajustées à l’aide des commandes sudo chmod 600 * et sudo chown mysql:mysql *. Ces commandes garantissent que seuls les utilisateurs autorisés ont accès aux clés privées et aux certificats.
  5. Redémarrage du Serveur MySQL :

    • Après avoir apporté des modifications à la configuration, le serveur MySQL est redémarré à l’aide de la commande sudo service mysql restart. Ceci permet l’application des nouvelles configurations sans interruption du service.
  6. Connexions Client Utilisant SSL/TLS :

    • Les clients MySQL doivent également être configurés pour utiliser SSL/TLS lors de la connexion au serveur. Cela implique l’inclusion des options SSL appropriées lors de la connexion.

    • Dans l’exemple fourni, l’utilisation du client MySQL en ligne de commande inclut les options --ssl-ca, --ssl-cert, et --ssl-key pour spécifier les certificats nécessaires.

  7. Distribution des Certificats aux Clients :

    • Pour chaque client qui se connecte au serveur MySQL de manière sécurisée, des certificats spécifiques doivent être générés. Ces certificats, composés d’une clé privée, d’une demande de certificat et du certificat signé par la CA, sont distribués aux utilisateurs du client.

    • La distribution sécurisée de ces certificats aux clients garantit que seuls les clients autorisés peuvent établir des connexions chiffrées avec le serveur MySQL.

En mettant en œuvre ces étapes, l’administrateur système peut instaurer un environnement sécurisé pour les communications entre les clients et le serveur MySQL. Le recours à SSL/TLS renforce la confidentialité des données et offre une protection contre les interceptions malveillantes.

Il est important de noter que la sécurité est un processus continu, et il est recommandé de surveiller régulièrement la configuration de sécurité, de mettre à jour les certificats conformément aux bonnes pratiques de gestion des clés, et de suivre les recommandations de sécurité spécifiques à MySQL et OpenSSL. La mise en place de mesures de sécurité robustes contribue à la préservation de l’intégrité et de la confidentialité des données stockées dans la base de données MySQL.

Bouton retour en haut de la page