Todos los sistemas en funcionamiento 8 criptomonedas aceptadas · Monero bienvenido Política sin KYC
ChainVPS

Cifrado

Cómo cifrar el disco de un VPS con LUKS y desbloquearlo en remoto

El cifrado de disco en un servidor alquilado no es la misma promesa que en tu portátil. Esto es lo que LUKS realmente te da en un VPS, y el despliegue que mantiene arrancable un servidor cifrado cuando nadie puede acercarse físicamente a la consola.

Seguridad10 min de lectura de lecturaEquipo de ChainVPS

Cómo cifrar el disco de un VPS con LUKS y desbloquearlo en remoto

Cifrar un VPS parece cosa de una sola línea — cryptsetup luksFormat, y listo — y luego, en silencio, no cumple lo que mucha gente creía haber comprado. En una máquina que alquilas, un hipervisor se sitúa por debajo de tu kernel, así que el modelo de amenaza no es aquel para el que se diseñó el cifrado de disco completo. Esta guía es la versión honesta: qué derrota LUKS en un VPS, qué no, las dos rutas de despliegue que funcionan, y cómo desbloquear una raíz cifrada por SSH para que nunca te quedes fuera de tu propio servidor.

Qué te da realmente el cifrado en un servidor alquilado

El cifrado de disco completo protege los datos en reposo. Esa frase carga con mucho significado, y en un VPS conviene precisar qué momentos cuentan como reposo y cuáles no — en esa diferencia es donde se rompen la mayoría de las expectativas.

Hardware retirado

Los discos fallan, se sustituyen y salen del rack. Un volumen LUKS en un disco muerto es un bloque de ruido para quien lo maneje después. El cifrado resuelve este caso por completo.

Un volumen desconectado o copiado

Si se retira un volumen de tu instancia, se clona o se genera una imagen de él mientras la máquina está apagada, el resultado es texto cifrado y una cabecera — no tus archivos.

Una máquina en marcha

Una vez que el volumen está abierto, la clave maestra vive en la memoria del kernel. El acceso a nivel de hipervisor puede, en principio, alcanzarla. El cifrado eleva el coste aquí; no cierra la puerta.

Tus propios errores

La swap sin cifrar, las copias de seguridad en texto plano y los registros escritos antes del montaje quedan todos fuera del contenedor. La mayoría de las fugas reales en servidores cifrados ocurren aquí, no a través del cifrado.

Dilo en voz alta para poder planificar en consecuencia: mientras el volumen está desbloqueado, la clave está en la RAM de un hardware que no es tuyo. LUKS en un VPS es una respuesta sólida frente al acceso offline y una respuesta parcial frente al acceso en caliente. Combínalo con una jurisdicción en la que realmente confíes — consulta /offshore-hosting — en lugar de tratarlo como un sustituto de esta.

Elige la forma antes de escribir un comando

Cuatro configuraciones cubren casi cualquier necesidad real. Elegir la equivocada cuesta una reinstalación, así que decide aquí y no a mitad de camino.

Volumen de datos cifradoUn segundo disco guarda todo lo sensible; la raíz queda sin cifrar. Funciona en un servidor ya en marcha, sin reinstalar — empieza por aquí salvo que tengas una razón para no hacerlo.
Raíz cifradaTodo el sistema vive dentro de LUKS. Requiere una instalación nueva desde una ISO personalizada y una forma de introducir la frase de contraseña en cada arranque.
Cifrado a nivel de archivogocryptfs o age sobre un sistema de archivos normal. Adecuado para un solo directorio, pero el tamaño de los archivos y los metadatos siguen siendo visibles, y es fácil dejar huecos.
Solo copias de seguridad cifradasrestic o borg con una clave fuerte. No es cifrado de disco en absoluto — pero es la capa que nadie debería saltarse, y a mucha gente le basta solo con esto.

Ruta A — cifrar un volumen de datos en un servidor que ya tienes en marcha

Esta es la versión que la mayoría realmente quiere: diez minutos de trabajo, sin reinstalar, y todo lo que importa termina dentro del contenedor. Primero conecta un segundo volumen — en un plan /storage es el disco grande; en un /vps estándar puedes añadir uno en el momento del despliegue.

  1. 1

    Identifica el dispositivo objetivo

    Ejecuta lsblk y confirma que el dispositivo que vas a formatear es el vacío. luksFormat destruye lo que haya en él y no hay marcha atrás.

  2. 2

    Crea el contenedor LUKS2

    cryptsetup luksFormat --type luks2 /dev/vdb te pide escribir YES en mayúsculas y luego fijar una frase de contraseña. Elige una que puedas volver a escribir correctamente en una consola sin historial y sin eco en pantalla.

  3. 3

    Ábrelo y crea un sistema de archivos

    cryptsetup open /dev/vdb cryptdata crea /dev/mapper/cryptdata. Luego mkfs.ext4 /dev/mapper/cryptdata y móntalo donde vayan a vivir los datos, por ejemplo /srv/data.

  4. 4

    Decide cómo se desbloqueará en el arranque

    Puedes escribir la frase de contraseña después de cada reinicio, o añadir un archivo de claves con cryptsetup luksAddKey y guardarlo en la raíz. El archivo de claves es cómodo y estrictamente más débil — ten claro qué compensación estás asumiendo.

  5. 5

    Configura crypttab y fstab

    Añade la asignación a /etc/crypttab usando UUID= en lugar del nombre del dispositivo, y luego monta desde /etc/fstab con nofail para que un desbloqueo fallido nunca bloquee el arranque.

Si el archivo de claves está en la raíz sin cifrar, sé preciso sobre lo que tienes en realidad: el volumen queda protegido frente a un disco que sale del rack o se desconecta de tu instancia, pero no frente a una copia de toda la VM — porque esa copia contiene la clave. Cualquier cosa más sólida exige que la frase de contraseña llegue desde fuera del servidor.

Ruta B — una raíz cifrada desde una ISO personalizada

Cuando el requisito es que no exista nada legible en la máquina mientras está apagada, la propia raíz tiene que estar dentro de LUKS. Eso significa una instalación nueva realizada desde la consola, en un proveedor que te permita arrancar tu propia ISO.

  1. 1

    Arranca el instalador desde la consola

    Monta una ISO netinst de Debian o Ubuntu como ISO personalizada y realiza la instalación por VNC o por serie. Nada de esto funciona por SSH — todavía no hay ningún sistema al que conectarse.

  2. 2

    Usa el particionado guiado con LVM cifrado

    El instalador deja un pequeño /boot sin cifrar, porque algo tiene que ejecutarse antes de que el volumen se abra, y coloca la raíz y la swap dentro de un único contenedor LUKS.

  3. 3

    Elige una frase de contraseña que puedas escribir a ciegas

    La volverás a escribir por SSH en cada reinicio, sin eco en pantalla y sin autocompletado. Aquí una frase de cinco palabras gana a una sopa de símbolos.

  4. 4

    Configura el desbloqueo remoto antes de desconectarte

    Una raíz recién cifrada se quedará esperando en el prompt de la frase de contraseña indefinidamente tras el siguiente reinicio. Configura el desbloqueo remoto en la misma sesión, mientras todavía tienes la consola delante.

En planes con 1–2 GB de RAM, la derivación de clave Argon2id por defecto puede pedir más memoria de la que tiene el initramfs, y el desbloqueo falla en el arranque aunque la frase de contraseña sea correcta. Limítala en el momento del formateo con cryptsetup luksFormat --pbkdf-memory 262144, o inspecciona una cabecera existente con cryptsetup luksDump antes de confiar en que una instancia pequeña reinicie sin supervisión.

Desbloqueo remoto por SSH con dropbear-initramfs

Una raíz cifrada necesita una frase de contraseña antes de que exista el sistema operativo. dropbear-initramfs coloca un pequeño servidor SSH dentro del initramfs para que puedas introducirla desde cualquier lugar — la diferencia entre un servidor cifrado y un ladrillo cifrado.

  1. 1

    Instala el paquete

    apt install dropbear-initramfs. Se engancha en la generación del initramfs y se reconstruye automáticamente en cada futura imagen de kernel.

  2. 2

    Autoriza una clave, y un único comando

    Coloca tu clave pública en /etc/dropbear/initramfs/authorized_keys — en Debian 11 y anteriores, /etc/dropbear-initramfs/authorized_keys. Antepón a la línea no-port-forwarding,no-agent-forwarding,no-x11-forwarding,command="cryptroot-unlock" para que una clave robada no consiga nada más que un prompt.

  3. 3

    Dale red al initramfs

    DHCP funciona donde el proveedor lo ofrece; si no, añade un parámetro estático ip=ADDRESS::GATEWAY:NETMASK::eth0:off a GRUB_CMDLINE_LINUX y ejecuta update-grub. Termina con update-initramfs -u -k all para que el cambio llegue a la imagen.

  4. 4

    Prueba un reinicio completo antes de confiar en ello

    Reinicia con la consola del proveedor abierta en otra ventana, conéctate, introduce la frase de contraseña y observa cómo continúa el arranque. Una ruta de desbloqueo sin probar no es una funcionalidad, es una futura caída.

