So öffnen Sie einen Port zu Beginn des Startvorgangs, um LUKS über SSH zu entsperren

11

Ich habe einen vollständig verschlüsselten Server mit Debian 7 und Dropbear und Busybox eingerichtet, um den LUKS-Container über SSH zu entsperren (wie in diesem Tutorial und in dieser U & L-Antwort beschrieben ).

Wenn ich beim Neustart versuche, SSH an den Server (über das LAN) zu senden, wird leider der Fehler "Verbindung abgelehnt" angezeigt. Ich habe versucht telnetund nmapauf den Standardport (22) und beide sagen, der Port ist geschlossen.

Der Server hat eine ufwRegel, um den gesamten Datenverkehr aus dem LAN zu akzeptieren:

Anywhere         ALLOW       192.168.1.0/24

Ich habe versucht , den Port zu ändern , dass dropbear lauscht in /etc/defaults/dropbearaber sshund telnetnoch verweigert Verbindungen sind 1 .

Wie kann ich sicherstellen, dass zu diesem Zeitpunkt des Startvorgangs ein Port geöffnet ist, damit ich eine Verbindung herstellen kann, um den LUKS-Container zu entsperren?

Das Deaktivieren der Firewall macht keinen Unterschied: nmapZeigt an, dass alle Ports noch geschlossen sind.

Update 2/14

Ich fügte break=premountder Kernel-Zeile hinzu und stöberte in den Initramfs herum. dropbearhat, aber das Netzwerk ist der Autor nicht bis zu diesem Zeitpunkt. Nach dem Beenden wird das Netzwerk gestartet und der Startvorgang fortgesetzt, bis Sie aufgefordert werden, das LUKS-Gerät zu entsperren.

An diesem Punkt wird das Netzwerk ist , und die Host der korrekte IP - Adresse zugewiesen wurde, aber Port 22 ist noch geschlossen.

Die IP-Leitung, die /etc/initramfs-tools/intiramfs.confich verwende, lautet:

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

In Übereinstimmung mit den Anweisungen in /usr/share/doc/cryptsetup/README.remote.gzIch habe versucht, nur die Geräteoption hinzuzufügen, aber das reicht nicht aus, um das Netzwerk aufzurufen und eine DHCP-Lease zu erhalten.

Update 10.11.14

Karls Antwort war das, was erforderlich war: Das Einrichten /etc/initramfs-tools/conf.d/cryptrootwar der Schlüssel:

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

Dieser Leitfaden erwies sich auch als aktueller und relevanter (und erfolgreicher).

Jasonwryan
quelle
1
BEEINDRUCKEND! Ich wusste überhaupt nicht, dass Sie einen vollständig gesperrten LUKS aus der Ferne entsperren können. Natürlich kann ich Ihre Frage nicht mit Sicherheit beantworten, aber ich würde vermuten, dass sshd noch nicht gestartet ist. Auf meinem Computer startet sshd später im Prozess.
Emory
1
Haben Sie Konsolenzugriff auf den Computer, während er sich in der Busybox-Umgebung befindet? Können Sie überprüfen, ob Dropbear tatsächlich (via ps) läuft und den erwarteten Port abhört (via netstat)?
Larsks
larsks - nein, denn an der Konsole wartet die Eingabeaufforderung auf die Eingabe der Passphrase, und das Wechseln zu einem anderen TTY bedeutet nur einen leeren Bildschirm (wenn ich Sie richtig verstanden habe).
Jasonwryan
Können Sie (vorübergehend) die LUKS-Verschlüsselung entfernen und überprüfen, ob Drop Bear tatsächlich ausgeführt wird?
Emory
1
Haben Sie versucht, einen der break=XBoot-Parameter zu verwenden, um eine frühe initramfsShell zu erhalten? Immer wenn ich Probleme mit der Dateisystemverschlüsselung debugge, verwende ich break=premount. Sie können die Situation überprüfen, beheben und mit dem Booten fortfahren.
Alexios

Antworten:

3

