Come configurare LVM e LUKS per autodecrypt partizione?

18

Ho recentemente installato ubuntu server 11.04 con la crittografia completa di lvm (installata dal setup). Vorrei ora utilizzare un file chiave per fare lo sblocco automatico. Ho provato a seguire questa guida link

Ho generato una chiave con questo comando: sudo dd if=/dev/urandom of=/boot/grub/keyfile bs=1024 count=4

l'ho inserito in /boot/grub perché penso che non sia crittografato. Quando provo ad aggiungere la chiave con questo comando sudo cryptsetup luksAddKey /dev/sdX /boot/grub/keyfile mi chiede la passphrase e quando lo metto non succede nulla, niente viene stampato sullo schermo! Lo ignoro e proseguo con gli altri passaggi e riavvio, ma non è successo nulla e richiede la passphrase.

Grazie per l'aiuto.

    
posta isoman 01.09.2011 - 00:21

4 risposte

25

Ne ho appena parlato sul mio nuovo server di casa, ci sono voluti molti googling e ipotesi, ma ho funzionato. Proverò a riprodurre i passaggi qui. Sto usando Ubuntu Server 11.10, e ho iniziato con una installazione quasi standard utilizzando LVM crittografato, quindi mi limiterò a mettere in relazione le modifiche apportate da lì.

Configurazione:

  • / dev / sda1 è la mia partizione di boot / non crittografata
  • / dev / sda5 è la mia partizione lvm che contiene tutto il resto - root, swap e home
  • / dev / sdc1 è la partizione sulla mia chiavetta USB dove conserverò il file di chiavi

Per prima cosa ho creato un file di chiavi, proprio nella mia home directory:

dd if=/dev/urandom of=keyfile bs=512 count=4

(puoi usare un blocco più grande o contare per una chiave più grande)

Dì a cryptsetup la nuova chiave (sono i contenuti che sono importanti, non il nome del file):

sudo cryptsetup luksAddKey /dev/sda5 keyfile

Poi, ho formattato la mia unità flash USB con ext2 e gli ho dato un'etichetta. Ho usato un'etichetta, in modo che in seguito possa essere montata per etichetta e sostituire l'unità flash USB nel caso in cui qualcosa non funzioni.

sudo mkfs -t ext2 /dev/sdc1
sudo e2label /dev/sdc1 KEYS

(ovviamente, il tuo dispositivo varierà)

Ora copia il file di chiavi sull'unità flash USB, di proprietà della modalità root 400:

mkdir KEYS
sudo mount /dev/sdc1 KEYS
sudo cp keyfile KEYS
sudo chown root KEYS/keyfile
sudo chmod 400 KEYS/keyfile

Modifica / etc / crypttab. Il mio era originariamente contenuto

sd5_crypt UUID=(...) none luks

che ho cambiato in

sd5_crypt UUID=(...) /dev/disk/by-label/KEYS:/keyfile luks,keyscript=/lib/cryptsetup/scripts/passdev

Infine, aggiorna initramfs:

sudo update-initramfs -uv

Ora si avvia utilizzando il file di chiavi sull'unità flash USB. Se rimuovo il flash drive (diciamo, quando vado in vacanza) non si avvia e i miei dati sono al sicuro.

Se qualcuno sa come ottenerlo per chiedere la passphrase se manca l'unità flash USB, sarebbe utile come fallback. Spero che questo aiuti, eventuali aggiunte o correzioni sarebbero più che benvenute!

    
risposta data Randy Orrison 28.12.2011 - 00:57
6

Migliorando la risposta di Randy Orrison , ecco un piccolo script che ho creato, che renderà il fallback del sistema a chiedere all'utente la password se non riesce a trovare il file di chiavi.

#!/bin/sh

ask_for_password () {
    cryptkey="Unlocking the disk $cryptsource ($crypttarget)\nEnter passphrase: "
    if [ -x /bin/plymouth ] && plymouth --ping; then
        cryptkeyscript="plymouth ask-for-password --prompt"
        cryptkey=$(printf "$cryptkey")
    else
        cryptkeyscript="/lib/cryptsetup/askpass"
    fi
    $cryptkeyscript "$cryptkey"
}

device=$(echo  | cut -d: -f1)
filepath=$(echo  | cut -d: -f2)

# Ask for password if device doesn't exist
if [ ! -b $device ]; then
    ask_for_password
    exit
fi

mkdir /tmp/auto_unlocker
mount $device /tmp/auto_unlocker

