Tuto FreeNAS 9.3 : Certificats et WebDAV

Continuons notre configuration du NAS : nous avons précédemment créé un partage CIFS pour accéder au stockage depuis un PC situé sur le réseau local. Une fonctionnalité intéressante peut être d’accéder à des données depuis l’extérieur, depuis n’importe quel poste connecté à Internet, voyons ça dans un premier temps avec WebDAV…

De la sécurité des données

On vient de parler d’accéder à des données personnelles depuis n’importe quel poste Internet… c’est alléchant pour notre usage perso mais ça veut aussi dire que n’importe qui parmi les 1,5 milliards d’appareils connectés à ce jour peut potentiellement y accéder aussi. La première des priorités est donc d’assurer la sécurité d’accès à nos données et la confidentialité lors de leur transfert.

Concernant l’accès, tout dépend de l’endroit où vous allez mettre le curseur de la sécurité : ça peut être ouvert à tous vents, protégé par un mot de passe, uniquement accessible depuis votre réseau via VPN, derrière un VPN avec authentification par clé ou carrément interdit : pour ce dernier cas, fin du tuto 🙂

De la même façon on peut imaginer un partage en lecture seule, permettant de montrer des photos à mamie ou visionner une vidéo stockée sur le NAS depuis n’importe où, ou bien un partage en lecture-écriture permettant l’upload, mais aussi la suppression ou modification…

A titre d’exemple tout à fait personnel, j’utilise de l’extérieur un accès SSH avec authentification par clé et un accès VPN par mot de passe via le serveur de la Freebox pour la navigation web depuis les hotspots wifi publiques (hôtels, etc…) et depuis le VPN j’accède occasionnellement à mes partages CIFS ou à l’interface de FreeNAS si besoin.

Ici nous allons nous voir un autre moyen : le partage WebDAV, très pratique car il permet d’accéder à ses fichiers depuis n’importe quel navigateur web moderne, c’est donc assez universel. La connexion sera bien sûr sécurisée et cryptée (HTTPS/TLS). Le point faible de cette méthode réside dans l’authentification par mot de passe, aussi pour diminuer les risques ce sera en partage en lecture seule. Je le répète : CHACUN EST LIBRE DE SES CHOIX ET SURTOUT DOIT LES ASSUMER, faites votre config en propre conscience.

 

Création d’un certificat

Pour pouvoir utiliser TLS (SSL) depuis FreeNAS, que ce soit pour l’interface, WebDAV, FTP ou autres, il faut commencer par créer un certificat électronique, et même avant cela une autorité de certification car nous sommes en usage privé familial.

Ce processus est nouveau dans FreeNAS : auparavant un certificat par défaut était créé à l’installation, le nouveau process permet à ceux bénéficiant de certificats signés par une autorité reconnue de l’utiliser (utile pour une société) et il nous permettra d’exporter le certificat créé et de l’importer dans une future installation par exemple, cela permettant d’éviter certains soucis de connexion sécurisée.

Tout commence donc dans System -> CAs pour l’autorité de certification, et l’on clique sur Create Internal CA

Création d'une Autorité de Certification

Création d’une Autorité de Certification

Les points important sont de mettre au moins 2048 en longueur de clé et SHA256 est pas mal comme algorithme par défaut, le reste c’est comme vous le sentez. On valide par OK et voilà notre autorité est créée.

Prochaine étape dans System -> Certificates on va créer le certificat qui nous intéresse en cliquant sur Create Internal Certificate :

Création d'un certificat

Création d’un certificat

La fenêtre est très ressemblante à la précédente, sauf que l’on sélectionne l’autorité qui signe le certificat et on remplit le reste comme précédemment. Un clic sur OK et le certificat est généré. Il est maintenant disponible pour chiffrer les connections.

 

Les limites et pièges de WebDAV

Dans FreeNAS il y a quelques limites avec le partage WebDAV : en effet, pour s’authentifier sur un partage webDAV on n’utilise pas un nom d’utilisateur créé auparavant mais l’utilisateur « webdav » préexistant dans le système.

Ceci implique donc que différents utilisateurs ne pourrons pas avoir des accès privés et uniques à leurs données puisque tout le monde utilisera « webdav » pour la connexion. Et donc comme l’accès à ce partage se fait via l’utilisateur webdav, il faut que celui-ci ai les permissions d’accès aux fichiers et dossiers à partager.

C’est là le piège : soit webdav est propriétaire du fichier ou dataset, soit il fait parti d’un groupe qui a l’accès, soit dans les permissions « Autre » est réglé au moins en lecture-exécution.

