PmaControl logo PmaControl
  • Accueil
  • PmaControl
    • Agents IA 13 agents on-premise
    • Nos offres Community, Cloud, On-Premise, Premium
    • Documentation Guides, API, architecture
    • Clients 28+ entreprises
    • FAQ 25 questions / 7 catégories
    Bases de données
    • MariaDB 30 articles
    • MySQL 10 articles
    • Galera Cluster 6 articles
    • MaxScale 3 articles
    • ProxySQL 2 articles
    • Amazon Aurora MySQL 0 article
    • Azure Database 0 article
    • ClickHouse 0 article
    • GCP CloudSQL 0 article
    • Percona Server 0 article
    • SingleStore 0 article
    • TiDB 0 article
    • Vitess 0 article
    Solutions
    • Support 24×7 Urgences MariaDB & MySQL
    • Observabilité SQL Monitoring, alertes, topologie
    • Haute disponibilité Réplication, failover, Galera
    • Disaster Recovery Backup, restore, RPO/RTO
    • Sécurité & conformité Audit, RGPD, SOC2
    • Migration & upgrade Zero downtime, pt-osc, gh-ost
  • Nos offres
  • Ressources
    • Documentation Guides techniques & API
    • FAQ 25 questions fréquentes
    • Témoignages Retours clients & cas d'usage
    • Blog Articles & insights
    • Roadmap Fonctionnalités à venir
    Domaines d'expertise
    • Observabilité SQL Monitoring, alertes, topologie Dot3
    • Haute disponibilité Réplication, failover, Galera
    • Sécurité & conformité Audit, RGPD, SOC2, ISO 27001
    • Disaster Recovery Backup, restore, RPO/RTO
    • Performance & optimisation Digests, EXPLAIN, tuning
    • Migration & upgrade Zero downtime, pt-osc
    Liens rapides
    • Wiki GitHub 26 pages — install, engine, plugins
    • Code source Repository GitHub officiel
    • Support 24×7 Urgences MariaDB & MySQL
    • Réserver une démo 30 min — architecture réelle
  • Support 24×7
  • Réserver une démo
Réserver une démo
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文
← Retour au blog

Prévenir le vol de données : édition Galera

Publié le 12 mars 2025 Par Sylvain ARBAUDIE
galera mariadb security sst
Partager X LinkedIn Facebook Email PDF
Prévenir le vol de données : édition Galera

Le scénario cauchemar

Imaginez : un attaquant configure un serveur MariaDB avec les bons paramètres wsrep, connaît l'adresse du cluster Galera et le mot de passe SST. Il rejoint le cluster. Galera détecte un nouveau nœud sans données et déclenche un State Snapshot Transfer (SST) — un transfert complet de toutes les données du cluster vers le nœud attaquant.

En quelques minutes (ou heures selon la taille de la base), l'attaquant possède une copie intégrale de votre base de données. Pas d'injection SQL, pas d'exploitation de vulnérabilité applicative. Juste un JOIN au cluster avec les bonnes credentials.

Ce n'est pas de la science-fiction. Selon le rapport Verizon 2024 sur les fuites de données, 35% des violations de données impliquent des menaces internes — des employés, des sous-traitants, ou des personnes ayant accès légitime à l'infrastructure.

Comment fonctionne le SST

Le State Snapshot Transfer est le mécanisme par lequel Galera initialise un nouveau nœud. Quand un nœud rejoint le cluster sans données (ou avec des données trop anciennes pour un IST incrémental), le cluster déclenche un SST :

  1. Le nœud donneur (un membre existant du cluster) est sélectionné
  2. Le donneur effectue un backup complet (via mariabackup, rsync ou mysqldump)
  3. Le backup est envoyé au nœud joignant via le réseau
  4. Le nœud joignant restaure le backup et rejoint le cluster

Le problème : par défaut, n'importe quel nœud avec les bonnes informations de cluster peut déclencher un SST. Il n'y a pas de liste blanche, pas de vérification d'identité du nœud joignant.

La configuration minimale pour une attaque

Ce dont un attaquant a besoin :

[mysqld]
wsrep_cluster_address = gcomm://10.0.1.10,10.0.1.11,10.0.1.12
wsrep_sst_method = mariabackup
wsrep_sst_auth = sst_user:sst_password

Trois informations : l'adresse du cluster, la méthode SST, et les credentials SST. Dans beaucoup d'organisations, ces informations sont stockées dans des fichiers de configuration non chiffrés, des playbooks Ansible en clair, ou des dépôts Git privés.

