[Tuto/HowTo] [GNU/Linux] Gluster et TLS (SSL)

Avatar du membre
voxdemonix
Messages : 1336
Enregistré le : lun. févr. 02, 2015 7:28 pm

[Tuto/HowTo] [GNU/Linux] Gluster et TLS (SSL)

Message par voxdemonix » ven. août 25, 2017 1:59 pm

English version : [Tuto/HowTo] [GNU/Linux] Gluster and TLS (SSL)

Introduction
  • Par défaut les communications de glusterfs-server et de glusterfs-client ne sont pas chiffrées. Glusterfs peut néanmoins utiliser TLS (ex SLL) pour chiffrer les communications et casser ainsi toute tentative de MITM.
    Ensemble, nous allons voir comment.

    [_turban_] Attention [_Sith1_]
    • Pour une raison inconnue, il arrive régulièrement que les certificats TLS "expirent". Vous vous retrouverez avec des "State: Peer in Cluster (Disconnected)" lorsque vous lancez la commande "gluster peer status". Dans /var/log/glusterfs/etc-glusterfs-glusterd.vol.log vous trouverez des lignes du style "SSL routines:ssl3_read_bytes:sslv3 alert certificate expired". Reforger les certificats et les clés privées semble régler le problème.



Les fichiers dont à besoin glusterfs pour le chiffrement via TLS
/etc/ssl/glusterfs.pem
  • Votre certificat. Ce fichier unique doit être sur chaque noeud et ne doit pas être partagé.
/etc/ssl/glusterfs.key
  • Votre clés privée. Elle doit être disponible sur chacun des Noeuds et clients.
/etc/ssl/glusterfs.ca
  • Ce fichier doit être à l'identique sur toutes les machines du cluster, autant client que serveur.
/var/lib/glusterd/secure-access
  • Fichier vide dont l'existence permet à glusterfs de savoir qu'il doit activer TLS. Doit être présent sur toutes les machines du cluster.



Mise en place
  1. On se rend dans le dossier /etc/ssl
  2. Création des clés
  3. Création des certificats, remplacez hostnameNode par vos valeus - à répéter pour chaque node (server & client)
    • Code : Tout sélectionner

      sudo openssl req -new -x509 -key glusterfs.key -subj "/CN=hostnameNODE" -out glusterfs_hostnameNode.pem
  4. Concaténation des certificats (client & server), pour les serveurs
    • Code : Tout sélectionner

      cat glusterfs_hostnameNode.pem glusterfs_hostnameNode.pem glusterfs_hostnameNode.pem glusterfs_hostnameNode.pem > glusterfs_server.ca
  5. Concaténation des certificats (server), pour les clients
    • Code : Tout sélectionner

      cat glusterfs_hostnameNode.pem glusterfs_hostnameNode.pem glusterfs_hostnameNode.pem glusterfs_hostnameNode.pem > glusterfs_client.ca
      Note : autant utiliser directement celle juste ci-haut
  6. On prépare l'export
    • Code : Tout sélectionner

      mkdir /tmp/gluster
      cp /etc/ssl/gluster* /tmp/gluster/
      chmod 777 -R /tmp/gluster/
  7. Envoyez sur chaque Noeuds sa clés privé (.key) et son certificat (.pem)
    Exemple en lançant la commande depuis un client
    • Code : Tout sélectionner

      scp monUser@machineQuiAGenereLesCertif:/tmp/gluster/glusterfs_hostnameNode.pem /etc/ssl/
  8. On exporte maintenant le certificat concaténé sur tout les serveurs
    Exemple en lançant la commande depuis un client
    • Code : Tout sélectionner

      scp monUser@machineQuiAGenereLesCertif:/tmp/gluster/glusterfs_server.ca /etc/ssl/glusterfs_server.ca
  9. On exporte maintenant le certificat concaténé sur tout les clients
    Exemple en lançant la commande depuis un client
    • Code : Tout sélectionner

      scp monUser@machineQuiAGenereLesCertif:/tmp/gluster/glusterfs_client.ca /etc/ssl/glusterfs_client.ca
  10. Activer le chiffrement côté serveur (à reproduire sur chaque serveur)
    • Code : Tout sélectionner

      sudo touch /var/lib/glusterd/secure-access
      service glusterfs-server restart
  11. Activer le chiffrement côté client (à reproduire sur chaque client)
