Installer MariaDB

De NCad Wiki
Version datée du 6 juillet 2024 à 23:31 par Cacheln (discussion | contributions) (→‎Configuration supervision SNMP)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

.:[ 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>