Exemple concret avec ce qu’on a défini précédemment, on se met dans l’idée d’un partage WebDAV en lecture seule :

  • Pour partager le dataset Public qui est en 775, il n’y a pas de problème car Autre est en lecture-execution
  • Pour partager le dataset Medias qui est en 770, il va falloir soit ajouter l’utilisateur « webdav » au groupe GrpMedias, soit passer en 775.
  • Pour partager le dataset Paul qui est en 700, il faut soit passer en 705 (pas terrible car ce n’est pas le but), soit ajouter « webdav » au groupe Paul et passer le dataset en 750. C’est là qu’on comprend que n’importe quel autre utilisateur accédant au partage WebDAV peut alors voir les données du dataset Paul, ce qui n’est pas le but à l’origine.

 

Création d’un partage WebDAV

On va donc ici créer un partage WebDAV du dossier Medias afin que Pierre et Paul aient accès aux fichiers de ce dataset en lecture seule.

NB : il est recommandé de ne pas créer plus d’un type de partage par dataset, or Medias est déjà partagé en CIFS, ce qui va à l’encontre de la recommandation. Certes, mais on ajoute ici un partage en lecture seule, ce qui ne devrait pas créer de corruption de fichiers.

On commence donc par ajouter l’utilisateur webdav au groupe GrpMedias qui détient le dataset Medias : dans Account -> Groups -> View Groups on clique sur GrpMedias et sur le bouton Members :

Modification des membres d'un groupe

Modification des membres d’un groupe

Dans la liste Available, on sélectionne webdav (tout en bas) et on clique sur >> pour le passer en Selected. Évidemment on valide.

Puis dans Sharing -> WebDAV Shares -> Add WebDAV Share on remplit les champs :

Création d'un partage WebDAV

Création d’un partage WebDAV

Le nom du partage, un commentaire optionnel puis le chemin vers le dataset à partager. Ici j’ai coché Read Only ce qui force le partage en lecture seule, quelles que soit les permissions sur le dataset.

Point important : Dans notre cas on DECOCHE Change User & Group Ownership. Cette case si elle est cochée va changer les propriétaires du dataset Medias et de TOUS ses fichiers et sous-dossiers en webdav:webdav. Ceci afin d’en permettre l’accès. Nous on a pris la méthode douce en mettant webdav dans le groupe qui a accès à Medias donc on décoche.

En validant on nous demande si on veut activer le service WebDAV, on met non car on va commencer par le configurer.

Dans Services -> WebDAV on va régler les paramètres impactant l’ensemble des partages WebDAV :

Configuration du service WebDAV

Configuration du service WebDAV

On veut un accès sûr, donc HTTPS seul en protocole, concernant le port on peut mettre celui qu’on veut mais il ne doit absolument pas être occupé par un autre service, je vous conseille de changer celui par défaut pour plus de sécurité également.

Pour le certificat, c’est simple, on sélectionne celui que l’on a créé au début. Digest Authentication permet de ne pas faire circuler le mot de passe en clair, surtout utile en HTTP mais on peut laisser, et enfin on défini le mot de passe qui va être utilisé pour toutes les connexions aux partages WebDAV. Plus il est fort et mieux c’est pour la sécurité des données. N’oubliez pas que c’est la seule barrière ici.

Enfin, on valide et on active le service en le passant sur ON dans Services -> Control Services.

 

Accéder au partage

Testons immédiatement tout ça, un petit coup de Firefox et on se rend à l’adresse suivante :

https://ip.du.NAS:port/partage

Par exemple dans mon cas en interne :

https://192.168.0.9:8081/Medias

ALARME ! Alerte rouge ! Au feu ! Au loup ! « Connexion non certifiée, accès non recommandé ». Qu’est ce que c’est que ça ?!?!

Ben oui, se créer soi-même son propre certificat est quand même assez moyen au niveau authentification, donc le navigateur nous l’indique : on choisi de poursuivre quand même en acceptant notre certificat et ajoutant une exception.

Ensuite : nom d’utilisateur : webdav et mot de passe : celui que vous avez choisi. Et voilà !

Accès au partage WebDAV

Accès au partage WebDAV

Bon, là il n’y a aucun fichier dedans mais l’esprit y est !

Pour un accès depuis l’internet, ce n’est pas plus compliqué : dans le routeur / box, il suffit de faire une redirection du port choisi vers le NAS et de se connecter avec votre adresse IP publique :

https://ip.publique:port/Medias

Et voilà pour WebDAV dont on a fait le tour, là on a utilisé un navigateur, on peut faire pareil avec un client WebDAV sur smartphone par exemple…

Prochain tuto à venir : on va revoir le FTP car la config a un peu évoluée.


Vous avez aimé ? N'hésitez pas à partager :
Facebook Twitter Google+ Mail

