Comment ouvrir un port au début du processus de démarrage pour déverrouiller LUKS via SSH

11

J'ai un serveur entièrement crypté exécutant Debian 7 et j'ai configuré dropbear et busybox pour déverrouiller le conteneur LUKS via SSH (comme décrit dans ce tutoriel et dans cette réponse U&L ).

Malheureusement, chaque fois que j'essaye de SSH sur le serveur (via le LAN) au redémarrage, j'obtiens une erreur "Connexion refusée". Je l' ai essayé telnetet nmapau port par défaut (22) et autant dire que le port est fermé.

Le serveur a une ufwrègle pour accepter tout le trafic provenant du LAN:

Anywhere         ALLOW       192.168.1.0/24

J'ai essayé de changer le port qui écoute Dropbear sur dans /etc/defaults/dropbearmais sshet telnetsont des connexions toujours refusé 1 .

Comment puis-je m'assurer qu'un port est ouvert à ce stade du processus de démarrage afin de pouvoir me connecter pour déverrouiller le conteneur LUKS?

La désactivation du pare-feu ne fait aucune différence: nmapaffiche tous les ports toujours fermés.

Mise à jour 2/14

J'ai ajouté break=premountà la ligne du noyau et j'ai fouillé dans les initramfs. dropbeara commencé, mais le réseau n'est pas opérationnel à ce stade. Après avoir quitté, le réseau apparaît et le démarrage se poursuit jusqu'à l'invite de déverrouillage du périphérique LUKS.

À ce stade, le réseau est en place et l'hôte a reçu la bonne adresse IP, mais le port 22 est toujours fermé.

La ligne IP que /etc/initramfs-tools/intiramfs.confj'utilise est:

export IP=192.168.1.200::192.168.1.1:255.255.255.0::eth0:off

Conformément aux instructions de /usr/share/doc/cryptsetup/README.remote.gzJ'ai essayé d'ajouter simplement l'option de périphérique, mais ce n'est pas suffisant pour mettre le réseau en place et obtenir un bail DHCP.

Mise à jour 11/10/14

La réponse de Karl était ce qu'il fallait: l'installation /etc/initramfs-tools/conf.d/cryptrootétait la clé:

target=md1_crypt,source=UUID=8570d12k-ccha-4985-s09f-e43dhed9fa2a

Ce guide s'est également révélé plus à jour et plus pertinent (et efficace).

jasonwryan
la source
1
HOU LA LA! Je ne savais absolument pas que vous pouviez déverrouiller à distance un LUKS entièrement verrouillé. Évidemment, je ne peux pas répondre à votre question avec certitude, mais je suppose que sshd n'a pas commencé. Sur ma machine, sshd démarre plus tard dans le processus.
emory
1
Avez-vous un accès console à la machine lorsqu'elle se trouve dans l'environnement busybox? Pouvez-vous vérifier que dropbear fonctionne réellement (via ps) et écoute sur le port que vous attendez (via netstat)?
larsks
larsks - non, car à la console, l'invite attend la saisie de la phrase secrète, et le passage à un autre ATS signifie simplement un écran vide (si je vous ai bien compris).
jasonwryan
Pouvez-vous (temporairement) supprimer le cryptage LUKS et vérifier que l'ours tombé est en cours d'exécution?
emory
1
Avez-vous essayé d'utiliser l'un des break=Xparamètres de démarrage pour obtenir un premier initramfsshell? Chaque fois que je débogue des problèmes de chiffrement du système de fichiers, j'utilise break=premount. Vous pouvez vérifier la situation, la résoudre et poursuivre le démarrage.
Alexios

Réponses:

3

J'ai eu ce même problème il y a quelques semaines (Debian Wheezy 7.6) et après quelques jours de dépannage, j'ai découvert qu'il manquait un fichier de configuration qui empêchait le script cryptroot sur init-top de fonctionner correctement, donc il ne s'arrêtait pas pour demander le mot de passe via ssh, tuant le dropbear à la fin de la séquence (init-bottom).

Le fichier de configuration est appelé cryptrootet devrait être sous /etc/initramfs-tools/conf.d/ Si je ne me trompe pas, ce fichier de configuration aurait dû être créé automatiquement lors de l'installation (j'ai lu un seul tutoriel parlant de ce fichier de configuration) mais d'une manière ou d'une autre il ne l'a pas fait (testé sur un serveur physique et dans une VM, même OS et versions)

Il m'a fallu quelques essais pour le configurer correctement, car je ne pouvais pas trouver la syntaxe appropriée à ce moment-là. Mon fichier de configuration cryptroot est le suivant:

target=crypt-root,source=/dev/vg0/root,lvm=root

Une fois le fichier de configuration créé, il suffit de mettre à jour les initramfs et de réessayer:

update-initramfs -u
Karl
la source
Tu es une légende! Merci: j'avais lutté avec cela pendant des siècles et j'avais à peu près abandonné tout espoir de le résoudre. Ma cryptrootsyntaxe est différente de la vôtre, mais votre réponse était suffisante pour m'orienter dans la bonne direction. Je vous suis redevable.
jasonwryan
Je suis content que vous ayez enfin réussi à le faire fonctionner. J'ai vu votre question pendant que j'enquêtais sur mon problème et j'ai pensé que je devrais poster comment je l'ai résolu une fois que je l'ai mis en marche.
Karl
3

La ligne d'objet est incorrecte. Le problème n'est pas un port fermé, c'est un port qui n'était pas lié. SSHd n'a pas encore commencé; c'est la raison pour laquelle vous ne pouvez pas vous y connecter.

poige
la source
@camh, y a-t-il des règles à ce sujet?
poige
Je me concentrais davantage sur la première phrase, qui est éditoriale. Le reste est plutôt concis pour être une bonne réponse, mais je suppose que c'est toujours une réponse. Je vais supprimer mon commentaire.
camh
@camh, je vois ...
poige
Je n'utilise pas sshd: comme l'indique la question, j'essaie de me connecter à une instance dropbear qui s'exécute sur le port 22 par défaut.
jasonwryan
@jasonwryan, le service TCP que vous essayez d'utiliser ne joue aucun rôle, ce qui compte vraiment, c'est qu'il ne démarre pas.
poige
3

Le dropbear (serveur ssh) est censé être démarré très tôt pendant la phase de démarrage - plus tôt que la initséquence (rcN.d) et les scripts d'initialisation du pare-feu; encore plus tôt que / est monté (il est également chiffré, non?). Il s'agit donc initramfsdu pré / userland chargé pour le noyau par le chargeur de démarrage. L'image est (re) générée par à update-initramfs -upartir du contenu de /etc/initramfs-tools/, y compris la configuration dropbear dans /etc/initramfs-tools/etc/dropbear/. Pour jouer avec la configuration dropbear, jouez avec celle-ci.

Ainsi, quelques points à vérifier:

  • dropbear ne démarre pas: il n'a pas été bien connecté à la séquence initramfs;
  • le pare-feu par défaut refuse tout.
yrk
la source
Merci yarek: Je pense que vous avez raison - j'ai mis à jour ma question avec un bogue Debian (et un correctif qui ne fonctionne pas). J'ai également essayé de désactiver le pare-feu.
jasonwryan