Pourquoi TLS ne suffit pas

"Mais nous utilisons TLS pour le trafic Galera !" — c'est une objection fréquente. Et elle est insuffisante.

TLS chiffre le trafic entre les nœuds, mais il ne vérifie pas nécessairement l'identité du nœud joignant. Même avec TLS, si l'attaquant possède un certificat signé par la même CA (ce qui est souvent le cas dans les déploiements internes avec une PKI d'entreprise), il peut rejoindre le cluster.

De plus, beaucoup de déploiements Galera n'utilisent pas la vérification mutuelle des certificats (mutual TLS). Ils activent TLS pour le chiffrement mais pas pour l'authentification.

La solution : wsrep_allow_list

Depuis MariaDB 10.10, la variable wsrep_allow_list offre un mécanisme de liste blanche IP pour les nœuds autorisés à rejoindre le cluster :

[mysqld]
wsrep_allow_list = 10.0.1.10,10.0.1.11,10.0.1.12

Seuls les nœuds dont l'adresse IP figure dans la liste peuvent rejoindre le cluster. Un nœud avec une IP non listée sera rejeté, même s'il possède les bonnes credentials SST et les bons certificats TLS.

C'est simple, efficace, et c'est la première ligne de défense que tout cluster Galera devrait avoir.

Défense en profondeur

La sécurité d'un cluster Galera ne repose pas sur un seul mécanisme. Voici une approche de défense en profondeur :

1. wsrep_allow_list — Filtrage réseau

wsrep_allow_list = 10.0.1.10,10.0.1.11,10.0.1.12

Restreindre les IPs autorisées à rejoindre le cluster.

2. TLS mutuel — Authentification des nœuds

wsrep_provider_options = "socket.ssl=yes;socket.ssl_key=/etc/mysql/ssl/server-key.pem;socket.ssl_cert=/etc/mysql/ssl/server-cert.pem;socket.ssl_ca=/etc/mysql/ssl/ca.pem"

Chaque nœud doit présenter un certificat signé par la CA du cluster. Pas de certificat valide = pas de connexion.

3. Réseau isolé — Segmentation

Le trafic Galera (ports 4567, 4568, 4444) devrait circuler sur un réseau dédié, isolé du réseau applicatif et du réseau de management. Un VLAN dédié ou un réseau overlay (WireGuard, IPsec) est recommandé.

4. Pare-feu — Filtrage des ports

# iptables : n'autoriser que les IPs du cluster sur les ports Galera
iptables -A INPUT -p tcp -s 10.0.1.10 --dport 4567 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.1.11 --dport 4567 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.1.12 --dport 4567 -j ACCEPT
iptables -A INPUT -p tcp --dport 4567 -j DROP

5. Credentials SST chiffrées

Ne stockez jamais les mots de passe SST en clair dans les fichiers de configuration. Utilisez des secrets managers (Vault, AWS Secrets Manager) ou au minimum le chiffrement de fichiers de configuration.

Auditer votre cluster

Vérifiez dès maintenant l'état de sécurité de votre cluster Galera :

-- Vérifier si wsrep_allow_list est configuré
SHOW VARIABLES LIKE 'wsrep_allow_list';

-- Vérifier l'état TLS de Galera
SHOW STATUS LIKE 'wsrep_connected';
SHOW VARIABLES LIKE 'wsrep_provider_options';

-- Lister les nœuds actuels du cluster
SELECT * FROM information_schema.WSREP_MEMBERSHIP;

Si wsrep_allow_list est vide, votre cluster est vulnérable. Configurez-le immédiatement.

Conclusion

La vulnérabilité SST de Galera est un vecteur d'attaque sous-estimé. Un nœud non autorisé peut obtenir une copie complète de votre base de données simplement en rejoignant le cluster. La solution est simple : wsrep_allow_list + TLS mutuel + réseau isolé + pare-feu.

35% des fuites de données sont des menaces internes. Votre cluster Galera est-il protégé ?


Cet article a été initialement publié sur Medium.

Partager X LinkedIn Facebook Email PDF
← Retour au blog

Commentaires (0)

Aucun commentaire pour le moment.

Laisser un commentaire

PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
Mentions légales GitHub Contact
N'attendez pas l'incident pour comprendre votre architecture. © 2014-2026 PmaControl — 68Koncept