Secure MariaDB avec prise en charge SSL sur Ubuntu 16.04

MariaDB est une base de données open source gratuite, et est le remplacement libre le plus utilisé pour MySQL. Il est réalisé par les développeurs de MySQL et destiné à rester libre sous la GNU GPL. Il est très rapide, évolutif et est livré avec un riche ensemble de fonctionnalités qui le rendent très polyvalent pour une grande variété de cas d'utilisation.

Ce didacticiel vous expliquera comment installer et configurer MariaDB avec prise en charge SSL sur Ubuntu 16.04.

Exigences

  • Une nouvelle instance d'Ubuntu 16.04 Vultr.
  • Un utilisateur non root avec des privilèges sudo.
  • Une adresse IP statique 192.168.0.190 est configurée sur l'instance de serveur.
  • Une adresse IP statique 192.168.0.191 est configurée sur la machine cliente.

Étape 1: installer MariaDB

Par défaut, la dernière version de MariaDB n'est pas disponible dans le référentiel Ubuntu 16.04; vous devrez donc ajouter le référentiel MariaDB à votre système.

Tout d'abord, téléchargez la clé avec la commande suivante:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

Ensuite, ajoutez le référentiel MariaDB au /etc/apt/sources.listfichier:

sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list

Mettez à jour l'index apt avec la commande suivante:

sudo apt-get update -y

Une fois l'index apt mis à jour, installez le serveur MariaDB avec la commande suivante:

sudo apt-get install mariadb-server -y

Démarrez le serveur MariaDB et activez-le pour démarrer au démarrage:

sudo systemctl start mysql
sudo systemctl enable mysql

Ensuite, vous devrez exécuter un mysql_secure_installationscript pour sécuriser l'installation de MariaDB. Ce script vous permet de définir le mot de passe root, de supprimer les utilisateurs anonymes, d'interdire la connexion root distante et de supprimer la base de données de test:

sudo mysql_secure_installation

Étape 2: créer un certificat SSL et une clé privée pour le serveur

Créez d'abord un répertoire pour stocker tous les fichiers de clés et de certificats.

sudo mkdir /etc/mysql-ssl

Ensuite, modifiez le répertoire /etc/mysql-sslet créez le certificat CA et la clé privée avec la commande suivante:

sudo cd /etc/mysql-ssl
sudo openssl genrsa 2048 > ca-key.pem
sudo openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem

Répondez à toutes les questions comme indiqué ci-dessous:

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:IN
State or Province Name (full name) [Some-State]:GUJ
Locality Name (eg, city) []:JND
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ENJ
Organizational Unit Name (eg, section) []:SYSTEM
Common Name (e.g. server FQDN or YOUR name) []:HITESH
Email Address []:[email protected]

Ensuite, créez une clé privée pour le serveur avec la commande suivante:

sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout server-key.pem -out server-req.pem

Répondez à toutes les questions comme vous l'avez fait dans la commande précédente.

Ensuite, exportez la clé privée du serveur vers une clé de type RSA avec la commande suivante:

sudo sudo openssl rsa -in server-key.pem -out server-key.pem

Enfin, générez un certificat de serveur à l'aide du certificat CA comme suit:

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

Vous pouvez maintenant voir tous les certificats et la clé avec la commande suivante:

ls

Vous devriez voir la sortie suivante:

ca-cert.pem  ca-key.pem  server-cert.pem  server-key.pem  server-req.pem

Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.

Étape 3: configurer le serveur MariaDB pour utiliser SSL

Vous devez avoir tous les certificats et une clé privée; et maintenant vous devrez configurer MariaDB pour utiliser la clé et les certificats. Vous pouvez le faire en modifiant le /etc/mysql/mariadb.conf.d/50-server.cnffichier:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Ajoutez les lignes suivantes sous la [mysqld]section:

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

##Change this value to connect the MariaDB server from another host.
bind-address = *

Enregistrez le fichier, puis redémarrez le service MariaDB pour appliquer ces modifications:

sudo systemctl restart mysql

Maintenant, vous pouvez vérifier si la configuration SSL fonctionne ou non avec la requête suivante:

mysql -u root -p
MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';

Si la configuration a réussi, vous devriez voir la sortie suivante:

+---------------+--------------------------------+
| Variable_name | Value                          |
+---------------+--------------------------------+
| have_openssl  | YES                            |
| have_ssl      | YES                            |
| ssl_ca        | /etc/mysql-ssl/ca-cert.pem     |
| ssl_capath    |                                |
| ssl_cert      | /etc/mysql-ssl/server-cert.pem |
| ssl_cipher    |                                |
| ssl_crl       |                                |
| ssl_crlpath   |                                |
| ssl_key       | /etc/mysql-ssl/server-key.pem  |
+---------------+--------------------------------+

Vous devriez remarquer que les valeurs have_sslet have_opensslsont activées dans la sortie ci-dessus.

Étape 4: créer un utilisateur avec des privilèges SSL

Créez un utilisateur distant qui a le privilège d'accéder au serveur MariaDB via SSL. Pour ce faire, exécutez la commande suivante:

Tout d'abord, connectez-vous au shell MySQL:

mysql -u root -p

Ensuite, créez un utilisateur remoteet accordez le privilège d'accéder au serveur via SSL.

MariaDB [(none)]>GRANT ALL PRIVILEGES ON *.* TO 'remote'@'192.168.0.191' IDENTIFIED BY 'password' REQUIRE SSL;

Ensuite, videz les privilèges avec la commande suivante:

MariaDB [(none)]>FLUSH PRIVILEGES;

Enfin, quittez le shell MySQL avec la commande suivante:

MariaDB [(none)]>exit;

Remarque: 192.168.0.191 est l'adresse IP de la machine de l'utilisateur distant (client).

Votre serveur est maintenant prêt à autoriser les connexions à l'utilisateur distant.

Étape 5: créer le certificat client

La configuration côté serveur est terminée. Ensuite, vous devrez créer une nouvelle clé et un nouveau certificat pour le client.

Sur la machine serveur, créez la clé client avec la commande suivante:

sudo cd /etc/mysql-ssl
sudo sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-req.pem

Ensuite, traitez la clé RSA cliente avec la commande suivante:

sudo openssl rsa -in client-key.pem -out client-key.pem

Enfin, signez le certificat client avec la commande suivante:

sudo openssl x509 -req -in client-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

Étape 6: Configurer le client MariaDB pour utiliser SSL

Tous les certificats et la clé sont prêts pour le client. Ensuite, vous devrez copier tous les certificats clients sur n'importe quel ordinateur client sur lequel vous souhaitez exécuter le client MariaDB.

Vous devrez installer le client MariaDB sur la machine cliente.

Tout d'abord, sur la machine cliente, téléchargez la clé de MariaDB avec la commande suivante:

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

Ensuite, ajoutez le référentiel MariaDB au /etc/apt/sources.listfichier:

sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list

Ensuite, mettez à jour l'index apt avec la commande suivante:

sudo apt-get update -y

Une fois que l'index apt est mis à jour, installez le client MariaDB sur la machine client avec la commande suivante:

sudo apt-get install mariadb-client -y

Créez maintenant un répertoire pour stocker tous les certificats:

sudo mkdir /etc/mysql-ssl

Ensuite, copiez tous les certificats clients de la machine serveur vers la machine client avec la commande suivante:

sudo scp [email protected]:/etc/mysql-ssl/client-* /etc/mysql-ssl/

Ensuite, vous devrez configurer le client MariaDB pour utiliser SSL. Vous pouvez le faire en créant un /etc/mysql/mariadb.conf.d/50-mysql-clients.cnffichier:

sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf

Ajoutez les lignes suivantes:

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

