Les routeurs Turris/OpenWRT permettent facilement de partager un disque en réseau. Mais il faut bricoler un peu pour que le disque en question soit chiffré.
Installer cryptsetup sur le routeur
Soit via l’interface web: dans le menu Système->Logiciels de LuCI, cliquer sur « Mettre à jour les listes » puis trouver le paquet « cryptsetup » et l’installer.
Soit en ligne de commande: opkg install cryptsetup
Chiffrement du disque
Ca se fait classiquement: soit en ligne de commande sur le routeur ou un autre appareil (avec cryptsetup luksFormat
puis cryptsetup open
puis en formattant le /dev/mapper/xxx obtenu en ext4, par exemple), soit en branchant le disque sur une machine desktop linux et en utilisant l’interface graphique (outil « Disques » sur Ubuntu, par exemple).
A noter que le Turris Mox ne supporte que l’AES (pas serpent ni twofish), et que c’est en aes-xts qu’il est le plus rapide (autour de 230Mo/s d’après cryptsetup benchmark
). Mais, ça tombe bien, c’est l’algorithme par défaut de cryptsetup.
Déchiffrement au démarrage du routeur
Pour que la partition soit déchiffrée automatiquement au démarrage du routeur, il faut lui créer un keyfile et l’ajouter à la partition chiffrée:
sudo dd if=/dev/urandom of=/etc/keyfile bs=1024 count=4 sudo chmod 0400 /etc/keyfile sudo cryptsetup luksAddKey /dev/sda1 /etc/keyfile
Il n’y a hélas pas de fichier /etc/crypttab (comme sur Debian) qui permette d’automatiser le déchiffrement au démarrage.
J’ai donc créé un fichier /etc/init.d/cryptsetup_unlock_sda1 minimaliste qui s’en occupe:
#!/bin/sh /etc/rc.common
START=39
start() {
cryptsetup luksOpen /dev/sda1 sda1_crypt --key-file /etc/keyfile
}
Par contre, pour que cela fonctionne, j’ai dû créer manuellement le répertoire /run/cryptsetup sur le routeur. C’est apparemment un bug du package cryptsetup, qui a été corrigé en version 2.3.0 (https://github.com/openwrt/packages/pull/11508), mais Turris ne fournit pour l’instant qu’une version 2.1.0.
Il faut ensuite créer le répertoire où le disque sera monté, par exemple /mnt/sda1_crypt.
Ensuite le montage peut se faire avec les outils habituels d’OpenWRT (menu Système->Points de montage dans LuCI), ou en éditant /etc/config/fstab puis en relançant le service fstab.
Partage réseau
Le partage SMB peut se faire avec les outils d’OpenWRT également (menu Services->Partages réseau dans LuCI)
Si vous voulez éviter que le disque tourne en permanence, vous pouvez installer le package hd-idle, et configurer dans LuCI au bout de combien de temps il doit s’arrêter.
Pour partager le disque en NFS, il faut activer les services rpcbind puis nfsd, et configurer le(s) partage(s) dans /etc/exports
NB: j’ai envisagé de partager ce disque avec glusterfs plutôt que NFS mais n’ai pas trouvé de package ou info correspondant côté OpenWRT, et mon message sur le forum de Turris est resté sans réponse: https://forum.turris.cz/t/how-to-expose-a-glusterfs-server/15537.
Complément le 24/10/2022: depuis, j’ai aussi configuré ce disque dur en « storage » officiel du Turris (avec l’aide du forum: https://forum.turris.cz/t/storage-plugin-on-an-encrypted-device/17410). Cela permet entre autres de s’en servir pour le filesystem de conteneurs lxc (sans risquer d’endommager la carte SD du Turris)