Outils pour utilisateurs

Outils du site


debian-fde-dropbear

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
debian-fde-dropbear [2016/05/20 17:48] – [Configuration persistante de SSH] + note coupure connexion scaradebian-fde-dropbear [2018/03/07 14:51] – [Configuration de l'initramfs] introduction de la commande lsblk cequejevois
Ligne 11: Ligne 11:
   * [[https://github.com/lhost/pkg-cryptsetup-debian/blob/master/debian/README.remote|Documentation officielle sur le déchiffrement distant]]   * [[https://github.com/lhost/pkg-cryptsetup-debian/blob/master/debian/README.remote|Documentation officielle sur le déchiffrement distant]]
   * [[http://wiki.faimaison.net/doku.php?id=projets:wifi:ateliers:4_raid_luks_lvm|Notes sur install RAID + LVM + FDE chez FAImaison]]   * [[http://wiki.faimaison.net/doku.php?id=projets:wifi:ateliers:4_raid_luks_lvm|Notes sur install RAID + LVM + FDE chez FAImaison]]
-  * [[https://rootlogin.ch/2015/04/27/howto-install-debian-jessie-with-encrypted-lvm-and-software-raid-on-a-remote-server/|How-To chez rootlogin.ch]]+  * [[https://rootlogin.ch/howto_en/installing_debian_jessie_with_encrypted_lvm_and_softraid/|How-To chez rootlogin.ch]]
   * [[https://projectgus.com/2013/05/encrypted-rootfs-over-ssh-with-debian-wheezy/|How-To chez projetgus.com]]   * [[https://projectgus.com/2013/05/encrypted-rootfs-over-ssh-with-debian-wheezy/|How-To chez projetgus.com]]
 +  * [[https://sowhatisthesolution.wordpress.com/2016/03/20/unlock-luks-via-ssh-in-debian/|How-To chez sowhatisthesolution.wordpress.com (Unlock LUKS via SSH in Debian)]] 
 +  * [[https://www.theo-andreou.org/?p=1579|How-To chez How to theo-andreou.org (remotely decrypt a LUKS encrypted)]] 
 +  * [[https://hamy.io/blog/remote-unlocking-of-luks-encrypted-root-in-ubuntu-debian/|How-To chez hamy.io (Remote unlocking of LUKS-encrypted root in Ubuntu/Debian)]]
  
 ===== Installation de dropbear ===== ===== Installation de dropbear =====
Ligne 19: Ligne 21:
     apt install dropbear     apt install dropbear
  
-L'installation de dropbear génère une paire de clés ssh mais qui sont stockées sur la partie non-chiffrée du disque.+==== Avec Jessie (debian 8) ==== 
 + 
 +L'installation de ''dropbear'' génère une paire de clés ssh mais qui sont stockées sur la partie non-chiffrée du disque.
  
 Il faut donc vider les clés autorisées à se connecter sur l'initramfs Il faut donc vider les clés autorisées à se connecter sur l'initramfs
Ligne 31: Ligne 35:
 Ensuite, il faut ajouter les clés ssh autorisées à se connecter pour déchiffrer le disque au fichier ''/etc/initramfs-tools/root/.ssh/authorized_keys'' Ensuite, il faut ajouter les clés ssh autorisées à se connecter pour déchiffrer le disque au fichier ''/etc/initramfs-tools/root/.ssh/authorized_keys''
 (cela peut être une copie de ''~/.ssh/authorized_keys'', par exemple). (cela peut être une copie de ''~/.ssh/authorized_keys'', par exemple).
 +
 +==== À partir de stretch (debian 9) ====
 +
 +L'installation de ''dropbear'' entraîne l'installation d'un paquet complémentaire ''dropbear-initramfs''.
 +
 +Les clés autorisées à se connecter sur l'initramfs ne sont plus générées automatiquement, elles seront à ajouter dans ''/etc/dropbear-initramfs/authorized_keys''. C'est pourquoi à la fin de l'installation ou si l'on reconstruit l'initramfs avant d'avoir ajouter les clés, on a un message nous indiquant :
 +
 +    dropbear: WARNING: Invalid authorized_keys file, remote unlocking of cryptroot via SSH won't work!
  
  
 ===== Ajout du pilote de la carte réseau à l'initram-fs ===== ===== Ajout du pilote de la carte réseau à l'initram-fs =====
  
-Pour cela il faut detecter le pilote avec la commande+//Note : Cette étape n'est pas obligatoire sur toutes les machines, le pilote de la carte réseau étant déjà chargé dans certains cas. // 
 + 
 +Pour celail faut détecter le pilote avec la commande
  
-    grep DRIVER /sys/class/net/eth0/device/uevent+    # "e*" permet de fonctionner avec l'ancien (eth*) et le nouveau (enps*) nommage des interfaces. 
 +    grep DRIVER /sys/class/net/e*/device/uevent
  
 qui retourne par exemple qui retourne par exemple
Ligne 47: Ligne 62:
 Cela peut se faire en une seule ligne Cela peut se faire en une seule ligne
  
-    grep DRIVER= /sys/class/net/eth0/device/uevent | cut -d= -f2 >>/etc/initramfs-tools/modules+    grep DRIVER= /sys/class/net/e*/device/uevent | cut -d= -f2 >>/etc/initramfs-tools/modules
  
-//Note : Cette étape n'est pas obligatoire sur toutes les machines, le pilote de la carte réseau étant déjà chargé dans certains cas. // 
  
 ===== Configuration de l'initramfs ===== ===== Configuration de l'initramfs =====
  
-Éditer le fichier `/etc/initramfs-tools/initramfs.confet ajouter les lignes suivantes :+//Note : La configuration décrite ci-après est réalisée dans le fichier ''/etc/initramfs-tools/initramfs.conf'', mais pour éviter des surprises vis à vis des mises à jour Debian, il serait préférable d'utiliser un autre fichier comme par exemple ''/etc/initramfs-tools/conf.d/dropbear-fde-unlock''.// 
 + 
 +Pour savoir quelle partition a été chiffrée, utiliser la commande ''lsblk''
 + 
 +==== Avec Jessie (debian 8) ==== 
 + 
 +Éditer le fichier ''/etc/initramfs-tools/initramfs.conf'' et ajouter les lignes suivantes :
  
     # enable dropbear explicitly     # enable dropbear explicitly
Ligne 75: Ligne 95:
     # pre-up ifdown eth0     # pre-up ifdown eth0
  
 +==== À partir de stretch (debian 9) ====
  
 +Le fonctionnement est identique, à ceci près :
 +
 +=== Activer dropbear dans l'initramfs ===
 +
 +''dropbear'' est activé par défaut, il n'est donc pas nécessaire d'ajouter la ligne suivante au fichier ''/etc/initramfs-tools/initramfs.conf'' :
 +
 +    # enable dropbear explicitly
 +    DROPBEAR=y
 +
 +=== Forcer l'extinction de l'interface réseau ===
 +
 +Il n'est plus utile de forcer //manuellement// l'extinction de l'interface réseau, car c'est désormais le comportement par défaut (voir l'option ''IFDOWN'' dans ''/etc/dropbear-initramfs/config'').
 +
 +Extrait du changelog de la version 2015.68-1 de dropbear :
 +
 +    Bring down interfaces and flush IP routes and addresses before exiting
 +    the ramdisk, to avoid dirty network configuration in the regular kernel.
 +    (Closes: #715048, #720987, #720988.)  The interfaces considered are
 +    those matching the $DROPBEAR_IFDOWN shell pattern (default: '*'); the
 +    special value 'none' keeps all interfaces up and preserves routing
 +    tables and addresses.
 ==== Variante ===== ==== Variante =====
 ''DROPBEAR=y'' et ''DEVICE=eth0'' étant les valeurs par défaut, il est possible de définir la configuration réseau via le Grub. Pour cela il faut éditer le fichier ''/etc/default/grub'' et ajouter la ligne suivante ''DROPBEAR=y'' et ''DEVICE=eth0'' étant les valeurs par défaut, il est possible de définir la configuration réseau via le Grub. Pour cela il faut éditer le fichier ''/etc/default/grub'' et ajouter la ligne suivante
Ligne 89: Ligne 131:
  
 ===== Connexion à la machine ===== ===== Connexion à la machine =====
 +
 +==== Avec Jessie (debian 8) ====
  
     ssh -t -o UserKnownHostsFile=~/.ssh/machine_known_hosts root@machine "/lib/cryptsetup/askpass 'FDE Passphrase : ' > /lib/cryptsetup/passfifo"     ssh -t -o UserKnownHostsFile=~/.ssh/machine_known_hosts root@machine "/lib/cryptsetup/askpass 'FDE Passphrase : ' > /lib/cryptsetup/passfifo"
Ligne 101: Ligne 145:
 Notez qu'il est possible de se connecter simplement en ssh à la machine (''ssh -o UserKnownHostsFile=~/.ssh/machine_known_hosts root@machine'') puis de saisir la commande ''/lib/cryptsetup/askpass 'FDE Passphrase : ' > /lib/cryptsetup/passfifo'' pour entrer sa phrase de passe. Notez qu'il est possible de se connecter simplement en ssh à la machine (''ssh -o UserKnownHostsFile=~/.ssh/machine_known_hosts root@machine'') puis de saisir la commande ''/lib/cryptsetup/askpass 'FDE Passphrase : ' > /lib/cryptsetup/passfifo'' pour entrer sa phrase de passe.
    
 +==== À partir de stretch (debian 9) ====
 +
 +On peut toujours se connecter avec la méthode décrite, ci-dessus, mais désormais le paquet cryptsetup inclut un script de déverrouillage complémentaire (cf. ''/usr/share/cryptsetup/initramfs/bin/cryptroot-unlock'' et ''/usr/share/initramfs-tools/hooks/cryptroot-unlock''), que l'on peut définir comme [[https://man.openbsd.org/sshd.8#command=%22command%22|unique commande proposée à la connexion]].
 +
 +Pour cela, on ajoute la clé ssh autorisée à se connecter au boot, avec les commandes suivante :
 +
 +   # echo -n "command=\"/bin/cryptroot-unlock\" " > /etc/dropbear-initramfs/authorized_keys
 +
 +   # cat /home/<username>.ssh/id_rsa.pub >> /etc/dropbear-initramfs/authorized_keys
 +
 +ou avec votre éditeur de texte préféré.
 +
 +Dès lors, pour se connecter, il suffit de lancer :
 +
 +    ssh -t -o UserKnownHostsFile=~/.ssh/machine_known_hosts root@machine
 +
 +
  
 ==== Configuration persistante de SSH ====  ==== Configuration persistante de SSH ==== 
Ligne 121: Ligne 182:
  
 //À noter qu'une fois la passphrase entrée, la connexion ssh est coupée étant donnée que la machine se lance et se déchiffre.// //À noter qu'une fois la passphrase entrée, la connexion ssh est coupée étant donnée que la machine se lance et se déchiffre.//
-==== Et En IPv6 ? ====+ 
 +==== Et en IPv6 ? ====
  
 Le serveur SSH dans l'initrd écoute également par défaut en IPv6. Cela signifie : Le serveur SSH dans l'initrd écoute également par défaut en IPv6. Cela signifie :
Ligne 128: Ligne 190:
   * En étant sur le même LAN que votre machine, vous pouvez utiliser l'adresse [[https://fr.wikipedia.org/wiki/Adresse_IPv6#Cat.C3.A9gories_d.27adresses|link-local]] de votre machine pour la déverrouiller.   * En étant sur le même LAN que votre machine, vous pouvez utiliser l'adresse [[https://fr.wikipedia.org/wiki/Adresse_IPv6#Cat.C3.A9gories_d.27adresses|link-local]] de votre machine pour la déverrouiller.
  
 +
 +===== Complément et alternative =====
 +
 +==== Sécurisation de dropbear-initramfs ====
 +
 +À partir de debian 9, il y a une configuration spécifique pour le paquet ''dropbear-initramfs''.
 +
 +Sans rien y toucher ça marche, mais il est possible d'ajouter quelques options, dans le fichier ''/etc/dropbear-initramfs/config'', pour sécuriser le tout.
 +
 +Quelques options extraites de ''man dropbear'' :
 +| **-p** | Listen on specified TCP port. |
 +| **-s** | Disable password logins. |
 +| **-j** | Disable local port forwarding. |
 +| **-k** | Disable remote port forwarding. |
 +| **-I** | Disconnect the session if no traffic is transmitted or received for n seconds. |
 +
 +La ligne ''#DROPBEAR_OPTIONS='' dans le fichier de config peut donc devenir : ''DROPBEAR_OPTIONS=-w -s -j -k -I 60''.
 +
 +==== Cohabitation dropbear et openssh ====
 +
 +Avec la mise en place de dropbear, du point de vue du client SSH on se connecte deux fois de suite sur la même ip+port en ssh, mais sur deux serveurs SSH (dropbear, puis openssh-server) identifiés par des clés différentes (côté serveur).
 +
 +Ces clés sont stockées par le client SSH dans ~/.ssh/known_hosts et vérifiées à la connexion.
 +
 +Pour éviter que notre client SSH ne crie à chaque connexion croyant que l'on ne se connecte pas à la même machine, il y a //au moins// deux possibilités :
 +
 +  * Utiliser un fichier known_hosts spécifique, comme détaillé au paragraphe [[debian-fde-dropbear#Connexion à la machine|Connexion à la machine]].
 +  * Définir un port de connexion différent pour dropbear en utilisant l'option ''-p'' dans le fichier ''/etc/dropbear-initramfs/config'' (cf. [[debian-fde-dropbear#Sécurisation de dropbear-initramfs|Sécurisation de dropbear-initramfs]]).
  
 ===== Le cas particulier d'une Brique Internet ===== ===== Le cas particulier d'une Brique Internet =====
Ligne 133: Ligne 223:
 Dropbear est déjà installé et utilisé sur les installations chiffrées de la Brique Internet, donc pas besoin de l'installer. Et vis-a-vis des explications précédentes, la brique fonctionne avec u-boot et non grub comme gestionnaire de démarrage. Dropbear est déjà installé et utilisé sur les installations chiffrées de la Brique Internet, donc pas besoin de l'installer. Et vis-a-vis des explications précédentes, la brique fonctionne avec u-boot et non grub comme gestionnaire de démarrage.
  
-Ouvrir ''/etc/initramfs-tools/root/.ssh/authorized_keys'' et y copier le contenu de ''~/.ssh/authorized_keys'' (en espérants que vous aviez précédemment [[https://yunohost.org/#/security_fr|sécurisé la connexion ssh par clé]]) :+Ouvrir ''/etc/initramfs-tools/root/.ssh/authorized_keys'' et y copier le contenu de ''~/.ssh/authorized_keys'' (en espérant que vous aviez précédemment [[https://yunohost.org/#/security_fr|sécurisé la connexion ssh par clé]]) :
    vi /etc/initramfs-tools/root/.ssh/authorized_keys    vi /etc/initramfs-tools/root/.ssh/authorized_keys
  
debian-fde-dropbear.txt · Dernière modification : 2018/12/14 11:02 de kippix