El initramfs lleva su propia clave de host SSH, distinta de la que presenta el sistema ya arrancado, así que tu cliente avisará de un cambio de clave de host en cada reinicio. Ejecuta dropbear en un puerto separado mediante DROPBEAR_OPTIONS en /etc/dropbear/initramfs/dropbear.conf, o conéctate con ssh -o HostKeyAlias=box-initramfs, y anota ambas huellas digitales.

La gestión de claves es donde suele fallar el cifrado de disco

El cifrado en sí no es el eslabón débil, y nunca lo ha sido. Todo desastre recuperable relacionado con LUKS se reduce a una clave o a una cabecera, así que trata ambas como infraestructura.

  • Haz una copia de la cabecera de inmediato — cryptsetup luksHeaderBackup /dev/vdb --header-backup-file luks-header.img — y guárdala fuera del servidor. Una cabecera dañada por un dd descuidado es pérdida de datos permanente aunque la frase de contraseña sea perfecta.
  • Usa dos ranuras. LUKS2 te da 32: tu frase de contraseña en una, una clave de recuperación larga y aleatoria en otra, guardada en un gestor de contraseñas. Una sola ranura es un punto único de fallo autoinfligido.
  • Rota las claves en el orden correcto en una máquina remota — añade la nueva con luksAddKey, verifica que abre el volumen, y solo entonces elimina la antigua con luksKillSlot. Nunca al revés.
  • Guarda la frase de contraseña y los datos de conexión del servidor en lugares separados. Una nota comprometida no debería entregar a la vez la dirección y la clave.

Lo que cuesta el cifrado en rendimiento

El sobrecoste es real, pero normalmente invisible. Mídelo en la máquina que realmente tienes, en lugar de confiar en un benchmark de otra década.

Cifradoaes-xts-plain64 con una clave de 512 bits es el valor por defecto y la vía rápida en cualquier CPU con AES-NI — lo que incluye todos los núcleos AMD EPYC que usamos.
Margencryptsetup benchmark en un núcleo moderno suele reportar varios GB/s para AES-XTS, bastante más de lo que la mayoría de las cargas de trabajo le piden a un disco.
Dónde se notaLecturas secuenciales de un solo hilo en NVMe Gen4. Un núcleo puede convertirse en el límite antes que la propia unidad; las cargas paralelas y aleatorias apenas lo notan.
AjusteLos flags de crypttab no-read-workqueue y no-write-workqueue reducen la latencia en NVMe. Mide antes y después — no son una ganancia gratuita en todos los casos.

Las partes que la gente olvida

Un volumen cifrado con texto plano filtrándose por los bordes es una falsa sensación de seguridad, que es peor que ninguna. Cierra estos cinco puntos antes de dar el trabajo por terminado.

  • Swap. Una partición de swap sin cifrar puede contener fragmentos de cualquier cosa que haya pasado por la memoria. Cífrala con una clave aleatoria nueva en cada arranque mediante una entrada /dev/urandom en /etc/crypttab.
  • Registros escritos antes del montaje. Todo lo que se registre mientras el volumen cifrado sigue cerrado acaba en la raíz sin cifrar. Dirige los registros de la aplicación y de la base de datos a una ruta dentro del contenedor.
  • Copias de seguridad. Copiar el contenido de un volumen cifrado a un almacenamiento de objetos en texto plano deshace todo el esfuerzo. Cifra la copia de seguridad de forma independiente con restic, borg o age, y guarda esas claves en otro lugar.
  • Snapshots. Una snapshot del proveedor captura el disco, no tu RAM, así que el volumen LUKS permanece como texto cifrado dentro de ella — pero todo lo que quede en la raíz sin cifrar se captura exactamente tal cual estaba.
  • Discard. Pasar el flag discard a través de LUKS mantiene funcionando el trim de NVMe y publica qué bloques están sin usar, filtrando cuán lleno está el sistema de archivos y, a grandes rasgos, cómo está distribuido. Elígelo de forma deliberada, no por copiar una configuración.

Dónde el proveedor todavía importa

El cifrado es la capa que tú controlas: decide lo caro que resulta leer tus datos una vez que una máquina está apagada o un disco sale del edificio. La capa que la rodea — quién puede forzar el acceso al hardware, y qué registros conectan el servidor contigo — pertenece al proveedor y a su jurisdicción. Seis de nuestras quince regiones son jurisdicciones de nivel privacidad; /locations las enumera, y /offshore-hosting explica qué cambia realmente eso.

