Come rendere sicura la sospensione su RAM su Ubuntu con la crittografia completa del disco (LVM sopra LUKS)?


20

Sono su Ubuntu 13.04 usando la crittografia del disco completo (LVM sopra LUKS).

Vorrei incorporare luksSuspendnella procedura di sospensione (e utilizzo successivo luksResume) in modo da poter sospendere su RAM senza lasciare il materiale chiave in memoria e il root sbloccato.

Ho cercato nelle ultime 7 ore di portare uno script per Arch Linux , finora senza successo: onestamente non ho idea di cosa sto facendo ...

Qualcuno può aiutarmi a port questo (o creare qualcosa di simile da zero)? O almeno qualcuno può indicarmi la documentazione su come agganciare le cose nelle procedure di sospensione e come mantenere disponibili i binari e gli script necessari (come il cryptsetup) anche dopo che tutto l'IO alla radice è stato bloccato (da luksSuspend)?

Per quanto riguarda come mantenere i binari e gli script necessari disponibili per il curriculum, questo post sul blog (anche per Arch) li ha copiati /boot; Vorrei tuttavia usare qualcosa di più nelle righe che Vianney ha usato nella sceneggiatura che ho menzionato prima, perché questo approccio sembra essere un po 'più elegante in questo aspetto.


Trascorro qualche ora in più su questo ...
Jonas Malaco il

Ho modificato gli script che compongono pm-suspende mi è sembrato di essere quasi arrivato . Tuttavia, ho scoperto che non posso semplicemente sospendere il sistema ( echo -n "mem" > /sys/power/state) dopo aver congelato il root fs ( cryptsetup luksSuspend ...), poiché ciò richiede ancora un po 'di I / O ...
Jonas Malaco,

1
Ho letto alcune discussioni sulle liste Debian (e alcune altre liste che si collegavano o erano collegate a queste) e, finora, sembra che su una soluzione richiederebbe qualcosa come un "deinitramfs": il kernel gestirà il controllo sui deinitramfs poco prima di sospendere effettivamente il sistema, in modo che questo tmpfs possa eseguire le azioni finali di pulizia (come cancellare la chiave di crittografia per i rootfs).
Jonas Malaco,

Anche a me piacerebbe vedere una risposta a questa domanda.
BenAlabaster,

Risposte:


3

Ho riscontrato lo stesso problema, quindi ho fatto un altro tentativo di porting dello stesso copione, che puoi vedere qui . Dopo non tocca alcun archivio non volatile luksSuspend, quindi funziona anche con la crittografia reale del disco intero con un avvio / crittografato. Tuttavia, dovrai fare attenzione: potrebbe non funzionare come previsto di tanto in tanto!

Lo script con port fa quanto segue:

  • Crea un supporto ramfs da qualche parte
  • Estrai lì il contenuto di initramfs (incluso lo script di sospensione initramfs)
  • BIND montare le directory pertinenti (per esempio /sys, /proc, /dev, /run) per montare il ramfs
  • Interrompere qualsiasi servizio che possa interferire (systemd-udevd, systemd-journald)
  • Rimonta il filesystem di root (ext4 o btrfs) con nobarrier in modo che Linux non si blocchi durante il tentativo di accedere a S3, quindi sincronizza
  • Chroot nel mount initramfs, che si sincronizza di nuovo, viene eseguito luksSuspende mette il computer in modalità di sospensione
  • Dopo la riattivazione, luksResumerimontare i filesystem, riavviare i servizi, smontare i montaggi di bind nel mount initramfs
  • Infine, smontare il mount initramfs in modo da liberare la RAM utilizzata per i file initramfs

Devo ancora fare test approfonditi sulla mia sceneggiatura, ma sembra funzionare in modo affidabile per me. Se usi un altro filesystem (cioè non ext4 o btrfs), potresti riscontrare problemi con la barriera, quindi dovrai modificare anche lo script.

Ad ogni modo, è bene testare e verificare che gli script funzionino per primi. Se si verificano blocchi durante il tentativo di mettere Linux in S3 (cioè at echo mem > /sys/power/state), allora si dovrebbe essere in grado di recuperare:

  • Prima di sospendere, apri un terminale tty o altro (che sarà accessibile, quindi idealmente un terminale)
  • Carica cryptsetup e le relative librerie nella RAM: sudo cryptsetup luksResume anything_here
  • Sospendi usando lo script
  • Se si blocca dopo il chroot (ad es. Dopo che starting version xxxviene visualizzato sul nuovo vt), passa al tty che hai aperto in precedenza ed eseguisudo cryptsetup luksResume your_luks_device_name_here
  • Se anche questo si blocca, apri un altro vt e chroot in /run/initramfs:sudo chroot /run/initramfs /bin/ash
  • Prova a correre luksResume:cryptsetup luksResume your_luks_device_name_here && exit
  • Il tuo computer dovrebbe quindi sospendere. Puoi quindi riattivarlo, eliminare gli script se sono ancora in esecuzione, smontare i montaggi di bind e /run/initramfs, se applicabile, rimontare il filesystem di root con barriera.

1

Non ho esperienza con questa configurazione, ma molte persone affermano di avere successo in questo. Eccone un paio.

dm-crypt con LUKS - Crittografia della partizione di swap
Howto: Hard disk completamente crittografato inclusa la sospensione su partizione del disco con Ubuntu 6.10 Edgy Eft
ubuntu-full-disk-crittografia-lvm-luks

Tuttavia nessuno di loro usa luksSuspend (che potrebbe essere il motivo per cui funzionano).


Grazie per i collegamenti ... Sto usando un'impostazione simile all'ultimo collegamento (generato automaticamente dall'installer 13.04).
Jonas Malaco,

No luksSuspend finora, deve spegnersi per cancellare i tasti dalla memoria ... Tuttavia, grazie per i collegamenti! Forse capendo come configurarlo manualmente posso ottenere alcune informazioni su come usare luksSuspend per suspare a ram.
Jonas Malaco,

1
luksSuspend sembra estremamente difficile da usare. Poiché congela tutto l'I / O, è necessario uno script di sospensione molto acrobatico. Ho trovato solo una storia di successo in tedesco che può essere (male) tradotta in inglese . Prova a usarlo come modello.
harrymc,

2
Potrebbe anche essere necessario utilizzare un ram-disk e un cryptsetup collegato staticamente.
harrymc,

1

Ho trascorso un po 'di tempo a renderlo perfettamente funzionante su Ubuntu 15.10. Se stai cercando di farlo funzionare su ext2, ext3 o ext4 dovrai aggiornare / etc / fstab per montare il volume con l'opzione 'nobarrier'. Altrimenti, suggerisco di usare BTRFS.

Una volta preparato il tuo filesystem, usa lo script qui: https://github.com/Microcentillion/ubuntu-lukssuspend

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.