GNU/Linux >> Linux Esercitazione >  >> Debian

Crittografia senza password della partizione radice di Linux su Debian 8 con una chiave USB

La sicurezza dei dati critici sul dispositivo di archiviazione (disco rigido, memory stick portatile) è necessaria affinché un intruso non possa rubare informazioni sensibili. In questo tutorial, il nostro obiettivo è la sicurezza del filesystem radice di Linux e dell'area di scambio. Verrà utilizzata la funzione di crittografia Linux predefinita "LUKS", che richiede una passphrase all'avvio. Pertanto, il nostro prossimo obiettivo è fornire automaticamente la passphrase a un volume crittografato al momento dell'avvio. Sono già disponibili alcuni articoli sullo stesso argomento per le versioni precedenti della distribuzione Debian. Tuttavia, in questo tutorial la versione di Debain 8 (Jessie) è installata su una VM VirtualBox.

Installazione del sistema operativo Debian 

In questo tutorial, Debian Jessie è installata su una VM ei dettagli sono mostrati nella figura seguente. La stessa procedura funzionerà anche su un server o desktop "reale".

Aggiungi il file iso del programma di installazione di Debian net nella VM e avvia la vm, verrà visualizzato il prompt del programma di installazione. Seleziona l'opzione "Installa" per avviare il processo di installazione.

Le seguenti schermate richiederanno le impostazioni di base di Debian. Seleziona l'opzione della lingua desiderata dall'elenco fornito.

Seleziona il paese o l'area come mostrato nella figura seguente.

Configura la lingua per la tastiera.

Dopo le impostazioni di base, il programma di installazione carica più componenti per la configurazione.

Anche in questo caso, verranno configurate più impostazioni di base durante il processo di installazione.

1. Impostazione del nome host

2. Configurazione del nome di dominio

3. Impostazione di una password per l'utente "root".

4. Creazione di un nuovo utente diverso da root.

5. impostare il Fuso orario

6. Infine, la parte più importante è il partizionamento del disco.

Per questo articolo è necessario il partizionamento manuale del disco rigido. Pertanto, seleziona l'opzione "Manuale" nel prompt sopra e seleziona il disco rigido desiderato per avviare il processo.

Come mostrato nella figura sopra, Debian verrà installato nella VM. Premi Invio per avviare il partizionamento del disco rigido selezionato che è mostrato di seguito.

La schermata seguente apparirà dopo l'accettazione del messaggio di cui sopra. Come mostrato nella schermata seguente, al momento non è presente alcuna partizione sul disco rigido.

Premi "invio" per creare la prima partizione sul disco rigido virtuale.

La prima partizione che abbiamo creato sul disco rigido è "/dev/sda1" per il punto di montaggio "/boot".

Per la partizione è selezionato il tipo primario o logico.

La posizione della nuova partizione è selezionata.

Il punto di montaggio "/boot" è mostrato nella schermata seguente.

La prima partizione è stata creata correttamente sul disco rigido. Il kernel Linux viene successivamente posizionato nella partizione "/boot".

La seconda partizione creata sul disco rigido della VM è di scambio e la dimensione della partizione di scambio dovrebbe essere il doppio della dimensione della RAM. Come mostrato nella schermata seguente, lo spazio libero rimanente viene selezionato per lo scambio.

Imposta la dimensione della partizione di swap.

La schermata seguente mostra che la partizione è selezionata come area di scambio.

Viene creata anche un'altra partizione sulla macchina virtuale.

La partizione principale della piattaforma Linux viene creata sullo spazio rimanente per / (il punto di montaggio "root"). L'istantanea seguente mostra la dimensione della partizione "root".

Seleziona l'opzione "volume fisico di crittografia" per la nuova partizione sul disco rigido.

L'opzione evidenziata nello screenshot seguente è necessaria per crittografare la partizione su piattaforma Linux.

La configurazione della partizione dopo aver selezionato "volume fisico per la crittografia" è mostrata nella figura seguente. Il metodo di crittografia predefinito è device-mapper (dm-crypt), l'algoritmo di crittografia è AES con chiave di 256 dimensioni.

La corretta creazione della partizione sul disco rigido virtuale è mostrata nella figura seguente.

Ecco la configurazione avanzata dei volumi crittografati su Debian che è selezionata nello screenshot seguente.

Il seguente messaggio mostra che lo schema di partizionamento corrente deve scrivere sul disco rigido prima di poter iniziare con la configurazione del volume crittografato.

Il seguente prompt mostra la creazione del volume crittografato sulla piattaforma Debian.

Seleziona i dispositivi per il volume crittografato. Non selezionare il dispositivo di avvio "/dev/sda1" per il volume crittografato perché non è consentito crittografare la partizione di avvio.

Come mostrato nella schermata seguente, solo "/dev/sda3" è selezionato per il volume crittografato e questa è la partizione root del disco.

Dopo la configurazione del volume crittografato , seleziona Fine per applicare le modifiche.