20 réflexions sur « Tuto FreeNAS 9.3 : Certificats et WebDAV »

  1. Merci Mickaël pour tout ce tutoriel pour installer et configurer Freenas.C’est très bien fait.
    Maintenant, que peux tu proposer pour un accès à distance sécurisé via un navigateur, autre que webdav qui n’est pas prévu pour cela, et même un accès via android. Le but est de travailler sur les fichiers comme on peut le faire avec google drive.

    1. L’accès extérieur style cloud est faisable avec le plugin Owncloud, perso j’utilise pas mais ça existe. Sinon FTP

  2. Sympa ce site avec les tutos sur freenas

    Je cherche à faire un portail d accès de ressources pour des utilisateurs, il y aurait accès via un site web puis authentification pour accéder au ressources uniquement en lecture seule mais tout le monde n a pas les mêmes ressources.

    Exemple

    Admin:Ressource Cette personne créer /modifie/partage les ressource par exemple4 folder A,B, C et D

    3 utilisateur qui peuvent seulement consulter:

    User A: Accès au dossier A et D uniquement en lecture seule, il ne peut pas créer ou ajouter de fichier dans cet espace ressources.

    User B: Accès au dossier B et D uniquement en lecture seule, il ne peut pas créer ou ajouter de fichier dans cet espace ressources.

    User C: Accès au dossier C et D uniquement en lecture seule, il ne peut pas créer ou ajouter de fichier dans cet espace ressources.

    Je veux que l es utilisateur aient un accès avec un simple interface où il pourront au final juste disposer des fichier et c’est tout.

    Est ce que une configuration de freenas peut faire cela ?

    1. Pour un accès via un site web alors il faut plutôt se tourner vers les solutions de cloud, freeNAS est très orienté NAS, donc stockage, réseau local. Il y a un bien le plugin owncloud mais je n’ai pas testé s’il peut faire tout ce que tu veux.

  3. Merci Mickaël d’avoir permis à un novice tel que moi de mettre en service mon premier serveur domestique!
    Cependant, et ce malgré la clarté et la précision de votre tutoriel, je ne parviens toujours pas à y accéder depuis la toile (pas de souci en interne) : dans l’interface de gestion de notre BBox, à la rubrique Redirection de ports, je sèche quant au choix des ports externe et interne…
    Lorsque vous indiquez que dans le routeur / box, il suffit de faire une redirection du port choisi vers le NAS et de se connecter avec l’IP publique (du routeur, n’est-ce pas ?), s’agit-il toujours du port 8081, ou bien doit-on en affecter un autre, et lequel ?
    Si vous pouvez éclairer ma lanterne…
    Cordialement,

    Arnaud

  4. Bonjour

    Merci également pour ce tuto: très claire et très instructif.
    Seulement, Je suis totalement novice pour tout ça et donc ce qui devait arriver, arriva: j’ai des soucis avec Webdav (et MiniDlna d’ailleurs ^^).
    Si tu as un peu de temps, pourrais-tu m’aider ?

    1. Et bien j’ai tout recommencer à zéro: je ne peux pas me connecter en https sous Win10 et sous Google chrome… j’ai même arrêter mon par-feu le temps de vérifier que ce ne soit pas ça, j’ai configuré le par-feu de la box… je ne sais plus quoi faire

      Pour Minidlna, il semblerait que la bbox ai un soucis avec ça…

  5. Bonjour
    Merci pour ce tuto !
    J’ai un petit soucis, je tente de faire communiquer un serveur dédié et mon NAS sous FreeNas en SSH, mais je me heurte toujours au message « accès refusé » après avoir tapé le mot de passe du compte root ssh. Mais lorsque je tente de me connecter en ssh sur ce compte avec putty ça fonctionne normalement. Je précise que la redirection de port est effectuée et que donc j’utilise l’ip de ma box avec le N° de port qui corresponds, une idée ?
    Merci

    1. Bonjour
      Je me réponds !! J’avais décoché l’option « utiliser le mot de passe dans l’utilisateur root !!!
      Autre soucis plus… … plus embetant pour moi : j’ai créé un raid sur mon serveur à partir du bios de celui ci, est ce que FreeNas le prend en compte ? Car je ne sais pas si c’est lié mais le système ne le reconnait pas, par contre un des deux disques fait un bruit régulier comme s’il se mettait en route et il le fait toutes 5-6 secondes !! Disque HS ou problème de Raid ?
      Merci

      1. Hum ça me faisait ça sur un disque, c’est qu’il est dans 90 % des cas mort.
        Vérifie sur un autre pc si tu peux y accéder.

  6. Bonjour,

    J’ai suivis le tuto, mais contrairement au screen, une fois sur chrome, et que j’ai rentré l’adresse, je me retrouve avec pleins de dossier …. j’ai bien le mien, mais il y a aussi : .login, login_conf, profile, cshrc

    pourquoi ?

  7. Salut,
    Super travail et vraiment bien fait, j’essaie de monter un NAS comme ça chez moi aussi, et jusque là aucun problème avec tes explications elle sont plutôt claires.
    Juste, as-tu développé un tuto pour une sécurisation via VPN et pouvoir une augmentation de la sécurité via l’extérieur.

  8. Bonsoir
    Des tuto comme ceux celui ci c’est rare
    je commence tout juste sur Freenas et c’est super bien expliqué
    un grand merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *