Come creare una partizione di swap crittografata a chiave casuale, riferendosi ad essa "by-uuid", su Debian?


8

È ragionevole che se si dispone di qualsiasi tipo di crittografia del dispositivo a blocchi implementata sul proprio sistema GNU / Linux, anche per crittografare la propria partizione di swap, poiché qualsiasi dato decrittografato può essere scritto in chiaro in qualsiasi momento sullo swap.

Guardando la pagina man di debian per "crypttab" vedo un esempio di creazione di una partizione di swap con chiave casuale all'avvio, quindi la chiave viene impostata in modo casuale mentre procede l'avvio e nota solo al sistema stesso:

# Encrypted swap device
cswap /dev/sda6 /dev/urandom cipher=aes-cbc-essiv:sha256,hash=ripemd160,size=256,swap

In questo esempio il dispositivo di scambio è indicato da un percorso di sviluppo convenzionale, ad es /dev/sda6

I percorsi dei dispositivi assoluti sono soggetti a modifiche e possono essere riassegnati all'avvio se, ad esempio, è stata collegata un'unità USB. Un utente sarebbe molto infelice se dovesse /dev/sda6capitare che si tratti di una partizione diversa da quella prevista e successivamente viene sovrascritto con dati di scambio casuali !!

Quindi la soluzione sembra essere: utilizzare un UUID anziché un percorso del dispositivo (poiché un UUID non dovrebbe cambiare), sostituendolo /dev/sda6con/dev/disk/by-uuid/<whatever the uuid of dev/sda6 is>

MA ... ecco il problema: ogni volta che cryptsetup ricrea la partizione di swap crittografata all'avvio, genera un nuovo UUID per questo! Doh!

Quindi dobbiamo in qualche modo preservare l'UUID di questo filesystem crittografato. Penso che cryptsetup possa farlo con il suo --offsetswitch, consentendo la conservazione dell'intestazione LUKS e quindi l'UUID.

Ho trovato questo URL: https://wiki.archlinux.org/index.php/System_Encryption_with_LUKS#Using_UUIDs_with_encrypted_swap_partitions

Qualcuno sa come implementare la soluzione descritta per Arch Linux sul sistema operativo Debian? Gli script init indicati nel documento sembrano non esistere sul sistema operativo Debian

Grazie!

EDIT Uno potrebbe usare ecryptfs per raggiungere gli stessi fini (spazio di scambio crittografato) usando il comando: ecryptfs-setup-swap Senza i problemi che ostacolano la crittografia del dispositivo a blocchi. Dai un'occhiata a questa query AskUbuntu


"Uno potrebbe usare ecryptfs per raggiungere gli stessi fini [...] senza i problemi che ostacolano la crittografia dei dispositivi a blocchi." No, perché ecryptfs-setup-swapè solo un aiuto che configura dm-crypt/ crypttabper te. Essendo ecryptfsun driver a livello di file, non gestisce intere partizioni, quindi lo fa funzionare dm-crypt. Potresti trovare questo metodo più user-friendly, ma alla fine non stai ottenendo nulla di diverso. Semmai, le stranezze di questo metodo (incluso l'UUID) probabilmente mi hanno reso più confuso che se lo avessi fatto da solo dai primi principi ... anche se ho imparato di più.
underscore_d

Risposte:


6

Ogni volta che cryptsetup ricrea la partizione di swap crittografata all'avvio, genera un nuovo UUID per esso! Doh!

In / etc / crypttab, usa / dev / disk / by-id invece di / dev / disk / by-UUID per fare riferimento alla tua partizione di swap. Ad esempio, la voce / etc / fstab per swap potrebbe essere

#<file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/cswap none swap sw 0 0

Quindi la corretta voce corrispondente in / etc / crypttab sarebbe qualcosa del genere

# <name> <device> <password> <options>
cswap /dev/disk/by-id/ata-SAMSUNG_SSD_830_Series_S0XYNEAC762041-part5 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256

Si noti che il dispositivo sopra è indicato da / dev / disk / by-id che è possibile scoprire per l'unità digitando quanto segue nella CLI:

ls -lF /dev/disk/by-id

Nota che il nome del by-id si riferisce sia al modello che al numero di serie, che è estremamente improbabile che si sovrappongano con qualsiasi altro dispositivo che potresti collegare.
cscracker

... che, a beneficio dei lettori che potrebbero chiedersi, è un'ottima cosa. Non si desidera configurare lo swap crittografato, /dev/sdaNquindi collegare un altro disco un giorno e scoprire che l'ordine di denominazione del kernel è stato spostato e una delle partizioni non swap è stata eliminata. Anche UUID sarebbe carino, ma penso che il problema chiave sia che sia memorizzato nei primi byte della partizione, quindi otteniamo lo scenario insolubile di pollo e uova che è discusso qui.
underscore_d

3

Nel mio / etc / crypttab, ho

# <target name>  <source device>        <key file>   <options>
swap             /dev/mapper/cswap      /dev/random  swap

Qui / dev / mapper / cswap è un volume logico creato da LVM, che si occupa di assegnare correttamente i nomi dei volumi logici indipendentemente dai nomi delle lettere di unità. Mi permette anche di ridimensionare facilmente la mia partizione di swap.


0

Prova a implementare il resto della soluzione, ignorando il file init. Sembra che quel po 'di script di init sia lì solo per proteggerti. O Debian non ti protegge in quel modo, o ti darà un messaggio di errore quando proverai ad avviarlo che si spera ti porti nel posto giusto.

Starei anche attento al fatto che IIRC Debian e ArchLinux abbiano formati diversi per / etc / crypttab (pazzo, lo so, ma mi sono trasferito da Ubuntu ad Arch un paio di anni fa e alla fine ho deciso di usare straight bash piuttosto che immischiarmi con crypttabs).


Grazie per la risposta. Sì, concordo sul fatto che lo script Arch sia un controllo di integrità per assicurarsi che la partizione sembri essere una partizione di swap. Ma sto immaginando di aver lasciato un'unità USB collegata e il riavvio per trovare una partizione non swap in uso. Penso che piangerei lacrime vere ... Sono grato per tutti i controlli di sanità mentale che posso ottenere!
Accidenti

Ciò non dovrebbe accadere perché stai usando il suo UUID per trovarlo in primo luogo. Quindi tutto ciò che troverà è la partizione di swap o niente.
idupree,

0

eseguire ecryptfs-setup-swap o manualmente:

Questa configurazione utilizza chiavi generate casualmente all'avvio e non supporterà l'ibernazione sul disco rigido! È necessario disabilitare l'ibernazione tramite l'utility DE Power Management rispettabile e impostarlo su Arresto su Critico per evitare la perdita di dati!

Passa a un account amministratore / root

su root o sudo per ogni comando

Disabilita lo scambio

swapoff -a

Individua la partizione di swap esistente

lsblk

esempio: sda3 8: 3 0 8G 0 parte [SWAP]

Sovrascrivi vecchio scambio

dd if = / dev / zero bs = 1024000 di = / dev / sda <#>

esempio: dd if = / dev / zero bs = 1024000 di = / dev / sda3

Setup FSTAB

vim / etc / fstab

Sostituisci il vecchio dispositivo SWAP con il nome del mapper crypttab: / dev / mapper / cswap

UUID VECCHIO = d03f3d8e-7888-48a5-b3cc-41de8dbbcfdc valori predefiniti di swap swap 0 0

NUOVO

/ dev / mapper / cswap none swap pri = 1, valori predefiniti 0 0

Crypto Setup

ls -lF / dev / disk / by-id

Esempio: ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3

vim / etc / crypttab

cswap / dev / disk / by-id / ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 / dev / urandom swap, cifra = aes-cbc-essiv: sha256, dimensione = 256

Swap crittografato attivo

Riavvia il computer

Verifica delle operazioni di scambio codificate

dmsetup -C informazioni

Esempio: cswap 253 0 L - w 2 1 0 CRYPT-PLAIN-cswap

lsblk

Esempio ├─sda3 8: 3 0 8G 0 parte
│ └─cswap 253: 0 0 8G 0 cripta [SWAP]

cat / proc / swaps

esempio: Nome file Tipo Dimensione utilizzata Priorità / partizione dev / dm-0 8385532 0 -1

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.