OpenBSD Multimedia View-IT : Faire d'OpenBSD son NAS

Article publié, le et modifié le
10 minute(s) de lecture

Cet article contient 2049 mots.
Source brute de l'article : MD

Description

OpenBSD Multimedia View-IT est mon projet de NAS, basé sur… OpenBSD !

Ce NAS fait fonction de :

  • serveur de fichiers, avec Samba, voire NFS, et mieux par SSH
  • serveur multimédia grâce à MiniDLNA
  • serveur de diffusion de contenu par torrents, par le service Deluge… il est possible de choisir Transmission, par exemple - qui ne sera pas l’objet de ce tutoriel

Versions logicielles

  • OS : OpenBSD 6.3, 6.4, 6.7
  • Deluge : 1.3.15p2 2.0.3
  • MiniDLNA : 1.2.1p7
  • Samba : 4.7.10, 4.8.5, 4.9.18
  • SSH : OpenSSH, LibreSSL (natifs, intégrés)

Installation

Sur une base de machine mini-ITX, avec une carte-mère Intel D2500HN, démarrant sur une clé USB, et un disque chiffré… qui servira à enregistrer/diffuser les données, tels que fichiers documents, audio, vidéo, etc… tel est là, mon matos, rien d’extra-ordinaire - à vous de choisir le vôtre !

Installons le système sur la clé USB, depuis une autre clé… ;)

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

Veuillez lire mon article “OpenBSD : monter un disque dur chiffré automatiquement”… vous y retrouverez comment le chiffrer, mais surtout les informations nécessaires pour le montage automatique de ce disque qui servira à l’enregistrement des données.

Personnellement, j’utilise un deuxième disque dur qui me sert de sauvegarde, lui aussi chiffré !

Attention

Il ne vous reste plus qu’à remplir le fichier par la passphrase dédiée au contrôle du chiffrement ; et, à faire de même pour tout autre disque dur, si nécessaire…

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 mount_bioctl_hd 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 second 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 !

Retrouvez le script bckp_nas dans la section Fichiers de configuration ci-dessous, en fin d’article…

Astuce

Fichiers de configuration

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

Gestion des services

Attention

Deluge

Lire mon article “OpenBSD : Service Deluge (torrent)”.

MiniDLNA

J’explique l’installation et surtout la configuration du service MiniDLNA dans cet article “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/Music
  • media_dir=V,/mnt/nas/Medias/Video
  • max_connections=7

Samba

Les explications d’installation de base sont fournies dans cet article “OpenBSD : Service 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 Multimedia View-IT
  • 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…

É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

Astuce