Tuttavia, il seguente errore richiederà se la partizione di scambio non è selezionata per il volume crittografato.

Pertanto, selezioniamo entrambe le partizioni per il volume crittografato.

Le impostazioni della partizione per lo scambio del volume crittografato sono mostrate di seguito.

Il seguente messaggio mostra che i dati verranno cancellati su "sda2" (scambio).

La cancellazione dei dati su "sda2" e "sda3"  è mostrata di seguito.

Al termine del processo, inserisci una passphrase per entrambe le partizioni crittografate.

Reinserimento della stessa passphrase.

La tabella delle partizioni dopo la corretta configurazione dei volumi crittografati sul disco è mostrata di seguito.

Termina il processo di partizionamento per avviare l'installazione del sistema operativo Debian. Tuttavia, verrà visualizzato il seguente messaggio di errore perché il punto di montaggio "/" non è ancora selezionato per nessuna partizione.

Dopo il messaggio di errore precedente, riconfigurare i volumi crittografati per impostare il punto di montaggio. In questo articolo, "sda3_crypt" è il file system di root e "sda2_crypt" è l'area di scambio.

Selezione del punto di montaggio "/" per il volume crittografato.

Selezione del volume crittografato "sda2_crypt" come area di scambio.

Lo screenshot seguente mostra la tabella delle partizioni finale per i volumi crittografati.

La formattazione delle partizioni è mostrata di seguito.

Al termine del processo di formattazione, verrà installato il sistema di base.

Lo screenshot seguente mostra la selezione del mirror dell'archivio per i pacchetti Debian.

La configurazione del gestore pacchetti è mostrata di seguito.

Solo il sistema di base o di base è ancora installato e altri pacchetti possono essere installati dall'elenco mostrato.

Seleziona l'ambiente desktop e altri pacchetti dall'elenco.

L'installazione dei pacchetti selezionati è mostrata di seguito.

L'installazione del boot loader Linux "GRUB" è mostrata nella schermata seguente.

Il dispositivo (sda) è selezionato per l'installazione del caricatore di avvio.

Infine, il processo di installazione è completo.

Dopo il riavvio, inserisci la passphrase per decrittografare il disco sda3.

Immettere la passphrase per decrittografare il disco sda2 che è l'area di scambio.

Accedi con successo sul sistema installato.

Configurazione per filesystem root senza password

Il processo di immissione della passphrase all'avvio sarà ora automatizzato tramite una chiavetta USB. Invece di usare

una passphrase , la chiave segreta sull'USB decrittograferà i volumi crittografati. Collega una chiavetta USB alla VM e individuala utilizzando il comando "dmesg". Viene rilevato come "/dev/sdb" nella mia macchina virtuale.

La chiave segreta di 8192 byte casuali viene estratta dalla chiavetta USB utilizzando il comando dd.

dd if=/dev/sdb of=/root/secret.key bs=512 skip=4 count=16

La chiave segreta generata sopra viene aggiunta ai volumi crittografati utilizzando il comando "cryptsetup". Per impostazione predefinita, la passphrase viene mantenuta nello slot 0. Pertanto, lo slot 1 verrà utilizzato per la seconda chiave segreta.

Esegui il comando "blkid" per ottenere i dettagli del volume sul disco.

blkid

In questo tutorial, la chiave segreta per la decrittografia del volume viene aggiunta solo in /dev/sda3. Tuttavia, può essere aggiunto anche alla partizione "/dev/sda2" (swap).

cryptsetup luksAddKey /dev/sda3 /root/secret.key --key-slot 1

Viene creata una semplice regola udev per il dispositivo USB nel file /etc/udev/rules.d/99-custom-usb.rules, il link simbolico che useremo è /dev/usbdevice.

SUBSYSTEMS=="usb", DRIVERS=="usb",SYMLINK+="usbdevice%n"

Ricarica le regole utilizzando il comando seguente.

udevadm control --reload-rules

Inserisci il dispositivo USB per verificare la regola personalizzata.

È necessario uno script di shell per leggere la chiave segreta dal dispositivo USB e fornirla a cryptsetup all'avvio. Lo script viene creato come "/usr/local/sbin/openluksdevices.sh" e tratto dal sito http://www.oxygenimpaired.com/.

#!/bin/sh
############taken from following link#########
###http://www.oxygenimpaired.com/debian-lenny-luks-encrypted-root-hidden-usb-keyfile

TRUE=0
FALSE=1

# flag tracking key-file availability
OPENED=$FALSE

if [ -b /dev/usbdevice ]; then
# if device exists then output the keyfile from the usb key
dd if=/dev/usbdevice bs=512 skip=4 count=16 | cat
OPENED=$TRUE
fi

if [ $OPENED -ne $TRUE ]; then
echo "FAILED to get USB key file ..." >&2
/lib/cryptsetup/askpass "Try LUKS password: "
else
echo "Success loading key file for Root . Moving on." >&2
fi

sleep 2

Imposta i permessi dello script in modo che possa essere eseguito.

 chmod a+x /usr/local/sbin/openluksdevices.sh

