Cómo abrir un puerto temprano en el proceso de arranque para desbloquear LUKS a través de SSH

11

Tengo un servidor totalmente encriptado que ejecuta Debian 7 y he configurado dropbear y busybox para desbloquear el contenedor LUKS a través de SSH (como se describe en este tutorial y en esta respuesta U&L ).

Desafortunadamente, cada vez que intento y SSH al servidor (a través de la LAN) al reiniciar, aparece un error de "Conexión rechazada". He intentado telnety nmapal puerto predeterminado (22) y ambos dicen que el puerto está cerrado.

El servidor tiene una ufwregla para aceptar todo el tráfico de la LAN:

Anywhere         ALLOW       192.168.1.0/24

He intentado cambiar el puerto que escuchas en dropbear en /etc/defaults/dropbearpero sshy telnettodavía se les niega conexiones 1 .

¿Cómo puedo asegurarme de que un puerto esté abierto en esa etapa del proceso de arranque para poder conectarme para desbloquear el contenedor LUKS?

Deshabilitar el firewall no hace ninguna diferencia: nmapmuestra todos los puertos aún cerrados.

Actualización 14/02

Agregué break=premounta la línea del kernel y tuve que hurgar en initramfs. dropbearha comenzado, pero la red no está activa en ese momento. Después de salir, la red aparece y el arranque continúa hasta que se le solicite que desbloquee el dispositivo LUKS.

En este punto, la red está activa y al host se le ha asignado la dirección IP correcta, pero el puerto 22 todavía está cerrado.

La línea IP /etc/initramfs-tools/intiramfs.confque estoy usando es:

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

De acuerdo con las instrucciones en /usr/share/doc/cryptsetup/README.remote.gzque he intentado simplemente agregar la opción de dispositivo, pero eso no es suficiente para activar la red y obtener un contrato de arrendamiento de dhcp.

Actualización 10/11/14

La respuesta de Karl fue lo que se requería: la configuración /etc/initramfs-tools/conf.d/cryptrootera la clave:

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

Esta guía también demostró ser más actualizada y relevante (y exitosa).

jasonwryan
fuente
1
¡GUAUU! No sabía por completo que podía desbloquear remotamente un LUKS completamente bloqueado. Obviamente no puedo responder a su pregunta con certeza, pero supongo que sshd no ha comenzado. En mi máquina, sshd comienza más tarde en el proceso.
emory
1
¿Tiene acceso de consola a la máquina mientras está en el entorno de busybox? ¿Puede verificar que dropbear realmente se esté ejecutando (vía ps) y escuchando en el puerto que espera (vía netstat)?
larsks
larsks - no, porque en la consola el aviso está esperando que se ingrese la frase de contraseña, y cambiar a otro TTY solo significa una pantalla en blanco (si lo entendí correctamente).
jasonwryan
¿Puede (temporalmente) eliminar el cifrado LUKS y verificar que Drop Bear se esté ejecutando realmente?
emory
1
¿Has intentado usar uno de los break=Xparámetros de arranque para obtener un initramfsshell temprano ? Cada vez que depuro problemas de cifrado del sistema de archivos, lo uso break=premount. Puede verificar cuál es la situación, resolverla y continuar arrancando.
Alexios

Respuestas:

3

Recibí este mismo problema hace unas semanas (Debian Wheezy 7.6) y después de algunos días de solución de problemas descubrí que faltaba un archivo de configuración que impedía que el script cryptroot en init-top se ejecutara correctamente, por lo tanto, no se detenía para solicitar la contraseña a través de ssh, eliminando el dropbear al final de la secuencia (init-bottom).

Se llama al archivo de configuración cryptrooty debe estar debajo. /etc/initramfs-tools/conf.d/ Si no me equivoco, ese archivo de configuración debería haberse creado automáticamente durante la instalación (he leído solo un tutorial que habla sobre ese archivo de configuración) pero de alguna manera no lo hizo (probado en un servidor físico y en una VM, mismo sistema operativo y versiones)

Me tomó un par de intentos configurarlo correctamente, ya que no pude encontrar la sintaxis adecuada en ese momento. Mi archivo de configuración cryptroot es el siguiente:

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

Una vez creado el archivo de configuración, simplemente actualice los initramfs e intente nuevamente:

update-initramfs -u
Karl
fuente
Eres una LEYENDA! Gracias: había luchado con esto durante siglos y había perdido la esperanza de resolverlo. Mi cryptrootsintaxis es diferente a la suya, pero su respuesta fue suficiente para señalarme en la dirección correcta. Estoy en deuda contigo.
jasonwryan
Me alegra que finalmente lo hayas hecho funcionar. Vi su pregunta mientras investigaba mi problema y pensé que debería publicar cómo lo resolví una vez que lo ejecuté.
Karl
3

La línea de asunto está mal. El problema no es un puerto cerrado, es un puerto que no estaba vinculado. SSHd aún no ha comenzado; esa es la razón por la que no puedes conectarte a él.

poige
fuente
@camh, ¿hay alguna regla al respecto?
poige
Estaba más centrado en la primera oración, que es editorial. El resto es bastante breve para ser una buena respuesta, pero supongo que sigue siendo una respuesta. Eliminaré mi comentario.
camh
@camh, ya veo ...
poige
No estoy usando sshd: como dice la pregunta, estoy tratando de conectarme a una instancia dropbear que se ejecuta en el puerto 22 de forma predeterminada.
jasonwryan
@jasonwryan, no juega ningún papel qué servicio TCP exactamente estás tratando de usar, lo que realmente importa es que no se haya iniciado.
poige
3

Se supone que el initdropbear (servidor ssh) debe iniciarse muy temprano durante la fase de arranque, antes de la secuencia (rcN.d) y los scripts de inicio del firewall; incluso antes de / está montado (también está encriptado, ¿verdad?). Por lo tanto, se trata de initramfsla tierra previa / de usuario cargada para el núcleo por el cargador de arranque. La imagen se (re) genera a update-initramfs -upartir del contenido de /etc/initramfs-tools/, incluida la configuración dropbear en /etc/initramfs-tools/etc/dropbear/. Para jugar con la configuración dropbear, juega con esa.

Por lo tanto, pocos puntos para verificar:

  • dropbear no se inicia: no se ha conectado bien a la secuencia initramfs;
  • el firewall predeterminado lo niega todo.
yrk
fuente
Gracias yarek: creo que tienes razón: he actualizado mi pregunta con un error de Debian (y una solución que no funciona). También he intentado deshabilitar el firewall.
jasonwryan