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.15p22.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é… ;)
-game* -x* +xbase* +xfont*
, voire plus court -g* -x* +xb* +xf*
!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’optionro
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é !
IMPORTANT : À la différence de mon tutoriel ci-dessus, nous veillerons à nommer le fichier enregistrant la passphrase, en le créant de manière dynamique selon le DUID du disque dur, de telle manière :
# mkdir /root/Administration
# cd /root/Administration
# touch ."$(disklabel ${disk0} | awk -F':' '/duid/ { gsub(/[[:space:]]*/, "", $2) ; printf "%s",$2 }')"
Attention, au .
devant le nom du DUID !
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
Si jamais vous voulez que chacun des utilisateurs systèmes que vous créerez ait son propre répertoire dans les différents répertoires des médias, appliquez la même méthode que le code ci-dessus pour la création des répertoires utilisateurs dans le répertoire des documents, mais faites-le sur le répertoire des médias, tel que :
# for name in Images Music Video; do mkdir -p /mnt/nas/Medias/$user/$name && ln -s /mnt/nas/Medias/$user/$name /home/$user/$name; done
# chown -R $user /mnt/nas/Medias/$user
# chmod 0700 /mnt/nas/Medias/$user
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…
i
de disklabel
remplit
très bien son office ; il suffit de rentrer tout identifiant sur une base
hexadécimal de 16 caractères. À vous de voir… aucune obligation, aucune nécessité ; juste pour le fun, voire l’utilité…
Fichiers de configuration
Retrouvez les différents fichiers de configuration disponibles, tels que :
- Script de montage en lecture seule et/ou accès en écriture du système : sysmount
- Script de montage automatique : mount_bioctl_hd
- Scripts rc.local, rc.shutdown, daily.local
- Script /etc/rc.d/deluged
- Script de sauvegarde du disque dur dédié à l’activité du NAS vers le disque dur de sauvegarde : bckp_nas
Gestion des services
ALERTE : Tous ces services seront automatiquement démarrés que si et seulement si le disque dur chiffré est attaché ET monté. En effet, cela ne sert à rien de les activer et de les démarrer si le disque dur n’est pas correctement monté ; ils se mettraient en échec inutilement !
Ils seront donc activé à partir du script /etc/rc.local
et arrêté avant
l’extinction machine, depuis le script /etc/rc.shutdown
.
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”.
Je vous invite à créer un groupe dédié, dans lequel ajouter les différents utilisateurs - ainsi, nous utiliserons les options d’autorisations par groupe, plutôt que par utilisateurs autorisés :
# groupadd _smb
# usermod -G _smb $user
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 typefd0::/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ésdirectory mask
etforce 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écialhosts 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 surno
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 groupesmb
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
, etguest 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’optionprintable = 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
ethide 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