debian-fde-dropbear
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
debian-fde-dropbear [2017/12/23 14:13] – [Connexion à la machine] aurelien | debian-fde-dropbear [2018/05/03 09:09] – [Pour supprimer une phrase de passe :] cequejevois | ||
---|---|---|---|
Ligne 11: | Ligne 11: | ||
* [[https:// | * [[https:// | ||
* [[http:// | * [[http:// | ||
- | * [[https:// | + | * [[https:// |
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
===== Installation de dropbear ===== | ===== Installation de dropbear ===== | ||
Ligne 32: | Ligne 34: | ||
Ensuite, il faut ajouter les clés ssh autorisées à se connecter pour déchiffrer le disque au fichier ''/ | Ensuite, il faut ajouter les clés ssh autorisées à se connecter pour déchiffrer le disque au fichier ''/ | ||
- | (cela peut être une copie de '' | + | (cela peut être une copie de '' |
==== À partir de stretch (debian 9) ==== | ==== À partir de stretch (debian 9) ==== | ||
- | L' | + | L' |
Les clés autorisées à se connecter sur l' | Les clés autorisées à se connecter sur l' | ||
Ligne 47: | Ligne 49: | ||
//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. // | //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 cela il faut detecter | + | Pour cela, il faut détecter |
# " | # " | ||
Ligne 64: | Ligne 66: | ||
===== Configuration de l' | ===== Configuration de l' | ||
+ | |||
+ | //Note : La configuration décrite ci-après est réalisée dans le fichier ''/ | ||
+ | |||
+ | Pour savoir quelle partition a été chiffrée, utiliser la commande '' | ||
==== Avec Jessie (debian 8) ==== | ==== Avec Jessie (debian 8) ==== | ||
+ | Certaines des informations demandées ci-après (comme l' | ||
- | Éditer le fichier | + | Éditer le fichier |
# enable dropbear explicitly | # enable dropbear explicitly | ||
DROPBEAR=y | DROPBEAR=y | ||
+ | |||
+ | //(ligne ci-dessus à ajouter si non déjà présente dans le fichier)// | ||
# network configuration. | # network configuration. | ||
Ligne 77: | Ligne 86: | ||
DEVICE=eth0 | DEVICE=eth0 | ||
IP=111.222.333.444:: | IP=111.222.333.444:: | ||
+ | Notez que les valeurs ''< | ||
Reconstruire l' | Reconstruire l' | ||
Ligne 91: | Ligne 101: | ||
==== À partir de stretch (debian 9) ==== | ==== À partir de stretch (debian 9) ==== | ||
- | Le fonctionnement est identique, à ceci près, qu'il n'est pas utile d' | + | Le fonctionnement est identique, à ceci près : |
+ | |||
+ | === Activer dropbear dans l'initramfs === | ||
+ | |||
+ | '' | ||
# enable dropbear explicitly | # enable dropbear explicitly | ||
DROPBEAR=y | DROPBEAR=y | ||
+ | === Forcer l' | ||
+ | |||
+ | Il n'est plus utile de forcer // | ||
+ | |||
+ | 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, # | ||
+ | those matching the $DROPBEAR_IFDOWN shell pattern (default: ' | ||
+ | special value ' | ||
+ | tables and addresses. | ||
==== Variante ===== | ==== Variante ===== | ||
'' | '' | ||
Ligne 110: | Ligne 136: | ||
===== Connexion à la machine ===== | ===== Connexion à la machine ===== | ||
+ | * seul l' | ||
+ | * il est possible de remplacer le message '' | ||
==== Avec Jessie (debian 8) ==== | ==== Avec Jessie (debian 8) ==== | ||
Ligne 117: | Ligne 145: | ||
Explications : | Explications : | ||
- | * L' | + | * L' |
* La phrase de passe est écrite dans le [[https:// | * La phrase de passe est écrite dans le [[https:// | ||
* Un fichier // | * Un fichier // | ||
Ligne 123: | Ligne 151: | ||
Notez qu'il est possible de se connecter simplement en ssh à la machine ('' | Notez qu'il est possible de se connecter simplement en ssh à la machine ('' | ||
- | === À partir de stretch (debian 9) === | + | ==== À partir de stretch (debian 9) ==== |
- | On peut toujours se connecter avec la méthode décrite, ci-dessus, mais désormais le paquet cryptsetup | + | On peut toujours se connecter avec la méthode décrite, ci-dessus, mais désormais le paquet cryptsetup |
Pour cela, on ajoute la clé ssh autorisée à se connecter au boot, avec les commandes suivante : | Pour cela, on ajoute la clé ssh autorisée à se connecter au boot, avec les commandes suivante : | ||
Ligne 135: | Ligne 163: | ||
ou avec votre éditeur de texte préféré. | ou avec votre éditeur de texte préféré. | ||
- | Dès lors pour se connecter il suffit de lancer : | + | Dès lors, pour se connecter, il suffit de lancer : |
ssh -t -o UserKnownHostsFile=~/ | ssh -t -o UserKnownHostsFile=~/ | ||
Ligne 160: | Ligne 188: | ||
//À 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' | Le serveur SSH dans l' | ||
Ligne 167: | Ligne 196: | ||
* En étant sur le même LAN que votre machine, vous pouvez utiliser l' | * En étant sur le même LAN que votre machine, vous pouvez utiliser l' | ||
- | ===== Mise en place avec debian 9 (stretch) ===== | ||
- | |||
- | FIXME Paragraphe en attente de relecture | ||
- | |||
- | ==== Côté serveur ==== | ||
- | |||
- | === Installation === | ||
- | |||
- | # apt install dropbear | ||
- | |||
- | * **À noter** : | ||
- | * Le paquet '' | ||
- | * Le paquet '' | ||
- | |||
- | === Configuration === | ||
- | |||
- | == dropbear == | ||
- | |||
- | * Configuration générale | ||
- | |||
- | Avec cette configuration, | ||
- | |||
- | Ces clés sont stockées par le client ssh dans ~/ | ||
- | |||
- | Pour éviter que notre client ssh ne crie à chaque connexion croyant que l'on ne se connecte pas à la même machine, nous allons utiliser des ports de connexion différent pour dropbear et openssh-server. | ||
- | |||
- | La configuration se fait en éditant le fichier / | ||
- | |||
- | # | ||
- | par | + | ===== Complément et alternative ===== |
- | DROPBEAR_OPTIONS=-p 4748 -w -s -j -k -I 60 | + | ==== Sécurisation de dropbear-initramfs ==== |
- | Ce qui peut être fait en une commande, avec : | + | À partir de debian 9, il y a une configuration spécifique pour le paquet '' |
- | # sed -i.bak | + | Sans rien y toucher ça marche, mais il est possible d' |
- | Explication des options : | + | Quelques |
| **-p** | Listen on specified TCP port. | | | **-p** | Listen on specified TCP port. | | ||
| **-s** | Disable password logins. | | | **-s** | Disable password logins. | | ||
Ligne 212: | Ligne 212: | ||
| **-I** | Disconnect the session if no traffic is transmitted or received for n seconds. | | | **-I** | Disconnect the session if no traffic is transmitted or received for n seconds. | | ||
- | * Authentification | + | La ligne ''# |
- | Le paquet cryptsetup permet l' | + | ==== Cohabitation dropbear |
- | Avec l' | + | 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). |
- | On ajoute la clé ssh avec les commandes suivante : | + | Ces clés sont stockées par le client SSH dans ~/.ssh/ |
- | # printf " | + | 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 : |
- | | + | |
- | + | * Définir un port de connexion différent pour dropbear en utilisant | |
- | ou avec votre éditeur de texte préféré. | + | |
- | + | ||
- | == IP statique == | + | |
- | + | ||
- | Pour qu'une IP de connexion soit disponible dès le boot, nous allons définir une IP statique dans le fichier | + | |
- | + | ||
- | * Identifier le nom de l' | + | |
- | + | ||
- | + | ||
- | $ ip -o a s | cut -d " " -f 2,7 | + | |
- | + | ||
- | * Ajout du pilote de la carte réseau à l' | + | |
- | + | ||
- | Remplacer < | + | |
- | + | ||
- | # grep " | + | |
- | + | ||
- | * Ajout de l'IP statique | + | |
- | + | ||
- | Éditer le fichier / | + | |
- | + | ||
- | DEVICE= | + | |
- | + | ||
- | par | + | |
- | + | ||
- | # network configuration. | + | |
- | # network module is loaded by / | + | |
- | # IP should be like IP=< | + | |
- | DEVICE=enp2s0 | + | |
- | IP=111.222.333.444:: | + | |
- | + | ||
- | + | ||
- | * Forcer l' | + | |
- | + | ||
- | Enfin, il faut forcer l'extinction de l'interface réseau allumée depuis l'initramfs avant sa réactivation par le système principal. | + | |
- | + | ||
- | Pour cela, ajouter la règle suivante dans la configuration de l'interface (/etc/network/ | + | |
- | + | ||
- | pre-up ip addr flush dev enp2s0 | + | |
- | + | ||
- | Ce qui nous donne : | + | |
- | + | ||
- | allow-hotplug enp2s0 | + | |
- | iface enp2s0 inet static | + | |
- | pre-up ip addr flush dev enp2s0 | + | |
- | address 111.222.333.444 | + | |
- | gateway 111.222.333.254 | + | |
- | netmask 255.255.255.0 | + | |
- | dns-nameservers 111.222.333.254 | + | |
- | + | ||
- | + | ||
- | == Reconstruire l'initramfs | + | |
- | + | ||
- | Notre configuration est en place, il ne reste plus qu'à reconstruire l'initramfs : | + | |
- | + | ||
- | # update-initramfs -u | + | |
- | + | ||
- | ==== Et côté client ==== | + | |
- | + | ||
- | === Configuration === | + | |
- | + | ||
- | SSH permet de définir des configurations par défaut dans le fichier ~/.ssh/config. Dans notre cas, la configuration pourrait être de ce type : | + | |
- | + | ||
- | Host host-init | + | |
- | Hostname machine.example.org | + | |
- | User root | + | |
- | Port 4748 | + | |
- | IdentityFile ~/ | + | |
- | IdentitiesOnly yes | + | |
- | + | ||
- | === Connexion === | + | |
- | + | ||
- | A la connexion on se retrouve sur un shell, qui nous demande gentiment la phrase de passe : | + | |
- | + | ||
- | Please unlock disk sda2_crypt: | + | |
- | + | ||
- | Une fois la phrase de passe validée, on se fait déconnecter et le //vrai// démarrage de la machine commence : | + | |
- | + | ||
- | cryptsetup: sda2_crypt set up successfully | + | |
- | Shared connection to 111.222.333.444 closed. | + | |
- | + | ||
- | + | ||
- | ==== Ressources externes ==== | + | |
- | + | ||
- | * [[https:// | + | |
- | * [[https:// | + | |
- | * [[https:// | + | |
- | * [[https:// | + | |
- | * [[https:// | + | |
===== Le cas particulier d'une Brique Internet ===== | ===== Le cas particulier d'une Brique Internet ===== | ||
Ligne 318: | Ligne 229: | ||
Dropbear est déjà installé et utilisé sur les installations chiffrées de la Brique Internet, donc pas besoin de l' | Dropbear est déjà installé et utilisé sur les installations chiffrées de la Brique Internet, donc pas besoin de l' | ||
- | Ouvrir ''/ | + | Ouvrir ''/ |
vi / | vi / | ||
Ligne 348: | Ligne 259: | ||
Il est important de se rappeler les limites d'une telle méthode. Si un attaquant obtient un accès root au système, il peut obtenir la clé de chiffrement ('' | Il est important de se rappeler les limites d'une telle méthode. Si un attaquant obtient un accès root au système, il peut obtenir la clé de chiffrement ('' | ||
- | Dans tous les cas, ça rend l' | + | Dans tous les cas, cela rend l' |
À noter aussi, [[http:// | À noter aussi, [[http:// | ||
+ | |||
+ | ===== Ajouter, modifier et supprimer des phrases de passes | ||
+ | |||
+ | Il est possible d' | ||
+ | |||
+ | ==== Détecter la partition chiffrée avec lsblk ==== | ||
+ | < | ||
+ | # lsblk | ||
+ | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT | ||
+ | fd0 | ||
+ | sda | ||
+ | ├─sda1 | ||
+ | ├─sda2 | ||
+ | └─sda5 | ||
+ | └─sda5_crypt | ||
+ | ├─foo--vg-root | ||
+ | ├─foo--vg-var | ||
+ | ├─foo--vg-swap_1 | ||
+ | ├─foo--vg-tmp | ||
+ | └─foo--vg-home | ||
+ | sr0 11:0 1 290M 0 rom | ||
+ | sr1 11:1 1 1024M 0 rom | ||
+ | </ | ||
+ | |||
+ | La partition chiffrée est donc '' | ||
+ | |||
+ | On peut vérifier que la partition est bien une partition Luks avec la commande suivante : | ||
+ | < | ||
+ | # cryptsetup -v isLuks /dev/sda5 | ||
+ | Command successful. | ||
+ | |||
+ | # cryptsetup -v isLuks /dev/sda1 | ||
+ | Device /dev/sda1 is not a valid LUKS device. | ||
+ | Command failed with code 22: Invalid argument | ||
+ | |||
+ | # cryptsetup -v isLuks / | ||
+ | Device / | ||
+ | Command failed with code 22: Invalid argument | ||
+ | </ | ||
+ | |||
+ | Toutes les commandes '' | ||
+ | |||
+ | ==== Pour ajouter une phrase de passe : ==== | ||
+ | |||
+ | < | ||
+ | # cryptsetup -v luksAddKey /dev/sda5 | ||
+ | Enter any existing passphrase: ********* | ||
+ | Key slot 1 unlocked. | ||
+ | Enter new passphrase for key slot: ********* | ||
+ | Verify passphrase: ********* | ||
+ | Key slot 1 unlocked. | ||
+ | Command successful. | ||
+ | </ | ||
+ | |||
+ | ==== Pour supprimer une phrase de passe : ==== | ||
+ | |||
+ | < | ||
+ | # cryptsetup -v luksRemoveKey /dev/sda5 | ||
+ | Enter passphrase to be deleted: ****** | ||
+ | Key slot 0 unlocked. | ||
+ | Key slot 0 selected for deletion. | ||
+ | Command successful. | ||
+ | </ | ||
+ | |||
+ | Dans le cas où la passphrase n' | ||
+ | < | ||
+ | # cryptsetup -v luksRemoveKey /dev/sda5 | ||
+ | Enter passphrase to be deleted: | ||
+ | No key available with this passphrase. | ||
+ | Command failed with code 1: Operation not permitted | ||
+ | </ | ||
+ | |||
+ | ==== Pour modifier une phrase de passe : ==== | ||
+ | |||
+ | - Ajouter une nouvelle phrase de passe. | ||
+ | - :!: rebooter pour tester la nouvelle phrase de passe (ignorez cette étape à vos risques et périls) | ||
+ | - Supprimer l' |
debian-fde-dropbear.txt · Dernière modification : 2018/12/14 11:02 de kippix