# Again ask for password if device exist but file doesn't exist
if [ ! -e /tmp/auto_unlocker$filepath ]; then
    ask_for_password
else
    cat /tmp/auto_unlocker$filepath
fi

umount /tmp/auto_unlocker

Salvalo e sostituisci keyscript=/lib/cryptsetup/scripts/passdev in /etc/crypttab con il percorso di questo file ed esegui sudo update-initramfs -uv e il gioco è fatto.

    
risposta data VarunAgw 05.08.2015 - 16:15
5

Queste istruzioni di howtoforge.com mi hanno permesso di utilizzare un volume di decrittazione automatica.

Procedura: sbloccare automaticamente le unità crittografate LUKS con un file chiave

Passaggio 1: crea un file chiave casuale

sudo dd if=/dev/urandom of=/root/keyfile bs=1024 count=4

Passaggio 2: imposta il file di chiavi in ​​sola lettura su root

sudo chmod 0400 /root/keyfile

Questo renderà il file di chiavi leggibile solo da root. Se qualcuno accede a questo file di chiavi, allora hai comunque un grosso problema sul tuo computer.

In alternativa, instradare il file chiave desiderato su root: root e spostarlo nella cartella / root

Passaggio 3: aggiungi il file di chiavi a LUKS

I dispositivi abilitati LUKS / dm_crypt possono contenere fino a 10 diversi keyfile / password. Quindi, accanto alla password già impostata, aggiungeremo questo file di chiavi come metodo di autorizzazione aggiuntivo.

sudo cryptsetup luksAddKey /dev/sdX /root/keyfile

sdX è ovviamente il tuo dispositivo LUKS.

Per prima cosa ti verrà richiesto di inserire una password (esistente) per sbloccare l'unità. Se tutto funziona correttamente, dovresti ottenere un risultato come questo:

Enter any LUKS passphrase:
key slot 0 unlocked.
Command successful.

Passaggio 4: crea un mappatore

I dispositivi LUKS devono creare un mappatore che possa quindi essere referenziato in fstab. Apri / etc / crypttab

sudo nano /etc/crypttab

e aggiungi quindi una riga come questa:

sdX_crypt      /dev/sdX  /root/keyfile  luks

oppure puoi utilizzare l'UUID del dispositivo:

sdX_crypt      /dev/disk/by-uuid/247ad289-dbe5-4419-9965-e3cd30f0b080  /root/keyfile  luks

sdX_crypt è il nome del programma di mappatura che si sta creando. Puoi usare qui qualsiasi nome, ad es. "musica" o "film" o "sfdsfawe" ....

Salva e chiudi il file inviando ctrl-x, invio, invio. Ctrl-x chiude nano ma prima chiede di salvare il file [si = invio] e quale sarà il nome [stesso nome = invio].

Ciò che abbiamo fatto in realtà sta dicendo che / root / keyfile deve essere usato al posto della password per sbloccare l'unità.

Passaggio 5: montare il dispositivo in fstab

Ora abbiamo un dispositivo sbloccato (beh, non ancora, ma al momento del riavvio del sistema) e ora dobbiamo solo montarlo. Apri / etc / fstab:

sudo nano /etc/fstab

e aggiungi una nuova voce come:

/dev/mapper/sdX_crypt  /media/sdX     ext3    defaults        0       2

Assicurati di avere il nome del mapper corretto che hai aggiunto nel passaggio 4. Assicurati anche che il punto di montaggio / la cartella esista. Dopo averlo aggiunto, salva di nuovo il file e chiudilo (ctrl-x, invio, invio).

Passaggio 6: Riavvia o rimonta

Questo è tutto. Ora puoi riavviare e i dispositivi aggiuntivi dovrebbero essere sbloccati automaticamente e montati. Puoi anche testarlo rimontando tutti i dispositivi:

sudo mount -a
    

risposta data The New Guy 01.08.2013 - 22:59
1

@deitch Ho avuto la stessa configurazione come @Randy Orrison e ho avuto lo stesso problema di te e si scopre un bug di systemd che tenta di montare nuovamente il / filesystem quando trova la voce corrispondente in / et / crypttab.

Per risolvere questo ho appena rimosso la voce per sda5_crypt da / etc / crypttab una volta eseguito il comando update-initramfs -uv.

Reeboot e tutto funziona come previsto.

    
risposta data mukul kirtane 06.03.2018 - 12:01

Leggi altre domande sui tag