OpenBSD : Faire d'OpenBSD son NAS - en mode Raid 1C

Article publié, le et modifié le
9 minutes de lecture

Cet article contient 1812 mots.
Source brute de l'article :

Description

Voici mon projet de NAS, basé sur… OpenBSD !

Ce NAS fait fonction de :

  • serveur de fichiers, avec Samba, voire NFS, et mieux par SSH

Versions logicielles

  • OS : OpenBSD 6.3 ⇒ 7.2
  • Samba : 4.16.6
  • SSH : OpenSSH, LibreSSL (natifs, intégrés)

Installation

Démarrons sur une clé USB, pour installer le système sur une clé USB voire un SSD chiffré… qui servira à enregistrer/diffuser les données, tels que fichiers documents, audio, vidéo, etc…

Attention
Astuce

Configuration

Durcir le système

À la fois, pour soulager la clé, mais aussi pour empêcher toute écriture non désirée ou involontaire, et donc toute modification potentielle du système, on va modifier le système de fichier de telle manière que l’on ne puisse ni écrire, ni exécuter quoique ce soit sur l’ensemble du système de fichiers.

  • mise en lecture seule ro des partitions suivantes : /, /usr, /usr/ et toutes les autres partitions /usr/* créées logiquement par l’installateur
  • mise en nodev,noexec,nosuid des partitions /tmp, et /var
  • mise en nodev,noexec,nosuid de la partition /home - nous pourrions mettre l’option ro néanmoins cela complexifie encore plus le processus, surtout à la connexion SSH, voire sur les autres protocoles.

Ensuite il faut veiller à monter les périphériques /dev dans un système de fichier temporaire swap de type mfs afin de ne pas avoir de problèmes avec les périphériques, avec certains services qui ont besoin de “monter” dynamiquement, tel SSH… autrement dans ce cas, les connexions auraient dû mal à se faire, voire à ne pas s’exécuter.

Lire mon article “OpenBSD : durcir le système de fichier” - retrouvez le script sysmount dans la section Fichiers de configuration ci-dessous, en fin d’article…

Chiffrer le disque dur

Personnellement, j’utilise deux disques durs en mode Raid 1C (à savoir Raid 1 + chiffrement).

Puis, un troisième qui sert de sauvegarde, lui aussi chiffré.

Dans ce contexte, j’utilise une seule clé USB pour assumer le déchiffrement.

Info

N’oubliez pas de modifier les fichiers /etc/rc.local et /etc/rc.shutdown pour attacher et monter le disque dur au démarrage et respectivement le démonter puis le détacher à l’extinction du serveur.

Retrouvez ces scripts ainsi que le script bioctlr modifié, dans la section Fichiers de configuration ci-dessous, en fin d’article…

Arborescence

Choisissez une arborescence du disque dur NAS chiffré, une fois attaché et monté sur /mnt/nas, par exemple, tel que :

  • /mnt/nas/Documents - répertoire de tout document numérique crée par les utilisateurs, dans leur propre répertoire
  • /mnt/nas/Medias - qui est le répertoire qui recevra tous les fichiers images, audios, et vidéos, chacuns dans leur répertoire respectif
  • /mnt/nas/P2P - qui sert à déposer les fichiers torrents…

# mkdir -p /mnt/nas/{Documents,Medias,P2P}
# mkdir -p /mnt/nas/Medias/{Images,Music,Video}
# mkdir /mnt/nas/P2P/torrents

Dans le répertoire de documents, créez autant de répertoires nécessaires que d’utilisateurs qui se serviront de votre NAS, et liez symboliquement ces répertoires vers les répertoires home des utilisateurs :

# mkdir /mnt/nas/Documents/$user
# chown $user /mnt/nas/Documents/$user
# chmod 0700 /mnt/nas/Documents/$user
# ln -s /mnt/nas/Documents/$user /home/$user/Documents

Ensuite, liez symboliquement les différents répertoires de médias, et celui des torrents avec votre utilisateur principal - le premier utilisateur que vous aurez créé, qui seul aura le droit d’écrire dedans.

# chown -R $user /mnt/nas/{Medias,P2P}
# for name in Images Music Video; do ln -s /mnt/nas/Medias/$name /home/$user/$name; done

Astuce

Dans la suite de ce tutoriel, nous resterons sur la situation simple où seul l’utilisateur principal a des droits en écriture sur les trois répertoires enfants…


En cas où vous avez un énième disque dur, qui lui servirait de sauvegarde des données écrites sur le disque NAS, le script de montage automatique est profondément modifié pour pouvoir attacher et monter cet autre disque dur, qui lui aussi sera chiffré, bien sûr !

Actuellement, j’utilise Borg pour effectuer ma sauvegarde.

Fichiers de configuration

Retrouvez les différents fichiers de configuration disponibles, tels que :

Gestion des services

Attention

MiniDLNA

Si vous souhaitez en faire un serveur multimédia, j’explique l’installation et surtout la configuration du service MiniDLNA dans l’article suivant :
MiniDLNA (OpenBSD)”.

Pour ce qui est de la configuration du fichier /etc/minidlna.conf, voici les modifications faites :

  • friendly_name=OpenBSD Multimedia View-IT
  • media_dir=A,/mnt/nas/Medias/your-user/Music
  • media_dir=V,/mnt/nas/Medias/your-user/Video
  • max_connections=7

Samba

Les explications d’installation de base sont fournies dans cet article “OpenBSD : Introduction à Samba”.

Astuce

Concernant les modifications du fichier /etc/samba/smb.conf :

Section [Global]

  • interfaces : décommentez-la, et écrivez votre réseau lan IPv4, et si vous avez la bonne idée d’avoir un réseau IPv6 ULA, (de type fd0::/64, par exemple) alors faites les ajouts adéquats.
  • nommons le serveur : server string = OpenBSD NAS
  • renommons le groupe de travail, ou pas : workgroup - personnellement, je le fais en le renommant par une seule lettre, me facilitant la vie ;)
  • et, n’autorisons QUE les adresses IP venant seulements de notre réseau local : hosts allow = 192.168.1. fd0::/64 - Attention à bien modifier selon vos propres adressages IP…

Section [homes]

Utilisons la section [Homes] pour autoriser la connexion à nos différents utilisateurs, à leurs répertoires Documents.

Code : cfg

Section [homes]
        browseable = No
        comment = Documents
        create mask = 0644
        directory mask = 0700
        force directory mode = 0700
        hide dot files = No
        hide special files = Yes
        hosts allow = 
        path = /mnt/nas/Documents/
        read only = No
        valid users = 
        write list = 
Explications
  • browseable = no : le parcours du répertoire par tout autre que les utilisateurs autorisés est interdit ;
  • create mask force le chmod sur les fichiers créés/ajoutés/modifiés
  • directory mask et force directory mode obligent le chmod en question sur les répertoires.
  • hide dot files = No autorise la lecture des fichiers et répertoires cachés - ce qui pour un utilisateur autorisé, sur ses propres fichiers, est normal.
  • hide special files = Yes empêche la lecture de tout fichier spécial
  • hosts allow indiquons IMPÉRATIVEMENT les adresses IP des machines autorisées à se connecter à ce partage…
  • read only : étant que nous voulons autoriser les utilisateurs à écrire/ajouter leurs propres documents, laissons/mettons la sur no
  • valid users renfermera les utilisateurs, ou le groupe samba dédié, autorisés à se connecter à ce partage - à remplir impérativement -
    c’est ici que nous ajouterons, de préférence, le groupe smb que je vous ai invité à créer dans l’astuce au début de ce chapitre, tel que : valid users = @_smb
  • write list autorisera seuls les utilisateurs renseignés à pouvoir écrire dans ce partage ! -
    c’est ici qu’il est préférable d’ajouter le groupe samba dédié, créé plutôt, tel que : write list = @_smb

Sections [Music] et [Video]

Maintenant occupons nous des partages Samba pour les documents audios, et vidéos - la configuration sera exactement la même, seul le nom de section change ainsi que les options comment, path… !

Nous appellerons, par préférence, :

  • pour les documents sonores la section correspondante : Section [Music],
  • et pour les fichiers vidéos : Section [Video].

  • À la différence du partage [homes], permettons que ces partages multimédias soient parcourables par tous : browseable = yes, et guest ok = yes
  • Mais nous ne voulons pas que d’aucun puisse écrire dedans, l’option read only = yes nous y aidera. De même que l’option printable = no empêchera toute tentative d’impression des documents…
  • De même, nous empêcherons toute lecture de fichiers cachés et/ou spéciaux : hide dot files = yes et hide special files = yes
  • L’option write list nous permettra d’autoriser au moins votre utilisateur à écrire dedans ! :p
Section [Music]

Code : cfg

[Music]
    browseable = yes
    comment = Musique
    create mask = 0664
    directory mask = 0755
    ea support = no
    force directory mode = 0755
    guest ok = yes
    hide dot files = yes
    hide special files = yes
    inherit acls = yes
    inherit permissions = no
    path = /mnt/nas/Medias/Music/
    printable = no
    read only = yes
    store dos attributes = no
    write list =
Section [Video]

Code : cfg

[Video]
    browseable = yes
    comment = Videos
    create mask = 0664
    directory mask = 0755
    ea support = no
    force directory mode = 0755
    guest ok = yes
    hide dot files = yes
    hide special files = yes
    inherit acls = yes
    inherit permissions = no
    path = /mnt/nas/Medias/Video/
    printable = no
    read only = yes
    store dos attributes = no
    write list = 

SSH

À la différence des autres services, celui-ci sera bel et bien monté normalement dès le démarrage de la machine… et donc géré depuis le fichier /etc/rc.conf.local par le biais de l’outil rcctl.

En effet, nous voulons pouvoir y accèder à tout moment…

Astuce

SSHFS

Étant donné que mon utilisateur système principal est autorisé à se connecter en SSH sur le serveur, il est facile de monter localement le système de fichier, soit par SSHFS en mode console, soit avec un outil graphique, tel que Gigolo.

C’est plus lent qu’avec le partage Samba, ce qui est normal du fait de la couche “sécurité” lié aux chiffrements de la connexion…
mais c’est aussi pratique ET à ma préférence ! :D


Enjoy-ID!
Enjoy-IT!