Ich hatte vor einigen Wochen das gleiche Problem (Debian Wheezy 7.6) und nach einigen Tagen der Fehlerbehebung stellte ich fest, dass eine Konfigurationsdatei fehlte, die verhinderte, dass das Cryptroot-Skript auf init-top korrekt ausgeführt wurde, sodass es nicht gestoppt wurde um das Passwort über ssh zu erfragen und den Dropbear am Ende der Sequenz zu töten (init-bottom).

Die Konfigurationsdatei wird aufgerufen cryptrootund sollte sich unter befinden. /etc/initramfs-tools/conf.d/ Wenn ich mich nicht irre, sollte die Konfigurationsdatei während der Installation automatisch erstellt worden sein (ich habe nur ein Tutorial über diese Konfigurationsdatei gelesen), aber irgendwie nicht (auf einem physischen Server und in getestet) eine VM, dasselbe Betriebssystem und dieselben Versionen)

Ich brauchte einige Versuche, um es richtig zu konfigurieren, da ich zu diesem Zeitpunkt nicht die richtige Syntax finden konnte. Meine Cryptroot-Konfigurationsdatei lautet wie folgt:

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

Sobald die Konfigurationsdatei erstellt wurde, aktualisieren Sie einfach die initramfs und versuchen Sie es erneut:

update-initramfs -u
Karl
quelle
Du bist eine Legende! Vielen Dank: Ich hatte ewig damit zu kämpfen und die Hoffnung auf eine Lösung ziemlich aufgegeben. Meine cryptrootSyntax unterscheidet sich von Ihrer, aber Ihre Antwort hat ausgereicht, um mich in die richtige Richtung zu weisen. Ich bin dir zu Dank verpflichtet.
Jasonwryan
Ich bin froh, dass du es endlich geschafft hast. Ich habe Ihre Frage gesehen, als ich mein Problem untersucht habe, und ich dachte, ich sollte posten, wie ich es gelöst habe, sobald ich es zum Laufen gebracht habe.
Karl
3

Die Betreffzeile ist falsch. Das Problem ist kein geschlossener Port, sondern ein Port, der nicht gebunden war. SSHd hat noch nicht begonnen; Das ist der Grund, warum Sie keine Verbindung herstellen können.

poige
quelle
@camh, gibt es dazu irgendwelche Regeln?
Poige
Ich habe mich mehr auf den ersten Satz konzentriert, der redaktionell ist. Der Rest ist eher knapp, um eine gute Antwort zu sein, aber ich denke, es ist immer noch eine Antwort. Ich werde meinen Kommentar entfernen.
Camh
@ Camh, ich verstehe ...
Poige
Ich verwende nicht sshd: Wie in der Frage angegeben, versuche ich, eine Verbindung zu einer Dropbear-Instanz herzustellen, die standardmäßig auf Port 22 ausgeführt wird.
Jasonwryan
@jasonwryan, es spielt keine Rolle, welchen TCP-Dienst Sie genau verwenden möchten. Was wirklich zählt, ist, dass er nicht gestartet wird.
Poige
3

Der Dropbear (SSH-Server) sollte sehr früh während der Startphase gestartet werden - früher als die init(rcN.d) -Sequenz- und Firewall-Init-Skripte. noch früher als / gemountet ist (es ist auch verschlüsselt, oder?). Es geht also darum initramfs, das Pre- / Userland vom Bootloader für den Kernel zu laden. Das Bild wird (neu) generiert update-initramfs -uaus Inhalten von /etc/initramfs-tools/, einschließlich Dropbear-Konfiguration in /etc/initramfs-tools/etc/dropbear/. Um mit der Dropbear-Konfiguration zu spielen, spielen Sie mit dieser.

Daher einige Punkte zu überprüfen:

  • dropbear startet nicht: Es wurde nicht gut in die initramfs-Sequenz eingesteckt.
  • Standard-Firewall verweigert alle.
Jahr
quelle
Danke yarek: Ich denke du hast recht - ich habe meine Frage mit einem Debian-Fehler (und einem Fix, der nicht funktioniert) aktualisiert. Ich habe auch versucht, die Firewall zu deaktivieren.
Jasonwryan