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…
-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
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.
Veuillez lire mon article " OpenBSD : monter un disque dur chiffré automatiquement
“… vous y retrouverez comment chiffrer, mais aussi les informations nécessaires pour le montage automatique de ces disques.
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
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 é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 :
- Script de montage en lecture seule et/ou accès en écriture du système : sysmount
- Script de montage automatique : bioctlr
- Scripts rc.local, rc.shutdown, daily.local
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
.
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 ”.
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 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é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…
Veuillez lire mon article suivant sur comment avoir une
configuration et générer des clés sécurisées , actuellement !
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!