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édenteProchaine révisionLes deux révisions suivantes | ||
debian-fde-dropbear [2017/12/23 11:36] – [À partir de stretch (debian 9)] aurelien | debian-fde-dropbear [2018/05/03 07:22] – [Avec Jessie (debian 8)] daimrod | ||
---|---|---|---|
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' | ||
dropbear: WARNING: Invalid authorized_keys file, remote unlocking of cryptroot via SSH won't work! | dropbear: WARNING: Invalid authorized_keys file, remote unlocking of cryptroot via SSH won't work! | ||
- | | + | |
===== Ajout du pilote de la carte réseau à l' | ===== Ajout du pilote de la carte réseau à 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 |
# " | # " | ||
grep DRIVER / | grep DRIVER / | ||
- | | + | |
qui retourne par exemple | qui retourne par exemple | ||
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 109: | Ligne 135: | ||
===== Connexion à la machine ===== | ===== Connexion à la machine ===== | ||
+ | |||
+ | ==== Avec Jessie (debian 8) ==== | ||
ssh -t -o UserKnownHostsFile=~/ | ssh -t -o UserKnownHostsFile=~/ | ||
Ligne 115: | Ligne 143: | ||
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 121: | Ligne 149: | ||
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) ==== | ||
+ | |||
+ | 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. ''/ | ||
+ | |||
+ | Pour cela, on ajoute la clé ssh autorisée à se connecter au boot, avec les commandes suivante : | ||
+ | |||
+ | # echo -n " | ||
+ | |||
+ | # cat / | ||
+ | |||
+ | ou avec votre éditeur de texte préféré. | ||
+ | |||
+ | Dès lors, pour se connecter, il suffit de lancer : | ||
+ | |||
+ | ssh -t -o UserKnownHostsFile=~/ | ||
+ | |||
+ | |||
==== Configuration persistante de SSH ==== | ==== Configuration persistante de SSH ==== | ||
Ligne 141: | Ligne 186: | ||
//À 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 148: | Ligne 194: | ||
* 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 | + | ===== Complément et alternative ===== |
- | ==== Côté serveur | + | ==== Sécurisation de dropbear-initramfs |
- | === Installation === | + | À partir de debian 9, il y a une configuration spécifique pour le paquet '' |
- | # apt install | + | Sans rien y toucher ça marche, mais il est possible d' |
- | * **À noter** : | + | Quelques options extraites |
- | * 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 | + | |
- | + | ||
- | DROPBEAR_OPTIONS=-p 4748 -w -s -j -k -I 60 | + | |
- | + | ||
- | Ce qui peut être fait en une commande, avec : | + | |
- | + | ||
- | # sed -i.bak ' | + | |
- | + | ||
- | Explication des options | + | |
| **-p** | Listen on specified TCP port. | | | **-p** | Listen on specified TCP port. | | ||
| **-s** | Disable password logins. | | | **-s** | Disable password logins. | | ||
Ligne 193: | Ligne 210: | ||
| **-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'inclusion d'un script de déverrouillage (cf. ''/ | + | |
- | + | ||
- | Avec l' | + | |
- | + | ||
- | On ajoute la clé ssh avec les commandes suivante : | + | |
- | + | ||
- | | + | |
- | + | ||
- | # cat / | + | |
- | + | ||
- | 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 | + | |
- | + | ||
- | * Identifier le nom de l'interface réseau | + | |
- | + | ||
- | + | ||
- | $ ip -o a s | cut -d " " -f 2,7 | + | |
- | + | ||
- | * Ajout du pilote de la carte réseau à l'initramfs (au cas où) | + | |
- | + | ||
- | 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'extinction de l'interface | + | |
- | + | ||
- | Enfin, il faut forcer l' | + | |
- | + | ||
- | Pour cela, ajouter la règle suivante dans la configuration de l' | + | |
- | + | ||
- | 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' | + | |
- | + | ||
- | Notre configuration est en place, il ne reste plus qu'à reconstruire l' | + | |
- | + | ||
- | # update-initramfs -u | + | |
- | + | ||
- | ==== Et côté client ==== | + | |
- | + | ||
- | === Configuration === | + | |
- | + | ||
- | SSH permet de définir des configurations par défaut dans le fichier ~/ | + | |
- | + | ||
- | 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 | + | ==== Cohabitation dropbear |
- | cryptsetup: sda2_crypt set up successfully | + | 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). |
- | Shared connection to 111.222.333.444 closed. | + | |
+ | Ces clés sont stockées par le client SSH dans ~/ | ||
- | ==== Ressources externes ==== | + | 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 : |
- | * [[https:// | + | * Utiliser un fichier known_hosts spécifique, |
- | * [[https:// | + | * Définir un port de connexion différent pour dropbear en utilisant l' |
- | * [[https://projectgus.com/ | + | |
- | * [[https:// | + | |
- | * [[https:// | + | |
===== Le cas particulier d'une Brique Internet ===== | ===== Le cas particulier d'une Brique Internet ===== | ||
Ligne 299: | Ligne 227: | ||
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 / | ||
debian-fde-dropbear.txt · Dernière modification : 2018/12/14 11:02 de kippix