Simile al file di configurazione fstab, il file crypttab contiene le informazioni sui volumi cifrati sulla piattaforma Linux. Aggiungi uno script di shell per la partizione crittografata sda3_crypt. Il contenuto del file di configurazione "/etc/crypttab" per il volume crittografato è riportato di seguito.

sda3_crypt /dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc none luks,keyscript=/usr/local/sbin/openluksdevices.sh

Aggiungi la seguente riga nel file "/etc/initramfs-tools/conf.d/cryptroot".

CRYPTROOT=target=sda3_crypt,source=/dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc

Assicurati che "usb_storage" sia aggiunto nel file "/etc/initramfs-tools/modules".

Anche il seguente script di shell (/etc/initramfs-tools/hooks/udevusbkey.sh) è tratto da una fonte esterna. Viene utilizzato per aggiungere una regola udev personalizzata nel file system temporaneo "initrd".

#!/bin/sh
# udev-usbkey script
###taken from
###http://www.oxygenimpaired.com/ubuntu-with-grub2-luks-encrypted-lvm-root-hidden-usb-keyfile
PREREQ="udev"
prereqs()
{
echo "$PREREQ"
}

case $1 in
prereqs)
prereqs
exit 0
;;
esac

. /usr/share/initramfs-tools/hook-functions

# Copy across relevant rules

cp /etc/udev/rules.d/99-custom-usb.rules ${DESTDIR}/lib/udev/rules.d/

exit 0

Modifica l'autorizzazione dello script.

 chmod a+x /etc/initramfs-tools/hooks/udevusbkey.sh

Sono necessarie alcune modifiche nella configurazione del caricatore di avvio di GRUB2. Tuttavia, le modifiche dirette nel file di configurazione "/boot/grub/grub.cfg"  non sono consentite. Pertanto, modificare il parametro "GRUB_CMDLINE_LINUX_DEFAULT" nel file di configurazione "/etc/default/grub". Come mostrato di seguito, "rootdelay" e "cryptopts"  sono inclusi nel parametro "GRUB_CMDLINE_LINUX_DEFAULT".


GRUB_CMDLINE_LINUX_DEFAULT="rootdelay=20 cryptopts=target=sda3_crypt,source=/dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc,keyscript=/lib/cryptsetup/scripts/openluksdevices.sh"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtainsConclusion

Esegui il comando "update-grub" per applicare le modifiche precedenti nel file di configurazione "/boot/grub/grub.cfg".

Dopo il comando precedente, le seguenti modifiche sono state applicate nel file di configurazione "/boot/grub/grub.cfg".

echo    'Loading Linux 3.16.0-4-686-pae ...'
linux   /vmlinuz-3.16.0-4-686-pae root=UUID=b30cdb22-8e3c-4ffd-a0c7-af96b90ba016 ro  rootdelay=20 cryptopts=target=sda3_crypt,source=/dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc,keyscript=/lib/cryptsetup/scripts/openluksdevices.sh
echo    'Loading initial ramdisk ...'
initrd  /initrd.img-3.16.0-4-686-pae

Esegui "update-initramfs -u" per aggiornare il file del file system temporaneo per tutti i kernel.

Prima del riavvio, decomprimi il file "initrd.img" generato da newley e verifica che il keyscript sia stato copiato nella directory "lib/cryptsetup/scripts" e la regola udev personalizzata nella directory "lib/udev/rules.d/".

cd /tmp/
zcat /boot/initrd.img-3.16.0-4-686-pae | cpio -iv

Keyscript è stato incluso correttamente negli script initramfs.

La regola USB personalizzata è inclusa anche nelle regole udev.

Aggiungi il dispositivo USB nelle impostazioni della VM prima di testare l'intera configurazione.

Infine, la chiave segreta è stata caricata con successo per il volume crittografato.

Conclusione

In questo articolo, una partizione crittografata viene aperta utilizzando una chiave segreta che viene conservata in un dispositivo di memoria USB. Uno script di shell automatico viene utilizzato per fornire una chiave segreta per il volume crittografato all'avvio.


Debian
  1. Impossibile firmare CSR con la chiave Ca Root?

  2. Linux:come crittografare Linux (debian 8) dopo l'installazione e quali sono le conseguenze?

  3. Debian – Modifica dei media:inserire il disco con l'etichetta "debian Gnu/linux?

  4. Debian:ridimensionare la partizione di root senza disinstallare e reinstallare Linux (o perdere dati)?

  5. Come modificare la passphrase della crittografia completa del disco?

Introduzione agli strumenti di crittografia della riga di comando su Linux

Come clonare dischi con il comando dd di Linux

Crea e gestisci le partizioni del disco con Parted in Linux

Come regolare la dimensione della partizione di root su Linux Live Arch

Come avviare il file ISO di Debian dal disco rigido con GRUB2

Debian:come installare Debian con la crittografia dell'intero disco e un file di scambio di dimensioni personalizzate?