Jak otworzyć port na wczesnym etapie procesu uruchamiania, aby odblokować LUKS przez SSH


11

Mam w pełni zaszyfrowany serwer z systemem Debian 7 i skonfigurowałem dropbear i busybox, aby odblokować kontener LUKS przez SSH (jak opisano w tym samouczku i w tej odpowiedzi U&L ).

Niestety, za każdym razem, gdy próbuję i SSH do serwera (przez sieć LAN) przy ponownym uruchomieniu, pojawia się błąd „Odmowa połączenia”. Próbowałem telneti nmapdomyślny port (22) i oba mówią, że port jest zamknięty.

Serwer ma ufwregułę akceptowania całego ruchu z sieci LAN:

Anywhere         ALLOW       192.168.1.0/24

Próbowałem zmienić port dropbear Słuchacze on w /etc/defaults/dropbearale sshi telnetnadal odmówił połączenia 1 .

Jak mogę się upewnić, że port jest otwarty na tym etapie procesu rozruchu, aby móc się połączyć w celu odblokowania kontenera LUKS?

Wyłączenie zapory nie ma znaczenia: nmappokazuje wszystkie porty nadal zamknięte.

Zaktualizuj 2/14

Dodałem break=premountdo linii jądra i miałem kłopoty w initramfs. dropbearzaczął się, ale sieć nie jest w tym momencie uruchomiona. Po wyjściu pojawia się sieć i uruchamianie trwa do momentu wyświetlenia monitu o odblokowanie urządzenia LUKS.

W tym momencie sieć jest uruchomiona, a hostowi przypisano poprawny adres IP, ale port 22 jest nadal zamknięty.

Używana linia IP /etc/initramfs-tools/intiramfs.confto:

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

Zgodnie ze wskazówkami zawartymi w tym rozdziale /usr/share/doc/cryptsetup/README.remote.gzpróbowałem po prostu dodać opcję urządzenia, ale to nie wystarczy, aby uruchomić sieć i uzyskać dzierżawę dhcp.

Aktualizacja 11/10/14

Wymagana była odpowiedź Karla/etc/initramfs-tools/conf.d/cryptroot : kluczem było skonfigurowanie :

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

Przewodnik okazał się również bardziej aktualny i odpowiedni (i udany).


1
ŁAŁ! Zupełnie nie wiedziałem, że możesz zdalnie odblokować całkowicie zablokowany LUKS. Oczywiście nie mogę odpowiedzieć na twoje pytanie z pewnością, ale zgaduję, że sshd się nie zaczął. Na moim komputerze sshd zaczyna się później.
— emory

1
Czy masz dostęp do konsoli na maszynie, gdy jest ona w środowisku busybox? Czy możesz sprawdzić, czy dropbear faktycznie działa (przez ps) i nasłuchuje na porcie, którego oczekujesz (przez netstat)?
— larsks

larsks - nie, ponieważ w konsoli monit czeka na wprowadzenie hasła, a przejście na inny TTY oznacza po prostu pusty ekran (jeśli dobrze cię zrozumiałem).
— jasonwryan

Czy możesz (tymczasowo) usunąć szyfrowanie LUKS i sprawdzić, czy Drop Bear rzeczywiście działa?
— emory

1
Czy próbowałeś użyć jednego z break=Xparametrów rozruchowych, aby uzyskać wczesną initramfspowłokę? Za każdym razem, gdy debuguję szyfrowanie systemu plików, używam break=premount. Możesz sprawdzić, jaka jest sytuacja, rozwiązać ją i kontynuować uruchamianie.
— Alexios

Odpowiedzi:


3

Ten sam problem dostałem kilka tygodni temu (Debian Wheezy 7.6) i po kilku dniach rozwiązywania problemów dowiedziałem się, że brakuje pliku konfiguracyjnego, który uniemożliwiał poprawne działanie skryptu cryptroot na init-top, dlatego nie zatrzymywał się aby zapytać o hasło za pomocą ssh, zabijanie dropbear na końcu sekwencji (init-bottom).

Plik konfiguracyjny jest wywoływany cryptrooti powinien znajdować się w obszarze /etc/initramfs-tools/conf.d/ Jeśli się nie mylę, plik konfiguracyjny powinien zostać utworzony automatycznie podczas instalacji (przeczytałem tylko jeden samouczek mówiący o tym pliku konfiguracyjnym), ale jakoś tak nie było (przetestowane na serwerze fizycznym i w maszyna wirtualna, ten sam system operacyjny i wersje)

Parę prób zajęło mi prawidłowe skonfigurowanie, ponieważ nie mogłem wtedy znaleźć właściwej składni. Mój plik konfiguracyjny cryptroot wygląda następująco:

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

Po utworzeniu pliku konfiguracyjnego wystarczy zaktualizować initramfs i spróbować ponownie:

update-initramfs -u

Jesteś legendą! Dziękuję: walczyłem z tym od wieków i prawie zrezygnowałem z nadziei na rozwiązanie tego. Moja cryptrootskładnia jest inna niż twoja, ale twoja odpowiedź wystarczyła, aby wskazać mi właściwy kierunek. Jestem ci wdzięczny.
— jasonwryan

Cieszę się, że w końcu udało ci się. Widziałem twoje pytanie podczas badania mojego problemu i pomyślałem, że powinienem opublikować, w jaki sposób je rozwiązałem, gdy już działa.
— Karl

3

Temat jest nieprawidłowy. Problemem nie jest zamknięty port, to port, który nie był związany. SSHd jeszcze się nie rozpoczął; dlatego nie możesz się z nim połączyć.


@camh, czy istnieją jakieś zasady dotyczące tego?
— poige

Bardziej skupiałem się na pierwszym zdaniu, które jest redakcyjne. Reszta jest raczej zwięzła, aby być dobrą odpowiedzią, ale myślę, że nadal jest odpowiedzią. Usunę mój komentarz.
— camh

@camh, widzę ...
— poige

Nie używam sshd: jak mówi pytanie, próbuję połączyć się z instancją dropbear, która domyślnie działa na porcie 22.
— jasonwryan

@ jasonwryan, nie odgrywa żadnej roli, jakiej dokładnie usługi TCP próbujesz użyć, ważne jest to, że nie została uruchomiona.
— poige

3

Dropbear (serwer ssh) powinien zostać uruchomiony bardzo wcześnie podczas fazy rozruchu - wcześniej niż initsekwencja (rcN.d) i skrypty inicjujące zaporę ogniową; nawet wcześniej niż / jest zamontowany (jest również szyfrowany, prawda?). Tak więc chodzi o initramfspreland / userland załadowany dla jądra przez boot loader. Obraz jest (ponownie) generowany na update-initramfs -upodstawie zawartości /etc/initramfs-tools/, w tym konfiguracji dropbear w /etc/initramfs-tools/etc/dropbear/. Aby zagrać w konfigurację dropbear, zagraj z tym.

Zatem kilka punktów do sprawdzenia:

  • dropbear nie uruchamia się: nie został dobrze podłączony do sekwencji initramfs;
  • domyślna zapora sieciowa zaprzecza wszystkim.

Dzięki Yarek: Myślę, że masz rację - zaktualizowałem swoje pytanie o błąd debiana (i poprawkę, która nie działa). Próbowałem także wyłączyć zaporę.
— jasonwryan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.