Tres capacidades del proveedor deciden si las rutas anteriores están siquiera disponibles: arranque desde ISO personalizada, sin la cual la Ruta B es imposible; acceso a la consola fuera de banda para el reinicio en el que el desbloqueo remoto no responde; y un registro que nunca vinculó la máquina a tu identidad legal desde el principio. Todos los planes /offshore-vps y /storage de aquí arrancan una ISO personalizada, incluyen acceso a consola y se facturan desde un saldo prepago en cripto sin KYC — de modo que un disco cifrado no descansa sobre un rastro documental que ya te señala. /guides tiene un recorrido honesto sobre lo que un proveedor puede ver y lo que no.

La checklist de despliegue

  • Nombra primero la amenaza: los discos retirados, los volúmenes desconectados y las imágenes offline son lo que responde el cifrado — un hipervisor en marcha no.
  • Cifra un volumen de datos (Ruta A) si el servidor ya está en marcha; reinstala desde una ISO personalizada (Ruta B) solo cuando la propia raíz deba estar cifrada.
  • LUKS2 con aes-xts-plain64, y limita la memoria de Argon2id en cualquier plan con menos de 2 GB de RAM.
  • Frase de contraseña en una ranura de clave, una clave de recuperación larga y aleatoria en otra, ambas guardadas fuera del servidor.
  • Haz una copia de la cabecera LUKS antes de escribir el primer byte de datos reales.
  • dropbear-initramfs en un puerto no predeterminado, solo con autenticación por clave, restringido al comando cryptroot-unlock.
  • Prueba un ciclo completo de reinicio y desbloqueo con la consola del proveedor todavía abierta a tu lado.
  • Copias de seguridad cifradas fuera del servidor, más un simulacro de restauración — una copia de seguridad sin probar es una esperanza, no una copia de seguridad.
¿El cifrado de disco impide que mi proveedor de hosting lea mis datos?

En reposo, sí: una vez que la máquina está apagada, el volumen es texto cifrado y la frase de contraseña nunca salió de tu cabeza. Mientras el servidor funciona con el volumen abierto, la clave maestra está en la RAM de un hardware que opera el proveedor. El cifrado cierra todas las vías offline — discos retirados, volúmenes desconectados, imágenes en frío — y eleva el coste del resto. Complementa una jurisdicción de confianza, no la sustituye.

¿Puedo cifrar un VPS ya existente sin reinstalar?

Un volumen de datos separado, sí, en unos diez minutos — es la Ruta A de arriba. El sistema de archivos raíz, siendo realistas, no. cryptsetup reencrypt puede convertir un sistema de archivos in situ, pero una conexión cortada o un corte de energía a mitad del proceso en una máquina remota deja un servidor que no arranca y una noche muy larga. Reinstalar desde una ISO personalizada es más rápido y mucho más seguro.

¿Cuánto rendimiento cuesta LUKS?

Menos de lo que la mayoría espera. Con AES-NI, AES-XTS cuesta unos pocos puntos porcentuales en cargas de trabajo mixtas típicas, y cryptsetup benchmark en un núcleo EPYC moderno reporta varios GB/s. El caso visible es la E/S secuencial de un solo hilo contra un NVMe rápido, donde un núcleo puede saturarse antes que la propia unidad. Haz el benchmark de tu propia instancia en lugar de suponer.

¿Qué pasa si olvido la frase de contraseña?

Los datos desaparecen. No existe ningún mecanismo de recuperación, ninguna clave maestra en manos del proveedor y ningún ticket de soporte que lo deshaga — esa propiedad es precisamente el objetivo del diseño. Protégete con una segunda ranura de clave que contenga una clave de recuperación aleatoria, y con una copia de la cabecera LUKS guardada en algún lugar distinto del servidor.

¿Es arriesgado ejecutar SSH dentro del initramfs?

Es una exposición pequeña y bien entendida. dropbear se ejecuta solo durante los segundos previos a que exista tu sistema de archivos raíz, acepta únicamente claves públicas, y puede restringirse a un único comando forzado que no hace nada más que pedir una frase de contraseña. En un puerto no predeterminado, con la clave de host del initramfs anotada por separado, el riesgo práctico es mínimo frente a la certeza de quedarte fuera sin él.

Ponlo en práctica.

Despliega un servidor offshore desde $3.49/mo · 8 criptomonedas · sin KYC.