En corto
| |
Después de cualquier cambio de llaves, respalda el header otra vez y destruye el backup anterior. Restaurar un backup viejo reactiva todas las passphrases que tenía en ese momento, incluidas las que quitaste.
Por qué el header lo es todo
LUKS no cifra los datos con tu passphrase: los cifra con una master key aleatoria, y esa master key va cifrada dentro del header, una copia por slot, cada una protegida por una passphrase o keyfile. El header ocupa los primeros 16 MiB del dispositivo en LUKS2 (2 MiB en LUKS1).
Si esos megabytes se dañan (un dd equivocado, un mkfs sobre el disco crudo, sectores muertos justo ahí), la master key desaparece y los datos se vuelven ruido irrecuperable, aunque sepas la passphrase. Un backup del header, guardado en otro sitio, es la única póliza. El archivo pesa lo mismo que el header y no contiene datos, solo la master key cifrada.
Respaldar y restaurar
| |
Guárdalo fuera de la máquina, cifrado (un gpg -c basta) y con nombre que diga de qué disco es. Restaurar:
| |
Solo repara el header. Si el accidente pasó más allá de los primeros 16 MiB, lo que hubiera ahí sigue perdido.
Slots y llaves
LUKS2 tiene 32 slots (0–31); LUKS1, 8. Todos abren la misma master key, así que da igual con cuál entres:
| |
Keyfile para abrir sin teclear (típico en un disco de datos que arranca con el sistema):
| |
Y en /etc/crypttab:
| |
Prueba sin reiniciar: systemctl daemon-reload && systemctl start systemd-cryptsetup@datos.service. El keyfile en /root solo tiene sentido si / también está cifrado o el disco es de una máquina que confías físicamente.
Quitar llaves:
luksRemoveKeypide la passphrase que quieres eliminar.luksKillSlot <n>elimina un slot concreto y pide otra passphrase válida; sirve cuando la del slot ya nadie la recuerda.luksChangeKeycambia una passphrase por otra en el mismo slot.
Trampas
- El backup del header conserva las llaves viejas. Quitaste la passphrase de un ex compañero y el backup de antes sigue en un USB: ese USB abre el disco. Re-respalda tras cada cambio y destruye los anteriores (
shred -u). luksEraseno es borrado seguro si existe un backup del header. Destruye todos los slots del disco, pero unluksHeaderRestorelos devuelve. Para un borrado definitivo, además, destruye los backups.- No mates el último slot.
cryptsetupavisa de que el dispositivo quedará inutilizable; si aceptas, ya está. - El backup en el mismo disco no es backup. Ni en el mismo servidor si lo que temes es perder el servidor.
- Header separado (
--header /ruta/header.imgal formatear y al abrir) mueve el header fuera del disco por completo; entonces el “backup” es el propio header y perderlo equivale a perder los datos. - LUKS1 vs LUKS2: los comandos son los mismos;
cryptsetup convert --type luks2migra un LUKS1 (con backup antes, claro).
Referencia: man 8 cryptsetup, secciones luksHeaderBackup, luksHeaderRestore y luksKillSlot.