« Installer MariaDB » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
(Page créée avec « {{Bases de Données}} __TOC__ == Installation de MariaDB == * Installation du paquet '''mariadb-server''' : {{ Box Console | objet=root@mariadb:~$ apt-get install mariadb-server }} * Editer le fichier de configuration '''50-server.cnf''' disponible dans le répertoire '''/etc/mysql/mariadb.conf.d''' puis rechercher la ligne : bind-address = localhost * À remplacer par : bind-address = <@IP_MARIADB_PUBLIQUE> * Redémarrer le service '''mariadb''' pou... »)
 
 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{Bases de Données}}
{{Bases de données}}


__TOC__
__TOC__
Ligne 20 : Ligne 20 :


{{ Box Console | objet=root@mariadb:~$ /etc/init.d/mariadb restart }}
{{ Box Console | objet=root@mariadb:~$ /etc/init.d/mariadb restart }}
== Paramétrage de la liaison SSL ==
=== Création de l’autorité de certification locale (AC) ===
Ce certificat permettra de signer les demandes de certificat pour le serveur de base de données et les différents clients pouvant s’y connecter.
L’ensemble des certificats et clés générées seront stockés dans le répertoire '''/etc/ssl/private'''.
==== Génération de la clé secrète ====
* Génération et stockage de la '''clé secrète''' de l’AC dans le fichier '''CA.key''' ''(ce fichier ne doit pas être divulgué)'' :
{{ Box Console | objet=root@mariadb:~$ openssl genrsa 2048 > CA.key }}
==== Génération du certificat ====
* Génération et stockage du '''certificat de l’AC''' dans le fichier '''CA.crt''' (ce fichier ne doit pas être divulgué) :
{{ Box Console | objet=root@mariadb:~$ openssl req -new -x509 -nodes -days 365000 -key CA.key -out CA.crt }}
=== Création d’un jeu de certificat pour le serveur de base de données ===
Le '''certificat''' ainsi que la '''clé''' générée ci-après, seront renseignés dans le fichier de configuration du serveur de base de données '''MariaDB'''.
==== Génération de la clé secrète et de la demande de certificat ====
* Génération et stockage de la '''clé secrète''' du serveur dans le fichier '''MariaDB.key''' et sa '''demande de certificat''' dans le fichier '''MariaDB.csr''' :
{{ Box Console | objet=root@mariadb:~$ openssl req -newkey rsa:2048 -days 365000 -nodes -keyout MariaDB.key -out MariaDB.csr
root@mariadb:~$ openssl rsa -in MariaDB.key -out MariaDB.key }}
==== Signature de la demande de certificat par l’AC ====
* '''Signature''' de la '''demande certificat''' pour le serveur de base de données et génération du certificat dans le fichier '''MariaDB.crt''' :
{{ Box Console | objet=root@mariadb:~$ openssl x509 -req -in MariaDB.csr -days 365000 -CA CA.crt -CAkey CA.key -set_serial 01 -out MariaDB.crt }}
=== Configuration de MariaDB ===
* Editer le fichier de configuration '''/etc/mysql/mariadb.conf.d/50-server.cnf''' puis dé-commenter et adapter les lignes suivantes :
ssl-ca = /etc/ssl/private/CA.crt
ssl-cert = /etc/ssl/private/MariaDB.crt
ssl-key = /etc/ssl/private/MariaDB.key
* Procéder au redémarrage du service '''MariaDB''' pour prendre en charge les modifications :
{{ Box Console | objet=root@mariadb:~$ /etc/init.d/mariadb restart }}
* Il est possible de rendre la '''liaison SSL''' obligatoire en ajoutant le paramètre suivant dans le fichier de configuration en plus des lignes déjà ajoutées :
require-secure-transport = off
=== Validation de la configuration ===
* Se connecter au serveur de base de données en root puis saisir la commande suivante :
{{ Box Console | objet=root@mariadb:~$ mysql -u root<br />
MariaDB [(non)]> SHOW VARIABLES LIKE '%ssl%'; }}
* Lorsque la '''liaison SSL''' est opérationnelle, la ligne '''have_ssl''' doit retourner comme valeur '''YES'''.
+---------------------+-----------------------------+
| Variable_name      | Value                      |
+---------------------+-----------------------------+
| have_openssl        | YES                        |
| <span style="color:green">have_ssl</span>            | <span style="color:green">YES</span>                        |
| ssl_ca              | /etc/ssl/private/CA.crt    |
| ssl_capath          |                            |
| ssl_cert            | /etc/ssl/private/SRV040.crt |
| ssl_cipher          |                            |
| ssl_crl            |                            |
| ssl_crlpath        |                            |
| ssl_key            | /etc/ssl/private/SRV040.key |
| version_ssl_library | OpenSSL 1.1.1n  15 Mar 2022 |
+---------------------+-----------------------------+
== Paramétrage du pare-feu ==
=== Matrice des flux autorisés ===
Par défaut, les flux non listés ci-dessous ne sont pas autorisés sur l’équipement.
{| class="wikitable" style="margin:auto"
|+ Matrice de flux
|-
! Source !! Protocole(s) !! Port(s) !! Description
|-
| * || tcp || 22 || Accès SSH, SFTP.
|-
| phpmyadmin.domaine.tld || tcp || 3306 || Accès MySQL ''(Dans le cas où [[PHPMyAdmin]] est installé sur le serveur web)''.
|-
| <@IP_SUPERVISION> || udp || 161,162 || Accès SNMP depuis serveur supervision.
|-
| * || icmp || &mdash; || Réponse aux requêtes ping.
|}
=== Configuration iptables sur la couche IPv4 ===
* Installation des paquets '''iptables''' (pare-feu) et '''iptables-persistent''' ''(sauvegarde persistante de la configuration)''.
{{ Box Console | objet=root@apache2:~# apt-get install iptables iptables-persistent -y }}
* Ajout des règles '''iptables''' pour autoriser les flux '''SSH''', '''ICMP''' et '''MySQL''' :
{{ Box Console | objet=root@apache2:~# iptables -A INPUT -p tcp --dport 22 -j ACCEPT<br />
root@apache2:~# iptables -A INPUT -p tcp -s <@IP_PHPMYADMIN> --dport 3306 -j ACCEPT<br />
root@apache2:~# iptables -A INPUT -p udp –m multiport -s <@IP_SUPERVISION> --dports 161,162 -j ACCEPT<br />
root@apache2:~# iptables –A INPUT –p icmp –j ACCEPT<br />
root@apache2:~# iptables –A INPUT –i lo –j ACCEPT<br />
root@apache2:~# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT<br />
root@apache2:~# iptables -P INPUT DROP }}
* Sauvegarde de la configuration et application automatique à chaque redémarrage du système.
{{ Box Console | objet=root@apache2:~# dpkg-reconfigure iptables-persistent }}
=== Configuration ip6tables sur la couche IPv6 ===
* Ajout des règles '''ip6tables''' pour autoriser les flux '''SSH''', '''ICMP''' et '''MySQL''' :
{{ Box Console | objet=root@apache2:~# iptables -A INPUT -p tcp --dport 22 -j ACCEPT<br />
root@apache2:~# ip6tables -A INPUT -p tcp -s <@IP_PHPMYADMIN> --dport 3306 -j ACCEPT<br />
root@apache2:~# ip6tables -A INPUT -p udp –m multiport -s <@IPV6_SUPERVISION> --dports 161,162 -j ACCEPT<br />
root@apache2:~# ip6tables –A INPUT –p icmpv6 –j ACCEPT<br />
root@apache2:~# ip6tables –A INPUT –i lo –j ACCEPT<br />
root@apache2:~# ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT<br />
root@apache2:~# ip6tables -P INPUT DROP }}
* Sauvegarde de la configuration et application automatique à chaque redémarrage du système.
{{ Box Console | objet=root@apache2:~# dpkg-reconfigure iptables-persistent }}
== Configuration supervision SNMP ==
* Installation du paquet snmpd.
{{ Box Console | objet=root@apache2:~# apt-get install snmpd }}
* Depuis le fichier de configuration '''/etc/snmp/snmpd.conf''', rechercher la ligne :
sysLocation
sysContact
* Puis, remplacer son contenu par :
sysLocation PARIS,DC5
sysContact webmaster@domaine.tld
* Rechercher la ligne :
agentaddress 127.0.0.1,[::1]
* Puis, remplacer son contenu par :
agentaddress <@IP_PUBLIC_MARIADB>
* Rechercher la ligne :
rocommunity public default –V systemonly
* Puis, remplacer son contenu par :
rocommunity public default
* Redémarrer le service '''snmp''' pour appliquer les changements.
{{ Box Console | objet=root@mariadb:~# service snmpd restart }}
== Synchronisation du temps ==
* Installation du paquet '''ntpdate''' :
{{ Box Console | objet=root@mariadb:~$ apt-get install ntpdate }}
* Depuis le fichier de configuration '''ntpdate''' disponible dans le répertoire '''/etc/default''', rechercher la ligne :
NTPSERVERS="0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org"
* À remplacer par ''(optionnel, si vous disposez d'un serveur NTP spécifique)'' :
NTPSERVERS="<@IP_NTP_SERVEUR>"
* Forcer la synchronisation du temps avec le serveur de temps :
{{ Box Console | objet=root@mariadb:~$ ntpdate <@IP_NTP_SERVEUR> }}


[[Category:Bases de données]]
[[Category:Bases de données]]

Dernière version du 6 juillet 2024 à 23:31

.:[ Bases de données ]:.

Installer MariaDB >> Opérations courantes

PHPMyAdmin


Archives : MySQL

Installation de MariaDB

  • Installation du paquet mariadb-server :

root@mariadb:~$ apt-get install mariadb-server

  • Editer le fichier de configuration 50-server.cnf disponible dans le répertoire /etc/mysql/mariadb.conf.d puis rechercher la ligne :
bind-address		= localhost
  • À remplacer par :
bind-address		= <@IP_MARIADB_PUBLIQUE>
  • Redémarrer le service mariadb pour prendre en compte les modifications :

root@mariadb:~$ /etc/init.d/mariadb restart

Paramétrage de la liaison SSL

Création de l’autorité de certification locale (AC)

Ce certificat permettra de signer les demandes de certificat pour le serveur de base de données et les différents clients pouvant s’y connecter. L’ensemble des certificats et clés générées seront stockés dans le répertoire /etc/ssl/private.

Génération de la clé secrète

  • Génération et stockage de la clé secrète de l’AC dans le fichier CA.key (ce fichier ne doit pas être divulgué) :

root@mariadb:~$ openssl genrsa 2048 > CA.key

Génération du certificat

  • Génération et stockage du certificat de l’AC dans le fichier CA.crt (ce fichier ne doit pas être divulgué) :

root@mariadb:~$ openssl req -new -x509 -nodes -days 365000 -key CA.key -out CA.crt

Création d’un jeu de certificat pour le serveur de base de données

Le certificat ainsi que la clé générée ci-après, seront renseignés dans le fichier de configuration du serveur de base de données MariaDB.

Génération de la clé secrète et de la demande de certificat

  • Génération et stockage de la clé secrète du serveur dans le fichier MariaDB.key et sa demande de certificat dans le fichier MariaDB.csr :

root@mariadb:~$ openssl req -newkey rsa:2048 -days 365000 -nodes -keyout MariaDB.key -out MariaDB.csr root@mariadb:~$ openssl rsa -in MariaDB.key -out MariaDB.key

Signature de la demande de certificat par l’AC

  • Signature de la demande certificat pour le serveur de base de données et génération du certificat dans le fichier MariaDB.crt :

root@mariadb:~$ openssl x509 -req -in MariaDB.csr -days 365000 -CA CA.crt -CAkey CA.key -set_serial 01 -out MariaDB.crt

Configuration de MariaDB

  • Editer le fichier de configuration /etc/mysql/mariadb.conf.d/50-server.cnf puis dé-commenter et adapter les lignes suivantes :
ssl-ca = /etc/ssl/private/CA.crt
ssl-cert = /etc/ssl/private/MariaDB.crt
ssl-key = /etc/ssl/private/MariaDB.key
  • Procéder au redémarrage du service MariaDB pour prendre en charge les modifications :

root@mariadb:~$ /etc/init.d/mariadb restart

  • Il est possible de rendre la liaison SSL obligatoire en ajoutant le paramètre suivant dans le fichier de configuration en plus des lignes déjà ajoutées :
require-secure-transport = off

Validation de la configuration

  • Se connecter au serveur de base de données en root puis saisir la commande suivante :

root@mariadb:~$ mysql -u root
MariaDB [(non)]> SHOW VARIABLES LIKE '%ssl%';

  • Lorsque la liaison SSL est opérationnelle, la ligne have_ssl doit retourner comme valeur YES.
+---------------------+-----------------------------+
| Variable_name       | Value                       |
+---------------------+-----------------------------+
| have_openssl        | YES                         |
| have_ssl            | YES                         |
| ssl_ca              | /etc/ssl/private/CA.crt     |
| ssl_capath          |                             |
| ssl_cert            | /etc/ssl/private/SRV040.crt |
| ssl_cipher          |                             |
| ssl_crl             |                             |
| ssl_crlpath         |                             |
| ssl_key             | /etc/ssl/private/SRV040.key |
| version_ssl_library | OpenSSL 1.1.1n  15 Mar 2022 |
+---------------------+-----------------------------+

Paramétrage du pare-feu

Matrice des flux autorisés

Par défaut, les flux non listés ci-dessous ne sont pas autorisés sur l’équipement.

Matrice de flux
Source Protocole(s) Port(s) Description
* tcp 22 Accès SSH, SFTP.
phpmyadmin.domaine.tld tcp 3306 Accès MySQL (Dans le cas où PHPMyAdmin est installé sur le serveur web).
<@IP_SUPERVISION> udp 161,162 Accès SNMP depuis serveur supervision.
* icmp Réponse aux requêtes ping.

Configuration iptables sur la couche IPv4

  • Installation des paquets iptables (pare-feu) et iptables-persistent (sauvegarde persistante de la configuration).

root@apache2:~# apt-get install iptables iptables-persistent -y

  • Ajout des règles iptables pour autoriser les flux SSH, ICMP et MySQL :

root@apache2:~# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
root@apache2:~# iptables -A INPUT -p tcp -s <@IP_PHPMYADMIN> --dport 3306 -j ACCEPT
root@apache2:~# iptables -A INPUT -p udp –m multiport -s <@IP_SUPERVISION> --dports 161,162 -j ACCEPT
root@apache2:~# iptables –A INPUT –p icmp –j ACCEPT
root@apache2:~# iptables –A INPUT –i lo –j ACCEPT
root@apache2:~# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
root@apache2:~# iptables -P INPUT DROP

  • Sauvegarde de la configuration et application automatique à chaque redémarrage du système.

root@apache2:~# dpkg-reconfigure iptables-persistent

Configuration ip6tables sur la couche IPv6

  • Ajout des règles ip6tables pour autoriser les flux SSH, ICMP et MySQL :

root@apache2:~# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
root@apache2:~# ip6tables -A INPUT -p tcp -s <@IP_PHPMYADMIN> --dport 3306 -j ACCEPT
root@apache2:~# ip6tables -A INPUT -p udp –m multiport -s <@IPV6_SUPERVISION> --dports 161,162 -j ACCEPT
root@apache2:~# ip6tables –A INPUT –p icmpv6 –j ACCEPT
root@apache2:~# ip6tables –A INPUT –i lo –j ACCEPT
root@apache2:~# ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
root@apache2:~# ip6tables -P INPUT DROP

  • Sauvegarde de la configuration et application automatique à chaque redémarrage du système.

root@apache2:~# dpkg-reconfigure iptables-persistent

Configuration supervision SNMP

  • Installation du paquet snmpd.

root@apache2:~# apt-get install snmpd

  • Depuis le fichier de configuration /etc/snmp/snmpd.conf, rechercher la ligne :
sysLocation
sysContact
  • Puis, remplacer son contenu par :
sysLocation	PARIS,DC5
sysContact	webmaster@domaine.tld
  • Rechercher la ligne :
agentaddress	127.0.0.1,[::1]
  • Puis, remplacer son contenu par :
agentaddress	<@IP_PUBLIC_MARIADB>
  • Rechercher la ligne :
rocommunity	public default –V systemonly
  • Puis, remplacer son contenu par :
rocommunity	public default
  • Redémarrer le service snmp pour appliquer les changements.

root@mariadb:~# service snmpd restart

Synchronisation du temps

  • Installation du paquet ntpdate :

root@mariadb:~$ apt-get install ntpdate

  • Depuis le fichier de configuration ntpdate disponible dans le répertoire /etc/default, rechercher la ligne :
NTPSERVERS="0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org"
  • À remplacer par (optionnel, si vous disposez d'un serveur NTP spécifique) :
NTPSERVERS="<@IP_NTP_SERVEUR>"
  • Forcer la synchronisation du temps avec le serveur de temps :

root@mariadb:~$ ntpdate <@IP_NTP_SERVEUR>