Enregistrez le fichier lorsque vous avez terminé.

Étape 7: vérifier les connexions à distance

Maintenant que tout est configuré, il est temps de vérifier si vous pouvez vous connecter au serveur MariaDB avec succès ou non.

Sur la machine cliente, exécutez la commande suivante pour vous connecter au serveur MariaDB:

mysql -u remote -h 192.168.0.190 -p mysql

Il vous sera demandé de saisir le remotemot de passe utilisateur. Après avoir donné le mot de passe, vous serez connecté au serveur MariaDB distant.

Vérifiez l'état de la connexion avec la commande suivante:

MariaDB [mysql]> status

Vous devriez voir la sortie suivante:

--------------
mysql  Ver 15.1 Distrib 10.2.7-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Connection id:      62
Current database:   mysql
Current user:       [email protected]
SSL:            Cipher in use is DHE-RSA-AES256-SHA
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server:         MariaDB
Server version:     10.0.31-MariaDB-0ubuntu0.16.04.2 Ubuntu 16.04
Protocol version:   10
Connection:     192.168.0.190 via TCP/IP
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:       3306
Uptime:         1 hours 31 min 31 sec

Vous devriez voir SSL: Cipher in use is DHE-RSA-AES256-SHAdans la sortie ci-dessus. Cela signifie que votre connexion est désormais sécurisée avec SSL.

Conclusion

Toutes nos félicitations! Vous avez correctement configuré un serveur MariaDB avec prise en charge SSL. Vous pouvez désormais accorder l'accès à d'autres clients pour accéder au serveur MariaDB via SSL.



Leave a Comment

Comment installer Apache Cassandra 3.11.x sur Ubuntu 16.04 LTS

Comment installer Apache Cassandra 3.11.x sur Ubuntu 16.04 LTS

Vous utilisez un système différent? Apache Cassandra est un système de gestion de base de données NoSQL gratuit et open source conçu pour fournir une évolutivité

Sécuriser MongoDB

Sécuriser MongoDB

MongoDB nest pas sécurisé par défaut. Si vous installez MongoDB et le lancez sans le configurer pour lauthentification, vous allez avoir un mauvais moment

Déployer un jeu de réplicas à haute disponibilité dans MongoDB 3.4 à laide du fichier de clés pour le contrôle daccès sur Ubuntu 16.04

Déployer un jeu de réplicas à haute disponibilité dans MongoDB 3.4 à laide du fichier de clés pour le contrôle daccès sur Ubuntu 16.04

Depuis sa conception en 2009, MongoDB est à la pointe de lindustrie NoSQL. Lun des concepts de base de MongoDB est le jeu de répliques, donc avant de travailler avec i

Comment configurer WordPress avec Redis

Comment configurer WordPress avec Redis

Redis est un magasin de structure de données. Il est populaire auprès des sites WordPress car il offre de grandes améliorations de performances en raison de son approche optimisée de la mise en cache.

Sauvegarde des bases de données MySQL

Sauvegarde des bases de données MySQL

MySQL est le logiciel le plus populaire au monde utilisé pour les bases de données. Il est très important de vous assurer que vous disposez de sauvegardes de votre base de données. Cette pratique permet

Installer de nouvelles versions de MongoDB sur Debian 7

Installer de nouvelles versions de MongoDB sur Debian 7

MongoDB est une base de données NoSQL rapide et puissante. Cependant, les référentiels Debian se mettent à jour lentement et contiennent souvent de très anciennes versions de paquets. Ce tutoriel

Comment installer Apache Cassandra 3.11.x sur CentOS 7

Comment installer Apache Cassandra 3.11.x sur CentOS 7

Vous utilisez un système différent? Apache Cassandra est un système de gestion de base de données NoSQL gratuit et open source conçu pour fournir une évolutivité

Comment installer MyCLI sur Linux (CentOS, Debian, Fedora et Ubuntu)

