MODOP – Autoriser connexions Distantes à MariaDB via SSL

Serveur sqlss.house.cpb

Installation TCPFlow

[root@sqlssl ~]# dnf install wget
[root@sqlssl ~]# dnf install wget https://forensics.cert.org/cert-forensics-tools-release-el8.rpm
[root@sqlssl ~]# dnf install epel-release
[root@sqlssl ~]# dnf --enablerepo=forensics install tcpflow
[root@sqlssl ~]# tcpflow -c -p -i any dst port 3306

Client Mysql sql-client.house.cpb

[root@sql-client01 ~]# mysql -u chris -p -h sqlssl


mysql> select user,host from mysql.user;

Serveur sqlss.house.cpb


On remarque bien les flux de données en claire sur le réseau ce qui pose un réel souci de sécurité.
On peut vérifier les paramètre SSL sur MariaDB

MariaDB [(none)]> show variables LIKE « %ssl% »;

MariaDB [(none)]> status

Création des répertoires des certificats

[root@sqlssl ~]# mkdir -p /etc/mysql/newcerts/
[root@sqlssl ~]# cd /etc/mysql/newcerts/

Génération et auto-signature du Certificat d’autorité

[root@sqlssl newcerts]# openssl genrsa 4096 > ca-key.pem

[root@sqlssl newcerts]# openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca-cert.pem

Génération et auto-signature du Certificat serveur sqlssl.house.cpb

[root@sqlssl newcerts]# openssl req -newkey rsa:4096 -days 365000 -nodes -keyout server-key.pem -out server-req.pem

[root@sqlssl newcerts]# openssl rsa -in server-key.pem -out server-key.pem

writing RSA key

[root@sqlssl newcerts]# openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

Certificats nécessaire à Mysql
[root@sqlssl newcerts]# ls -al

Installer les certificats dans Mysql

[root@sqlssl newcerts]# chmod 644 *
[root@sqlssl newcerts]# vi /etc/my.cnf
ssl-ca=/etc/mysql/newcerts/ca-cert.pem
ssl-cert=/etc/mysql/newcerts/server-cert.pem
ssl-key=/etc/mysql/newcerts/server-key.pem
ssl-cipher = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

[root@sqlssl newcerts]# systemctl restart mysqld
[root@sqlssl newcerts]# mysql -u root -p

mysql> show variables LIKE « %ssl% »;

Création d’un utilisateur « chrisSSL@ sqlssl-client.house.cpb » avec privlège SSL
mysql> CREATE USER « chrisSSL »@ »sql-client.house.cpb » IDENTIFIED BY « Votre_mot_de_passe » REQUIRE SSL;
Query OK, 0 rows affected (0,02 sec)

mysql> GRANT SELECT, SHOW DATABASES ON *.* TO « chrisSSL »@ »sql-client.house.cpb » ;
Query OK, 0 rows affected (0,01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,00 sec)

mysql> select user,host,ssl_type from mysql.user;

Génération et auto-signature pour le client sql-client.house.cpb

[root@sqlssl newcerts]# openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem -out client-req.pem

[root@sqlssl newcerts]# openssl rsa -in client-key.pem -out client-key.pem
writing RSA key
[root@sqlssl newcerts]# openssl x509 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

Copie des certificats clients à vos/votre client(s)

[root@sqlssl newcerts]# scp ca-cert.pem root@sql-client:/etc/ssl/certs/
[root@sqlssl newcerts]# scp client-cert.pem root@sql-client:/etc/ssl/certs/
[root@sqlssl newcerts]# scp client-key.pem root@sql-client:/etc/ssl/certs/

CLIENT sql-client.house.cpb

Ajout des certificats à Mysql

[root@sqlssl-client ~]# cd /etc/ssl/certs/
[root@sqlssl-client certs]# chmod 644 *.pem
[root@sqlssl-client certs]# la -al

Connexion en spécifiant les certificats en ligne de commande

[root@sqlssl-client certs]# mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -h sqlssl -u chrisSSL -p

mysql> select user,host from mysql.user;

Côté flux serveur

Toutes les transactions sont désormais cryptées entre le client et le serveur.

mysql> status

Ajouter les clefs sur le fichier client my.cnf

[root@sqlssl-client certs]# vi /etc/my.cnf.d/client.cnf
[client]
ssl-ca=/etc/ssl/certs/ca-cert.pem
ssl-cert=/etc/ssl/certs/client-cert.pem
ssl-key=/etc/ssl/certs/client-key.pem

[root@sql-client certs]# mysql -h sqlssl -u chrisSSL -p

Côté serveur

Sur le Client

Sur le Serveur

Views: 16

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *