[Tuto/HowTo] Monter dossier distant sur Raspberry Pi & Ubuntu/Debian

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

[Tuto/HowTo] Monter dossier distant sur Raspberry Pi & Ubuntu/Debian

Message par voxdemonix » lun. avr. 25, 2016 12:45 pm

Licence du tuto : - [WTFPL] -
L'ensemble de ces tutos fonctionne sur : Raspbian, (X|K|L)Ubuntu, Debian et tout ses dérivés

Qu'est-ce qu'un montage distant ?
  • Un montage distant c'est lorsqu'on utilise un dossier local afin de mettre à distance des ressources (fichiers, dossiers) hébergé sur une autre machine.
    Ainsi lorsqu'on lit ou écrit dans le dossier, les actions sont en réalité effectuées sur la machine distante, de façon plus ou moins invisible (du point de vue programmation,humain).

Légende :
  1. Montage Webdav/DAVFS
  2. Montage Webdav/DAVFS via SSH Tunneling over Tor
  3. Montage SSHFS
  4. Montage SFTP
  5. Monter un volume/répertoire GlusterFS
  6. Montage Webdav/DAFVS2 cross-canal via SSH Tunneling
Modifié en dernier par voxdemonix le lun. sept. 11, 2017 2:32 pm, modifié 26 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

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

Re: [Tuto/HowTo] Monter dossier distant sur Raspberry Pi & Ubuntu/Debian

Message par voxdemonix » sam. avr. 30, 2016 11:20 pm

Montage Webdav/DAFVS2
      • DAFVS2 est entre autre utilisé pour monter localement des dossiers distant hébergés sur un serveur owncloud/nextcloud. Il utilise le protocole HTTP(S) se qui le rend plus lent (lag) mais compatible avec le Web.
        Si vous souhaitez effectuer le montage à travers internet (si vous êtes en adressage dynamique) il vous est conseillé d'utiliser un nom de domaine (ou plusieurs) et/ou un Tor Hidden Service.
        Par mesure de sécurité, Nextcloud/Owncloud permet (via votre pfoil utilisateur "Personnel"), de créer des password afin que vos applications puissent accéder à votre compte en diminuant les risques de sécurité en cas de piratage. (ces passwords ne permettent pas de modifier votre utilisateur, juste d'ajouter,lire et modifier des fichiers). Je vous conseil donc fortement de penser à utiliser ce genre de password pour la suite du tutoriel.

        Note : si votre système freeze (se gèle/plante) lorsque vous ouvrez un dossier distant plein de vidéos jetez un œil sur ce topic : [Tuto/HowTo] [GNU/Linux] Désactiver les prévisualisations (thumbnail) des fichiers vidéos sur Xubuntu
        Attention : Il y a des problèmes avec certains logiciels (exemple : jdownloader, transmission) qui ont des difficultés en lecture/écriture avec les montages webdav/davfs2.
    Liens utile :
    Pré-requis sur le client
    1. Installer les logiciels nécessaire
    2. Autoriser les utilisateurs non-root à monter le dossier
    3. Créer le point de montage local (adaptez à vos envies)
    4. Ajoutez l'utilisateur au groupe davfs2 (remplacez $USER par votre utilisateur)
    5. Créez le dossier de config de davfs2
    6. Copiez les fichiers de config de base dans votre dossier de config perso
      • Code : Tout sélectionner

        sudo cp /etc/davfs2/davfs2.conf $HOME/.davfs2/
        sudo cp /etc/davfs2/secrets $HOME/.davfs2
        sudo chown $USER $HOME/.davfs2/secrets
    7. Il faut ajouter les informations dans le fichier /home/user/.davfs2/secrets
      • Code : Tout sélectionner

        sudo nano $HOME/.davfs2/secrets
        Ajoutez à la fin du fichier la ligne suivante en l'adaptant :
    8. Accorder les bons droits sur les dossiers/fichiers de conf :
      • Code : Tout sélectionner

        sudo chown $USER $HOME/.davfs2/ -R
        sudo chmod 400 $HOME/.davfs2/secrets
        sudo chmod 700 $HOME/.davfs2/cache
    9. Télécharger le certificat SSL/TLS :
      • Code : Tout sélectionner

        openssl s_client -connect HOSTNAME:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > certificateOwncloud.pem
        Note : cette commande a fonctionné en locale mais étonnamment PAS via internet (une erreur étrange en est ressortis), Tor Browser arrive à la rescousse dans ces cas là. Vous vous rendez avec sur votre owncloud, vous cliquez sur le cadena situé à gauche de la barre d'adresse, ensuite la petite flèche puis "Plus d'informations". Dans la fenêtre qui s'ouvre allez dans l'onglet "Sécurité" et cliquez sur "Afficher le certificat". Onglet "Détails" et cliquez enfin sur "Exporter". Utilisez sftp pour expédier rapidement le certificat depuis votre PC vers votre raspberry pi.
    10. Déplacer le certificat dans le dossier des trusted
    11. Maintenant on va l'ajouter à la liste des trusted de davfs2
      • Code : Tout sélectionner

        sudo nano /etc/davfs2/davfs2.conf
        #mes certificats SSL
        trust_server_cert /etc/davfs2/certs/certificateOwncloud.pem

    Monter automatiquement au démarrage sur le client
    1. Ouvrez le fichier /etc/fstab
      • Code : Tout sélectionner

        sudo nano /etc/fstab
        Et ajoutez le lignes suivantes en les adaptant à votre configuration
        # Mon montage davfs2
        https://HOSTNAME:PORT/owncloud/remote.php/webdav/ /media/monPointDeMontageLocal davfs _netdev,rw,user 0 0


Erreurs :
  • /sbin/mount.davfs: wrong permissions set for cache directory /home/USER/.davfs2/cache/127.0.0.1-owncloud-remote.php-webdav+media-owncloud+USER
    • Code : Tout sélectionner

      sudo chown $USER /home/$USER/.davfs2/cache -R
      sudo chmod 700 /home/$USER/.davfs2/cache -R
    /sbin/mount.davfs: file /home/USER/.davfs2/secrets has wrong owner
    • Code : Tout sélectionner

      sudo chown $USER /home/$USER/.davfs2/secrets
      sudo chmod 600 /home/$USER/.davfs2/secrets
Modifié en dernier par voxdemonix le lun. sept. 04, 2017 2:04 pm, modifié 34 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

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

Re: [Tuto/HowTo] Monter dossier distant sur Raspberry Pi & Ubuntu/Debian

Message par voxdemonix » sam. avr. 30, 2016 11:57 pm

Montage Webdav/DAFVS2 à travers Tor Via SSH Tunneling
8-) 8-) [_SG1WF_] [_yeux1_]
    • Cette fois on va ouvrir un tunnel ssh avec auto-reconnexion en cas de perte de liaison qui transitera à travers le réseau Tor. Utiliser TLS (HTTPS) n'est pas requis dans ce cas de situation, mais tout à fait utilisable (ça fait 3 tunnels : Tor + SSH + TLS). En effet les données sont chiffrées à de multiples reprises dans les tunnels de données créés par le routage en oignons utilisé par Tor et ne sont déchiffrées par Tor que lorsqu'elles sont arrivées sur le Tor Hidden Service. De surcroît le tunnel de données SSH est lui aussi chiffré.
      Ensuite nous monterons le répertoire distant via davfs en suivant le tuto précédent juste en modifiant une ligne.
      Par contre avec l'utilisation de tor la bande passante (l'upload/download) est limitée et la consommation de ressources machine plus élevée.

      Attention : cette méthode lag et provoque un ralentissement désagréable du gestionnaire de fichiers (étrangement y compris dans le shell pour l'auto-complétion de nom de fichiers/dossiers même s'ils se trouvent sur le disque local, l'utilisation de "cd", "ls").
      Je vous conseil de désactiver la génération de miniatures (thumbnails) des vidéos en suivant ce topic [Tuto/HowTo] [GNU/Linux] Désactiver les prévisualisations (thumbnail) des fichiers vidéos sur Xubuntu

      Note : En utilisant ce script pour créer le tunnel SSH, vous pouvez créer un montage distant qui passe par le LAN quand vous êtes sur le même réseau que le serveur et via le réseau Tor lorsque vous êtes sur Internet. Ça blinde votre sécurité tout en diminuant la consommation électrique et ressource machine.
      Attention : Il y a des problèmes avec certains logiciels (exemple : jdownloader, transmission) qui ont des difficultés en lecture/écriture avec les montages webdav/davfs2.
  • Sources : Côté Serveur
    1. Tout d'abord, installez Tor et SSH:
    2. Éditez le fichier /etc/tor/torrc :
    3. Cherchez (CTRL+W) "hidden service" et dé-commentez (ou ajouter selon votre envie) les lignes suivantes :
      • Code : Tout sélectionner

            HiddenServiceDir /var/lib/tor/hidden_service/ssh
            HiddenServicePort 22 127.0.0.1:22
    4. Ensuite bien entendu créer le dossier /var/lib/tor/hidden_service/ssh et son cheminement :
      • Code : Tout sélectionner

        sudo mkdir /var/lib/tor/hidden_service
        sudo mkdir /var/lib/tor/hidden_service/ssh
        
    5. Accordez les permissions :
      • Code : Tout sélectionner

        sudo chown debian-tor:root -R /var/lib/tor/hidden_service/
        sudo chmod 700 -R /var/lib/tor/hidden_service/
    6. Redémarrez Tor :
    7. Récupérez l'adresse de l'hidden service :
      • Code : Tout sélectionner

        sudo cat /var/lib/tor/hidden_service/ssh/hostname
        Notez quelque part le retour de cette commande car ça sera utile pour la suite.
    Côté client :
    1. Installez les pré-requis :
      • Code : Tout sélectionner

        sudo apt-get install openssh-client autossh tor netcat davfs2 -y 
      Section SSH
    2. Rendre compatible le client ssh avec tor en éditant le fichier de configuration de ssh ( /etc/ssh/ssh_config ) afin d'ajouter un proxy local (netcat) :
    3. Ajoutez les lignes suivantes :
      • Code : Tout sélectionner

            Host *.onion
               ProxyCommand nc -xlocalhost:9050 -X5 %h %p
        ( CTRL+X = SAVE&QUIT )
    4. Générez vos clés :
      • Code : Tout sélectionner

        ssh-keygen -t ed25519 -o -a 100
        ssh-keygen -t rsa -b 4096 -o -a 100
    5. Exporter votre clés sur votre serveur :
      • Code : Tout sélectionner

        ssh-copy-id -i ~/.ssh/id_dsa.pub votreUserSurServeur@votreHiddenServiceSurServeur.onion
    6. Ajoutez la clés à votre client :
      • Code : Tout sélectionner

        ssh-add
        Note : si vous avez l'erreur Failed to add the host to the list of know hosts corrigez avec
    7. Adaptez cette ligne de commande à votre config puis testez la (elle va établir un tunnel de données ssh) :
      • Code : Tout sélectionner

        sudo autossh -M 0 -q -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -L 8443:127.0.0.1:443 userSystemDistant@Tor_Onion_Service
        Note : Si vous souhaitez passer par HTTP à la place de HTTPS remplacez 443 par 80 et 8443 par 80 (ainsi que dans le reste du tuto).
        Si vous suivez ce tuto en vue de vous connecter en DAVFS à owncloud, vous pouvez vérifier si le tunnel fonctionne simplement en tentant de joindre avec votre navigateur web (firefox) l'adresse 127.0.0.1:8443 (pour httpS) ou 127.0.0.1:8080 (pour du http). Si le tunnel fonctionne vous devriez tomber sur la pager de connexion de votre owncloud.
    8. Enfin, si le tout fonctionne correctement via le tunnel, ajoutez votre commande au fichier /etc/rc.local juste avant exit 0 afin de la lancer au démarrage :
      • Code : Tout sélectionner

        sudo nano /etc/rc.local
        Et ajoutez la commande autossh suivante en l'adaptant a votre config.
        • Code : Tout sélectionner

          su votreUserLocal -c 'autossh -M 0 -q -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -L 8443:127.0.0.1:443 votreUserDistan@monHiddenService.onion -f'
          sleep 10
          su votreUtilisateur -c "mount /media/monPointDeMontageLocal"
          votreUser => remplacez par l'utilisateur qui doit effectuer le montage
          /media/monPointDeMontageLocal => le path où vous souhaitez effectuer le montage
          Note : Si vous souhaitez passer par http à la place de https remplacez 443 par 80 et 8443 par 8080 (ainsi que dans le reste du tuto)
      Section WEBDAV/DAVFS2
    9. Autoriser les utilisateurs non-root à monter le dossier
    10. Créer le point de montage local (adaptez à vos envies)
    11. Ajoutez l'utilisateur au groupe davfs2 (remplacez $USER par votre utilisateur)
    12. Créez le dossier de config de davfs2
    13. Copiez les fichiers de config de base dans votre dossier de config perso
      • Code : Tout sélectionner

        cp /etc/davfs2/davfs2.conf $HOME/.davfs2/
        sudo cp /etc/davfs2/secrets $HOME/.davfs2
        sudo chown $USER $HOME/.davfs2/secrets
    14. Il faut ajouter les informations dans le fichier /home/user/.davfs2/secrets
      • Code : Tout sélectionner

        nano $HOME/.davfs2/secrets
        Ajoutez à la fin du fichier la ligne suivante en l'adaptant :
    15. Accorder les bons droits sur les dossiers/fichiers de conf :
      • Code : Tout sélectionner

        sudo chown $USER $HOME/.davfs2/ -R
        sudo chmod 400 $HOME/.davfs2/secrets
        sudo chmod 700 $HOME/.davfs2/cache
      Section TLS (https)
      Note : ne suivez cette partie que si vous passez par https. Comme signalé ci-haut la communication entre votre client et votre serveur est déjà sécurisé par SSH et Tor.
    16. Télécharger le certificat SSL/TLS :
      • Code : Tout sélectionner

        openssl s_client -connect HOSTNAME:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > certificateOwncloud.pem
        Note : cette commande a fonctionné en locale mais étonnamment PAS via internet (une erreur étrange en est ressortis), Tor Browser arrive à la rescousse dans ces cas là. Vous vous rendez avec sur votre owncloud, vous cliquez sur le cadena situé à gauche de la barre d'adresse, ensuite la petite flèche puis "Plus d'informations". Dans la fenêtre qui s'ouvre allez dans l'onglet "Sécurité" et cliquez sur "Afficher le certificat". Onglet "Détails" et cliquez enfin sur "Exporter". Utilisez sftp pour expédier rapidement le certificat depuis votre PC vers votre raspberry pi.
    17. Déplacer le certificat dans le dossier des trusted
    18. Maintenant on va l'ajouter à la liste des trusted de davfs2
      • Code : Tout sélectionner

        sudo nano /etc/davfs2/davfs2.conf
        #mes certificats SSL
        trust_server_cert /etc/davfs2/certs/certificateOwncloud.pem

    Monter automatiquement au démarrage sur le client
    1. Ouvrez le fichier /etc/fstab
Modifié en dernier par voxdemonix le mar. janv. 03, 2017 11:35 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 : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: [Tuto/HowTo] Monter dossier distant sur Raspberry Pi & Ubuntu/Debian

Message par voxdemonix » dim. mai 01, 2016 7:58 pm

Montage SSHFS Liens utile : Pré-requis sur le client
  1. Installer les logiciels nécessaire
  2. Ajouter votre utilisateur à la liste des utilisateurs autorisés à utiliser fuse
    • Note : remplacez $USER par l'utilisateur de votre choix (par défaut $USER = votre utilisateur courant (celui qui a ouvert la session sur votre machine)).
  3. Si votre serveur SSH est accessible via Tor Hidden Service, vous devez rendre compatible votre client en ajoutant (en mode admin) les lignes suivantes dans le fichier /etc/ssh/ssh_config :
    • (si vous ne savez pas comment éditer le fichier : ouvrez votre terminal et tapez sudo nano /etc/ssh/ssh_config, allez (molette) à la fin du fichier et copiez-collez les lignes citées ci-haut puis tapez CTRL+X pour sauvegarder et quitter)
Monter sur le client
  1. Créer le point de montage local (adaptez à vos envies)
  2. Effectuer le montage
    • Code : Tout sélectionner

      sshfs User@hostname_ou_ip:/dossier/distant/ /media/monPointDeMontageLocal
      Note : spécifier :/dossier/distant/ n'est pas obligatoire
Montage au démarrage sur le client
  1. Créer le point de montage local (adaptez à vos envies)
  2. Ajouter le montage à fstab afin de le monter au boot
    • Code : Tout sélectionner

      user@hostname_ou_ip:/dossier/distant                /media/monPointDeMontageLocal          fuse.sshfs           port=22,user,noatime,_netdev,allow_other     0 0
      Note : :/dossier/distant/ n'est pas obligatoire ; nofail permet d'empêcher le boot de crasher si le montage ne réussit pas [n'est plus reconnu], _netdev ordonne d'attendre que le réseau soit fonctionnel avant d'effectuer le montage; allow_other autorise les autres users à monter le dossier. Ajoutez noauto si vous voulez que le montage ne s'effectue qu'à la demande et non au démarrage de la machine.
Modifié en dernier par voxdemonix le jeu. sept. 07, 2017 1:36 pm, modifié 8 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

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

Re: [Tuto/HowTo] Monter dossier distant sur Raspberry Pi & Ubuntu/Debian

Message par voxdemonix » dim. mai 01, 2016 8:59 pm

Montage SFTP
    • Incompatible avec les listes de lecture VLC sans authentification par clés. Ce système est facilement compatible avec le réseau Tor et ne nécessité aucune installation sur la majorité des distributions grands publiques (y compris sur RPI), openssh-client étant pré-installé sur quasi toute.
Liens utile : Pré-requis sur le client
  1. Installer les logiciels
  2. Si votre serveur SSH est accessible via Tor Hidden Service, vous devez rendre compatible votre client en ajoutant (en mode admin) les lignes suivantes dans le fichier /etc/ssh/ssh_config :
    • (si vous ne savez pas comment éditer le fichier : ouvrez votre terminal et tapez sudo nano /etc/ssh/ssh_config, allez (molette) à la fin du fichier et copiez-collez les lignes citées ci-haut puis tapez CTRL+X pour sauvegarder et quitter)
Montage sur le client
  1. Ouvrez votre gestionnaire de fichier (Nautilus sur Ubuntu, Thunar sur Xubuntu, Dolphin sur Kubuntu) et tapez sur votre clavier CTRL+L.
  2. Entrez l'adresse suivante en l'adaptant à votre configuration sftp://maMachine_adresse_ip_ou_hostname (ajoutez :votrePort si vous avez changez le port par défaut de SSH sur le serveur)
Montage sur le client au démarrage
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

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

Re: [Tuto/HowTo] Monter un volume/répertoire GlusterFS sur Raspberry Pi & Ubuntu/Debian

Message par voxdemonix » ven. mai 06, 2016 12:52 am

musique d'ambiance : Festival Gleni Isaku [Unofficial Mix]

Monter un volume/répertoire GlusterFS

    • On utilise FUSE pour monter un dossier GlusterFS. Ces dossiers sont distribués entre X quantités de serveurs selon se que vous avez configuré et sont assez tolérant face aux pannes. Vous ne pouvez hélas pas configurer le client pour contacter votre grille mais un serveur qui lui sera en contact avec les autres serveurs (via aussi des liens direct (hostname)).

      Attention : Lorsqu'il y a un problème pour joindre le serveur ("Transport endpoint is not connected"), il peut arriver que la machine plante (freeze temporaire).
Liens Utile : Pré-requis :
  1. Installez glusterfs-client :
  2. Création du point de montage local :

Montage en ligne de commande d'un répertoire GlusterFS :
  • Adaptez puis entrez cette commande dans votre terminal
    • Code : Tout sélectionner

      mount -t glusterfs HOSTNAME:PORT:/NomVolume /media/monNouveauMontage
      • HOSTNAME => peut valoir l'ip, le nom de domaine ou tout path réseau valable
        :PORT => votre numero de port (non requis, supprimez aussi le deux points si vous utilisez le port par défaut)
        :/NomVolume => le nom du volume dans dans la grille GlusterFS
        /media/monNouveauMontage => mon point de montage local
        Infos : Manually Mounting Volumes

Monter le répertoire au démarrage/boot via script fait maison:
  1. Ouvrez votre éditeur de texte en créant votre script /opt/scripts/mountGlusterPartition.sh :
    • Code : Tout sélectionner

      sudo nano /opt/scripts/mountGlusterPartition.sh
      ( CTRL + X => Save&Quit )
  2. Ajoutez dedans les lignes après les avoir adapté à votre config :
    • Code : Tout sélectionner

      #!/bin/bash
      sleep 10 #req if system is on SSD
      sudo mount -t glusterfs 127.0.0.1:/NomVolume /media/superPartition
  3. Rendez votre script exécutable et accordez lui les bons droits d'accès:
  4. Ajoutez au fichier /etc/rc.local juste avant exit 0 l'appel de votre script afin de la lancer votre script au démarrage. Pour se faire éditez /etc/rc.local


[NE FONCTIONNE PAS] Montage d'un répertoire GlusterFS au démarrage/boot via fstab:
  1. Ouvrez votre fichier /etc/fstab en root :
  2. Ajoutez dedans cette ligne après l'avoir adaptez à votre config :
    • Code : Tout sélectionner

      HOSTNAME:PORT:/NomVolume /media/monNouveauMontage glusterfs defaults,_netdev,nofail 0 0
      • HOSTNAME => peut valoir l'ip, le nom de domaine ou tout path réseau valable d'un des server du cluster
        :PORT => votre numero de port (non requis, supprimez aussi le deux points si vous utilisez le port par défaut)
        :/NomVolume => le nom du volume dans dans la grille GlusterFS
        /media/monNouveauMontage => mon point de montage local
        _netdev => attend que le réseau soit prêt pour tenter le montage
        nofail => empêche le boot de crasher si le montage échoue
        Infos : Manually Mounting Volumes



Glusterfs-client Retour d'expérience
  • Utilisation en local uniquement
    • Aucun soucis détecté. Il faut juste retarder le démarrage des volumes et leur montage si le système est sur un SSD.
    Bugs et erreurs
    • Lorsque le node qui sert de point de montage reboot il faut démonter/remonter le point de montage si non il ne fonctionne plus ("transport endpoint is not connected")
      Leur site où les gens reportent les problèmes à une interface juste bonne à jeter.
Modifié en dernier par voxdemonix le mar. oct. 03, 2017 1:49 pm, modifié 18 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

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

[Tuto/HowTo] [GNU/Linux] Montage Webdav/DAFVS2 cross-canal via SSH Tunneling

Message par voxdemonix » jeu. déc. 15, 2016 10:56 pm

[Tuto/HowTo] [GNU/Linux] Montage Webdav/DAFVS2 cross-canal via SSH Tunneling
    • Ensemble nous allons monter un dossier distant hébergé sur le cloud (nextcloud/owncloud) grâce à DAFVS2 et un tunnel SSH.
      Selon que vous êtes connecté sur votre réseau local ou non le script que nous allons utiliser ici choisira entre créer un Tunnel SSH en LAN ou en WAN/Tor suivant vos préférences.
      Les communications entre le(s) client(s) seront en permanence chiffrées par SSH et si vous passez par Tor lors de vos déplacements alors le routage en oignons s'ajoutera. Nous contacterons toujours le serveur via http, ainsi vous pourrez choisir entre http et https (http+TLS). Sachez toute fois que TLS (https) n'est pas nécessaire (il est moins solide que SSH) et consomme des ressources supplémentaires.

      Note : si votre système freeze (se gèle/plante) lorsque vous ouvrez un dossier distant plein de vidéos jetez un œil sur ce topic : [Tuto/HowTo] [GNU/Linux] Désactiver les prévisualisations (thumbnail) des fichiers vidéos sur Xubuntu
      Attention : Il y a des problèmes avec certains logiciels (exemple : jdownloader, transmission) qui ont des difficultés en lecture/écriture avec les montages webdav/davfs2.
Liens utile :
Pré-requis sur le client
  1. Installer les logiciels nécessaire
  2. Autoriser les utilisateurs non-root à monter le dossier
  3. Créer le point de montage local (adaptez à vos envies)
  4. Ajoutez l'utilisateur au groupe davfs2 (remplacez $USER par votre utilisateur)
    • Code : Tout sélectionner

      sudo adduser $USER davfs2
      • $USER => vaut l'utilisateur par défaut. Remplacez cette valeur par l'utilisateur qui doit effectuer le montage (par exemple pisave si vous suivez ce tuto)
  5. Créez le dossier de config de davfs2
  6. Copiez les fichiers de config de base dans votre dossier de config perso
    • Code : Tout sélectionner

      cp /etc/davfs2/davfs2.conf $HOME/.davfs2/
      sudo cp /etc/davfs2/secrets $HOME/.davfs2
      sudo chown $USER $HOME/.davfs2/secrets
  7. Il faut ajouter les informations dans le fichier /home/user/.davfs2/secrets
    • Code : Tout sélectionner

      nano $HOME/.davfs2/secrets
      Ajoutez à la fin du fichier la ligne suivante en l'adaptant :
  8. Accorder les bons droits sur les dossiers/fichiers de conf :
    • Code : Tout sélectionner

      sudo chown $USER $HOME/.davfs2/ -R
      sudo chmod 400 $HOME/.davfs2/secrets
      sudo chmod 700 $HOME/.davfs2/cache
  9. Si vous souhaitez passer par https (http+TLS) au lieu de http suivez ces procédures si non passez au numéro suivant
    1. Télécharger le certificat SSL/TLS :
      • Code : Tout sélectionner

        openssl s_client -connect HOSTNAME:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > certificateOwncloud.pem
        Note : cette commande a fonctionné en locale mais étonnamment PAS via internet (une erreur étrange en est ressortis), Tor Browser arrive à la rescousse dans ces cas là. Vous vous rendez avec sur votre owncloud, vous cliquez sur le cadena situé à gauche de la barre d'adresse, ensuite la petite flèche puis "Plus d'informations". Dans la fenêtre qui s'ouvre allez dans l'onglet "Sécurité" et cliquez sur "Afficher le certificat". Onglet "Détails" et cliquez enfin sur "Exporter". Utilisez sftp pour expédier rapidement le certificat depuis votre PC vers votre raspberry pi.
    2. Déplacer le certificat dans le dossier des trusted (de confiance)
    3. Maintenant on va l'ajouter à la liste des trusted (de confiance) de davfs2
      • Code : Tout sélectionner

        sudo nano /etc/davfs2/davfs2.conf
        #mes certificats SSL
        trust_server_cert /etc/davfs2/certs/certificateOwncloud.pem
  10. Rendez compatible le client ssh avec le réseau Tor
  11. Générez vos clés de chiffrement
    • Code : Tout sélectionner

      ssh-keygen -t ed25519 -o -a 100
      ssh-keygen -t rsa -b 4096 -o -a 1042
  12. Exportez votre clés sur votre server
  13. Créez le dossier /opt/scripts
  14. Créez le script
  15. Ajoutez le code suivant en l'adaptant
    • Code : Tout sélectionner

      #!/bin/bash
      #  -> WTFPL - infos script : https://www.0rion.netlib.re/forum4/viewtopic.php?f=34&t=223&p=942#p942
      # -> code by voxdemonix <-
      
      	#pour tester que la création de tunnel fonctionne vous pouvez adapter la ligne suivante puis la lancer dans votre shell
      #su myUser -c 'autossh -M 0 -q -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -L 8080:127.0.0.1:80 myUserServer@HOSTNAME'
      
      
      IpOwncloudLocale="192.168.1.42" # l'adresse IP locale de votre serveur hébergeant owncloud
      AdresseServerOnion="monTorHiddenService.onion"
      MacOwncloudLocal="00:00:00:00:00:00" #l'adresse mac du serveur hébergeant owncloud (tapez ifconfig dans un terminal sur votre server pour la voir)
      UserLocalForSshTunneling="myUserLocal" # l'user a utiliser sur votre ordinateur pour le montage du tunnel
      UserRemoteForSshTunneling="myUserServer" # l'user a utiliser côté server ( /!\ n'utilisez jamais root !)
      portEntree="8080" # le port sur le pc local, remplacez par 8443 si vous utilisez httpS
      portSortie="80" # le port sur le serveur, remplacez par 443 si vous utilisez httpS
      monPointDeMontage="/media/monPointDeMontage/" #le path de votre point de montage sur votre client
      
      if [ ! "$SUDO_USER" ]; then
      exit 0
      fi
              # boucle qui permet d'attendre que le réseau soit connecté
      stop="0"
      while [ $stop -lt 1 ]
      do
      sleep 120       # temps d'attente entre chaque tentative
      
      _IP=$(hostname -I) || true
      if [ "$_IP" ]; then
              #printf "My IP address is %s\n" "$_IP"
              stop=1
      fi
      done
      
      ping $IpOwncloudLocale -c 1 >> /dev/null 2>&1
      macRecover=$(arp -n | grep -i -o $MacOwncloudLocal)
      
      if [ "$macRecover" == "$MacOwncloudLocal" ]; then
      	su $UserLocalForSshTunneling -c "autossh -M 0 -q -N -o 'ServerAliveInterval 60' -o 'ServerAliveCountMax 3' -L $portEntree:127.0.0.1:$portSortie $UserRemoteForSshTunneling@$IpOwncloudLocale -f"
      else
      	su $UserLocalForSshTunneling -c "autossh -M 0 -q -N -o 'ServerAliveInterval 60' -o 'ServerAliveCountMax 3' -L $portEntree:127.0.0.1:$portSortie $UserRemoteForSshTunneling@$AdresseServerOnion -f"
      fi
      sleep 10
      su $UserLocalForSshTunneling -c "mount $monPointDeMontage"
      
      
      
      • IpOwncloudLocale="192.168.1.42" => l'adresse IP locale de votre serveur hébergeant owncloud
        AdresseServerOnion="monTorHiddenService.onion" => l'hostname WAN ou l'adresse Tor Hidden Service au choix
        MacOwncloudLocal="00:00:00:00:00:00" => l'adresse mac du serveur hébergeant owncloud (tapez ifconfig dans un terminal sur votre server pour la voir)
        UserLocalForSshTunneling="myUserLocal" => l'user a utiliser sur votre ordinateur pour le montage du tunnel
        UserRemoteForSshTunneling="myUserServer" => l'user a utiliser côté server ( /!\ n'utilisez jamais root !)
        portEntree="8080" => le port sur le pc local, remplacez par 8443 si vous utilisez httpS
        portSortie="80" => le port sur le serveur, remplacez par 443 si vous utilisez httpS
  16. Rendez exécutable le script

Monter automatiquement au démarrage sur le client
  1. Éditez /etc/rc.local
  2. Ajoutez la ligne suivante juste avant exit 0
  3. Ouvrez le fichier /etc/fstab
    • Code : Tout sélectionner

      sudo nano /etc/fstab
      Et ajoutez le lignes suivantes en les adaptant à votre configuration
      # Mon montage davfs2
      http://127.0.0.1:8080/cloud/remote.php/webdav/ /media/monPointDeMontage davfs _netdev,rw,user,noauto 0 0
      • 8080 => le port d'entrée du tunnel (dans ce tuto 8080 pour http et 8443 pour https)
        /cloud/remote.php => l'URL sur votre serveur pour joindre le fichier remote.php de nextcloud/owncloud
Erreurs :
  • /sbin/mount.davfs: wrong permissions set for cache directory /home/USER/.davfs2/cache/127.0.0.1-owncloud-remote.php-webdav+media-owncloud+USER
    • Code : Tout sélectionner

      sudo chown $USER /home/USER/.davfs2/cache -R
      sudo chmod 700 /home/USER/.davfs2/cache -R

    /sbin/mount.davfs: file /home/USER/.davfs2/secrets has wrong owner
    • Code : Tout sélectionner

      sudo chown $USER /home/USER/.davfs2/secrets
      sudo chmod 600 /home/USER/.davfs2/secrets
~ 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é