Modifié en dernier par voxdemonix le dim. nov. 19, 2017 2:08 pm, modifié 14 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1336
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: Gluster et TLS (SSL)

Message par voxdemonix » ven. août 25, 2017 3:08 pm

Activer le chiffrement des communications d'un volume
Note : il est conseillé de démonter (umount) les dossiers glusterfs déjà monté sur les clients.
  • Code : Tout sélectionner

    gluster volume stop VOLNAME
    gluster volume set VOLNAME server.ssl on
    gluster volume set VOLNAME client.ssl on
    gluster volume start VOLNAME

Désactiver le chiffrement des communications d'un volume
Note : il est conseillé de démonter (umount) les dossiers glusterfs déjà monté sur les clients.
  • Code : Tout sélectionner

    gluster volume stop VOLNAME
    gluster volume set VOLNAME server.ssl off
    gluster volume set VOLNAME client.ssl off
    gluster volume start VOLNAME
Modifié en dernier par voxdemonix le ven. août 25, 2017 3:15 pm, modifié 2 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1336
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: Gluster et TLS (SSL)

Message par voxdemonix » ven. août 25, 2017 3:13 pm

~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1336
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: Gluster et TLS (SSL)

Message par voxdemonix » ven. août 25, 2017 3:33 pm

Exemple

  • Code : Tout sélectionner

    	# on prépare notre répertoire de travail
    cd /etc/ssl
    mkdir /tmp/gluster
    
    
    	# on generale la clés
    sudo openssl genrsa -out glusterfs.key 2048
    
    	# on génère les certificat
    sudo openssl req -new -x509 -key glusterfs.key -subj "/CN=0rionServerOne.RAID" -out gluster_0rionServerOne.RAID.pem
    sudo openssl req -new -x509 -key glusterfs.key -subj "/CN=0rionServerTwo.RAID" -out gluster_0rionServerTwo.RAID.pem
    sudo openssl req -new -x509 -key glusterfs.key -subj "/CN=0rionServerThree.RAID" -out gluster_0rionServerThree.RAID.pem
    sudo openssl req -new -x509 -key glusterfs.key -subj "/CN=0rionClientOne" -out gluster_0rionClientOne.pem
    
    	#concatenation certificat TLS
    cat gluster_0rionClientOne.pem gluster_0rionServerOne.RAID.pem gluster_0rionServerTwo.RAID.pem gluster_0rionServerThree.RAID.pem > glusterfs.ca
    
    # on expedie le tout dans le répertoire de travail
    cp /etc/ssl/gluster* /tmp/gluster/
    chmod 777 -R /tmp/gluster/
    
    	#sur tous
    sudo scp voxdemonix@192.168.1.42:/tmp/gluster/glusterfs.ca /etc/ssl/glusterfs.ca
    sudo scp voxdemonix@192.168.1.42:/tmp/gluster/glusterfs.key /etc/ssl/glusterfs.key
    
    
    	#sur chacun
    sudo scp voxdemonix@192.168.1.42:/tmp/gluster/gluster_0rionServerOne.RAID.pem /etc/ssl/glusterfs.pem
    
    sudo scp voxdemonix@192.168.1.42:/tmp/gluster/gluster_0rionServerTwo.RAID.pem /etc/ssl/glusterfs.pem
    
    sudo scp voxdemonix@192.168.1.42:/tmp/gluster/gluster_0rionClientOne.pem /etc/ssl/glusterfs.pem
    
    sudo scp voxdemonix@192.168.1.42:/tmp/gluster/gluster_0rionServerThree.RAID.pem /etc/ssl/glusterfs.pem
    
    
    service glusterfs-server restart
    
    
    
    
    
    
    	#TEST
    gluster volume create mediatheque replica 2 transport tcp,rdma 0rionServerTwo.RAID:/media/superPartition/gluster/mediatheque/ 0rionServerOne.RAID:/media/superPartition/gluster/mediatheque/ force
    
    	# on active ssl et n'autorise que certaines plages d'adresses IP
    gluster volume set mediatheque server.ssl on
    gluster volume set mediatheque client.ssl on
    gluster volume set mediatheque auth.allow 10.8.*.*,192.168.*.*,127.0.*.*
    gluster volume start mediatheque
    	# on effectue le montage
    mount -t glusterfs 0rionServerTwo.RAID:/mediatheque /media/mediatheque
    
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Qui est en ligne

Utilisateurs parcourant ce forum : CommonCrawl [Bot] et 0 invité