Comment installer MyCLI sur Linux (CentOS, Debian, Fedora et Ubuntu)

Introduction MyCLI est un client de ligne de commande pour MySQL et MariaDB qui vous permet de compléter automatiquement et aide à la syntaxe de vos commandes SQL. MyCL

Comment installer MongoDB 4.0 sur Arch Linux

Comment installer MongoDB 4.0 sur Arch Linux

Prérequis Un serveur Vultr fonctionnant sous Arch Linux à jour (voir cet article) Accès Sudo: les commandes devant être exécutées en tant que root sont préfixées par #, et une

Configurer MariaDB sur OpenBSD 6

Configurer MariaDB sur OpenBSD 6

Dans cet article, je vais vous montrer comment installer MariaDB sur OpenBSD 6 et le configurer pour quil soit accessible à un serveur Web chrooté (Apache ou Nginx). Vous serez également

Comment installer et utiliser ArangoDB sur Ubuntu 16.04

Comment installer et utiliser ArangoDB sur Ubuntu 16.04

Vous utilisez un système différent? Introduction ArangoDB est une base de données NoSQL open source avec un modèle de données flexible pour les documents, les graphiques et les valeurs-clés. Cest

Comment installer PostgreSQL 11.1 sur Arch Linux

Comment installer PostgreSQL 11.1 sur Arch Linux

Prérequis Un serveur Vultr fonctionnant sous Arch Linux à jour (voir cet article.) Accès Sudo. Les commandes devant être exécutées en tant que root sont préfixées par # et une

Comment installer MariaDB 10.3 ou MySQL 8.0 sur Arch Linux

Comment installer MariaDB 10.3 ou MySQL 8.0 sur Arch Linux

Prérequis Un serveur Vultr exécutant Arch Linux à jour (voir cet article.) Accès Sudo: les commandes devant être exécutées en tant que root sont préfixées par #, et une

Sauvegarde automatique de plusieurs bases de données MySQL ou MariaDB

Sauvegarde automatique de plusieurs bases de données MySQL ou MariaDB

Introduction Dans cet article, expliquez comment sauvegarder plusieurs bases de données MySQL ou MariaDB qui reposent sur la même machine à laide dun script bash personnalisé

Comment installer et configurer ArangoDB sur CentOS 7

Comment installer et configurer ArangoDB sur CentOS 7

Vous utilisez un système différent? Introduction ArangoDB est une base de données NoSQL open source avec un modèle de données flexible pour les documents, les graphiques et les valeurs-clés. Cest

Comment installer Redis sur Ubuntu 15.10

Comment installer Redis sur Ubuntu 15.10

Redis est une solution de stockage de données clé-valeur, souvent appelée une base de données NoSQL. Il peut atteindre des vitesses de lecture / écriture très élevées car il sagit dun bu en mémoire

Comment installer Laravel GitScrum sur CentOS 7

Comment installer Laravel GitScrum sur CentOS 7

Laravel GitScrum, ou GitScrum est un outil de productivité open source conçu pour aider les équipes de développement à mettre en œuvre la méthodologie Scrum dune manière similaire à t

Premiers pas avec SQL Server 2017 (MS-SQL) sur CentOS 7 avec Docker

Premiers pas avec SQL Server 2017 (MS-SQL) sur CentOS 7 avec Docker

Prérequis Docker engine 1.8+. Minimum de 4 Go despace disque. Minimum de 4 Go de RAM. Étape 1. Installer Docker Pour installer SQL-Server, Docker mus

Comment sauvegarder, restaurer ou transférer des bases de données MySQL / MariaDB sur Ubuntu 16.04

Comment sauvegarder, restaurer ou transférer des bases de données MySQL / MariaDB sur Ubuntu 16.04

La sauvegarde est une partie importante du traitement des bases de données. Que vous gériez un site dentreprise ou que vous hébergiez simplement WordPress, il est important de vous sauvegarder

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.