Linux: LUKS et plusieurs disques durs

11

J'ai un système Debian Linux (amd64) installé sur un périphérique crypté du système RAID-1 (LVM sur LUKS) et j'aurai un RAID-6 de> = 4 disques où je mettrai mes données (LUKS et peut-être LVM).

Je pense que l'idée de base est de déverrouiller la partition cryptée du système (au démarrage au niveau local ou via ssh) et de stocker un fichier de clés dans / etc / crypttab pour la partition cryptée RAID-6. Cela pose-t-il un risque pour la sécurité? Je veux dire ... c'est assez inutile si quelqu'un peut simplement entrer dans mon système localement / à distance et je pense qu'il y a beaucoup de services fonctionnant sur des serveurs qui sont vulnérables au "root" (par exemple SSH). Existe-t-il une alternative (à côté du déverrouillage de la partition via SSH qui peut être un problème car par exemple les opérations de sauvegarde démarrent avant même que la partition de données soit montée).

Sur une autre machine, j'utiliserai plusieurs disques avec LUKS + greyhole (pas de RAID-6) pour les sauvegardes et ce sera vraiment difficile de déverrouiller 10 disques en entrant 10 fois le même mot de passe ...

user51166
la source
Si quelqu'un peut s'introduire dans votre système et devenir root, il n'a pas besoin d'obtenir la clé de votre partition cryptée. Il est inutile de le protéger de la racine (et ce n'est pas possible sans matériel spécial tel qu'un TPM ou en cours d'exécution dans une machine virtuelle).
Gilles 'SO- arrête d'être méchant'
Excusez-moi ? Même si je suis root, je dois donner le fichier clé / phrase de passe pour déverrouiller les partitions LUKS. Je suppose que vous voulez dire que si quelqu'un devient root, il a un accès complet à mes données cryptées. Malheureusement, cela est tout simplement vrai car une fois la partition chiffrée montée, cela ne fait aucune différence si elle est chiffrée ou non. Quel serait alors l'avantage d'une machine virtuelle? Alors, pourquoi le cryptage devrait-il être utile? Est la seule solution pour refuser l'accès à root via SSH et services similaires? Mais si un pirate pénètre dans le système en tant qu'utilisateur normal, il a généralement un accès en lecture à chaque fichier, n'est-ce pas?
user51166
1
Exactement, si quelqu'un est root sur votre système, il a accès à tout. Une machine virtuelle peut signifier qu'ils ont accès à tout ce qui se trouve sur la machine virtuelle. La seule utilisation du cryptage est si quelqu'un vole votre matériel.
Gilles 'SO- arrête d'être méchant'
Ouais bien ... dans ce cas, nous pouvons affirmer que le seul moyen presque sûr de stocker des données est dans un ordinateur crypté déconnecté de tout réseau et intégré dans le bâtiment. Ensuite, tout le monde peut venir avec un clavier et voler vos données sans redémarrer votre système. Je pourrais aussi bien isoler mes systèmes d'Internet car ce sera un serveur de sauvegarde, donc l'accès LAN est tout ce dont il a besoin. Là encore ... si un VPN est utilisé ou si l'une des machines LAN est infectée, la machine de sauvegarde sera également exposée. Que feriez-vous pour résoudre ces problèmes?
user51166

Réponses:

7

Vous pouvez utiliser /lib/cryptsetup/scripts/decrypt_deriveddans votre crypttabpour utiliser automatiquement la clé d'un disque pour un autre.

Le decrypt_derived script fait partie du paquet cryptsetup de Debian.

Petit exemple pour ajouter la clé de sda6crypt à sda5:

/lib/cryptsetup/scripts/decrypt_derived sda6crypt > /path/to/mykeyfile
cryptsetup luksAddKey /dev/sda5 /path/to/mykeyfile
ls -la /dev/disk/by-uuid/ | grep sda5
echo "sda5crypt UUID=<uuid> sda6crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived" >> /etc/crypttab
shred -u /path/to/mykeyfile # remove the keyfile

Comme il est de nos jours très difficile de vraiment supprimer un fichier, assurez-vous que / path / to / mykeyfile se trouve sur un lecteur chiffré (ce sda6cryptserait dans mon exemple une bonne solution).

En général, vous pouvez ajouter une couche de sécurité supplémentaire en utilisant le cryptage du système de fichiers de l'espace utilisateur, par exemple via encfs.

jofel
la source
De cette façon, je ne devrais pas avoir besoin de stocker le fichier clé sur le disque. Ce serait bien. Cependant, pensez-vous que cela en vaut la peine (c'est-à-dire que le stockage du fichier de clés sur le périphérique racine chiffré est "suffisamment sûr")? Je demande un avis car j'ai des doutes. Merci pour la suggestion.
user51166
La solution avec decrypt_deriveda le seul avantage, qu'il n'y a pas de fichier clé. Si quelqu'un peut obtenir un accès root, vous êtes normalement perdu de toute façon. La lecture d'un fichier clé pourrait être un peu plus facile pour un intrus que l'exécution d'un script. Pour plus de sécurité, vous pouvez renforcer votre système en utilisant par exemple TOMOYO Linux, AppAmor, SMACK, SELinux, grsecurity, ... mais cela demande des efforts supplémentaires. Et la question de sa valeur est alors plus importante. N'oubliez pas d'avoir une sauvegarde de la clé ou une clé distincte dans le cas où le disque tombe en panne là où la clé est dérivée / stockée.
jofel
Je prévoyais d'utiliser grsecurity ou des logiciels similaires également (pas au début, mais quand j'aurai le temps, je le sécuriserais). Je pense à n'utiliser que des mots de passe et pas des fichiers de clés si possible. Eh bien, le mot de passe sera stocké dans la RAM, donc je suppose que vous pouvez également en discuter.
user51166
Il n'y a aucun bon moyen de supprimer un fichier de clé n'importe où, à moins d'écraser tout le système de fichiers (et peut-être même pas si le disque tombe en panne). Un système de fichiers de journalisation n'aggrave pas sensiblement les choses.
Gilles 'SO- arrête d'être méchant'
@Gilles Comme je ne suis pas un expert de la suppression de fichiers en toute sécurité, j'ai modifié ma réponse. Je recommande maintenant de stocker le fichier de clés sur le lecteur chiffré.
jofel
1

Basé sur la réponse de jofels, voici le même exemple mais sans avoir à stocker la clé dans un fichier. La clé est passée dans un canal nommé, qui ne stocke rien sur le disque.

Vous pouvez utiliser /lib/cryptsetup/scripts/decrypt_deriveddans votre crypttab pour utiliser automatiquement la clé d'un disque pour un autre. Le decrypt_derivedscript fait partie du paquet cryptsetup de Debian.

Exemple modifié pour ajouter la clé de sda6crypt à sda5:

mkfifo fifo
/lib/cryptsetup/scripts/decrypt_derived sda6crypt > fifo &
cryptsetup luksAddKey /dev/sda5 fifo
rm fifo

ls -la /dev/disk/by-uuid/ | grep sda5
echo "sda5crypt UUID=<uuid> sda6crypt luks,initramfs,keyscript=/lib/cryptsetup/scripts/decrypt_derived" >> /etc/crypttab

L' keyscriptoption ne fonctionne que si elle crypttabest traitée par les outils cryptsetup d'origine de Debian, la réimplémentation systemd ne la prend pas en charge actuellement. Si votre système utilise systemd (qui est la plupart des systèmes), vous avez besoin de l' initramfsoption pour forcer le traitement à se produire dans l'initrd par les outils cryptsetup, avant le démarrage de systemd.

JanKanis
la source