GNU/Linux >> Linux Esercitazione >  >> Linux

Configurazione di LUKS:configurazione della chiave unificata di Linux

Secondo Wikipedia, Linux Unified Key Setup (LUKS) è una specifica di crittografia del disco creata da Clemens Fruhwirth nel 2004 ed era originariamente concepita per Linux. LUKS utilizza device mapper crypt (dm-crypt ) come modulo del kernel per gestire la crittografia a livello di dispositivo a blocchi.

Esistono diversi strumenti front-end sviluppati per crittografare le partizioni Linux, siano esse semplici partizioni o volumi logici (LV). In questo tutorial, esploreremo questi strumenti e dimostreremo come configurare la crittografia del disco. Ho creato un disco da 10 GB (/dev/vdb ) da utilizzare durante questo tutorial.

Installazione degli strumenti

Iniziamo installando gli strumenti appropriati per la configurazione della crittografia:

dnf install -y cryptsetup parted

Il cryptsetup il pacchetto fornisce il cryptsetup comando, che useremo per configurare la crittografia, mentre il parted il pacchetto fornisce il parted comando per la configurazione della partizione.

Creazione della partizione

Esecuzione di lsblk comando mostra la configurazione corrente:

[root@rhel8 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1 1024M  0 rom  
vda           252:0    0   30G  0 disk 
├─vda1        252:1    0    1G  0 part /boot
└─vda2        252:2    0   29G  0 part 
  ├─rhel-root 253:0    0 26.9G  0 lvm  /
  └─rhel-swap 253:1    0  2.1G  0 lvm  [SWAP]
vdb           252:16   0   10G  0 disk 

Possiamo crittografare un intero dispositivo a blocchi come /dev/vdb , ma la creazione di una partizione offre maggiore flessibilità poiché possiamo aggiungere altre partizioni in un secondo momento.

Ora eseguiamo i seguenti comandi per creare una partizione da crittografare:

[root@rhel8 ~]# parted /dev/vdb mklabel msdos
Information: You may need to update /etc/fstab.

[root@rhel8 ~]# parted /dev/vdb -s "mkpart primary 2048s -1"
[root@rhel8 ~]# parted /dev/vdb align-check optimal 1
1 aligned

Quando si esegue lsblk di nuovo, vediamo che il dev/vdb1 la partizione è stata aggiunta:

[root@rhel8 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1 1024M  0 rom  
vda           252:0    0   30G  0 disk 
├─vda1        252:1    0    1G  0 part /boot
└─vda2        252:2    0   29G  0 part 
  ├─rhel-root 253:0    0 26.9G  0 lvm  /
  └─rhel-swap 253:1    0  2.1G  0 lvm  [SWAP]
vdb           252:16   0   10G  0 disk 
└─vdb1        252:17   0   10G  0 part 

Formattazione del volume con LUKS

Il seguente processo crittografa dev/vdb1 . Per procedere, devi inserire YES in maiuscolo e fornire la password due volte:

[root@rhel8 ~]# cryptsetup -y -v luksFormat /dev/vdb1 

WARNING!
========
This will overwrite data on /dev/vdb1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase for /dev/vdb1: 
Verify passphrase: 
Key slot 0 created.
Command successful.

Quindi, abbiamo bisogno di un target per aprire il volume crittografato. Ho usato mybackup come mio obiettivo, ma questo obiettivo può essere chiamato qualsiasi cosa:

[root@rhel8 ~]# cryptsetup -v luksOpen /dev/vdb1 mybackup
Enter passphrase for /dev/vdb1: 
Key slot 0 unlocked.
Command successful.

Esecuzione di lsblk ancora una volta, vediamo:

[root@rhel8 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sr0            11:0    1 1024M  0 rom   
vda           252:0    0   30G  0 disk  
├─vda1        252:1    0    1G  0 part  /boot
└─vda2        252:2    0   29G  0 part  
  ├─rhel-root 253:0    0 26.9G  0 lvm   /
  └─rhel-swap 253:1    0  2.1G  0 lvm   [SWAP]
vdb           252:16   0   10G  0 disk  
└─vdb1        252:17   0   10G  0 part  

└─mybackup 253:2 0 10G 0 crypt

Possiamo anche vedere il mybackup mappatura del volume crittografato:

[root@rhel8 ~]# ls -l /dev/mapper/mybackup 
lrwxrwxrwx. 1 root root 7 Sep 16 16:10 /dev/mapper/mybackup -> ../dm-2

Creazione di un filesystem

Poiché ora possiamo accedere al volume crittografato, è necessario formattarlo prima di poter archiviare i dati su di esso. Puoi scegliere tra diversi tipi di filesystem, come xfs (l'impostazione predefinita su Red Hat Enterprise Linux 8), ext3, ext4, ecc. Per semplicità, useremo xfs come tipo di filesystem:

[root@rhel8 ~]# mkfs.xfs /dev/mapper/mybackup

meta-data=/dev/mapper/mybackup   isize=512    agcount=4, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2618880, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Creazione del punto di montaggio e della directory

Per scrivere dati sul filesystem crittografato, dobbiamo prima montarlo. Ho scelto /mnt/my_encrypted_backup essere il punto di montaggio per i miei dati:

[root@rhel8 ~]# mkdir -p /mnt/my_encrypted_backup

Quindi eseguiamo il mount comando:

[root@rhel8 ~]# mount -v /dev/mapper/mybackup /mnt/my_encrypted_backup/

mount: /mnt/my_encrypted_backup does not contain SELinux labels.
       You just mounted an file system that supports labels which does not
       contain labels, onto an SELinux box. It is likely that confined
       applications will generate AVC messages and not be allowed access to
       this file system.  For more details see restorecon(8) and mount(8).
mount: /dev/mapper/mybackup mounted on /mnt/my_encrypted_backup.

Qui otteniamo un avviso di Security-Enhanced Linux (SELinux). Abbiamo bisogno di rietichettare il contesto di sicurezza SELinux del punto di montaggio:

[root@rhel8 ~]# restorecon -vvRF /mnt/my_encrypted_backup/

Relabeled /mnt/my_encrypted_backup from system_u:object_r:unlabeled_t:s0 to system_u:object_r:mnt_t:s0

Esecuzione del mount il comando mostra ancora una volta che l'avviso è sparito:

[root@rhel8 ~]# mount -v -o remount /mnt/my_encrypted_backup/
mount: /dev/mapper/mybackup mounted on /mnt/my_encrypted_backup.

Esecuzione di lsblk produce nuovamente il seguente output:

[root@rhel8 ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sr0            11:0    1 1024M  0 rom   
vda           252:0    0   30G  0 disk  
├─vda1        252:1    0    1G  0 part  /boot
└─vda2        252:2    0   29G  0 part  
  ├─rhel-root 253:0    0 26.9G  0 lvm   /
  └─rhel-swap 253:1    0  2.1G  0 lvm   [SWAP]
vdb           252:16   0   10G  0 disk  
└─vdb1        252:17   0   10G  0 part  
  └─mybackup  253:2    0   10G  0 crypt /mnt/my_encrypted_backup

Recupero dei dettagli LUKS

Ora possiamo scaricare le informazioni sull'intestazione di LUKS, la sezione del segmento di dati, gli slot chiave utilizzati, ecc.:

[root@rhel8 ~]# cryptsetup luksDump /dev/vdb1 
LUKS header information
Version:       	2
Epoch:         	3
Metadata area: 	12288 bytes
[……]
	Digest:     49 5a 68 e9 b6 66 50 2d c8 22 8e b9 d5 fd 2c af 
	            23 b7 47 f3 2f 62 ee 6a b8 7c 93 8f 19 fe d8 3c 

Aggiunta di un file chiave e montaggio automatico

Il montaggio automatico del filesystem crittografato LUKS ha implicazioni sulla sicurezza. Per gli utenti di laptop, questa operazione non è una scelta saggia. Se il tuo dispositivo viene rubato, lo sono anche i tuoi dati che sono stati archiviati nella partizione crittografata.

Indipendentemente dalle implicazioni sulla sicurezza sopra menzionate, ecco come impostare il montaggio automatico. Innanzitutto, crea la directory appropriata in cui archiviare il file della chiave:

[root@rhel8 ~]# mkdir /etc/luks-keys/; dd if=/dev/random of=/etc/luks-keys/mybackup_key bs=32 count=1
[root@rhel8 ~]#

Quindi, aggiungi la chiave usando cryptsetup utilità:

[root@rhel8 ~]# cryptsetup luksAddKey /dev/vdb1 /etc/luks-keys/mybackup_key
Enter any existing passphrase: 
[root@rhel8 ~]# 

Successivamente, dobbiamo ripristinare il contesto SELinux:

[root@rhel8 ~]# restorecon -vvRF /etc/luks-keys

Relabeled /etc/luks-keys from unconfined_u:object_r:etc_t:s0 to system_u:object_r:etc_t:s0
Relabeled /etc/luks-keys/mybackup_key from unconfined_u:object_r:etc_t:s0 to system_u:object_r:etc_t:s0

In precedenza, abbiamo aperto il filesystem crittografato e lo abbiamo montato manualmente. Ora dobbiamo vedere se possiamo fare lo stesso con l'automazione. Poiché il nostro filesystem è già montato, dobbiamo prima umount (smontare) esso:

[root@rhel8 ~]# umount /mnt/my_encrypted_backup 
[root@rhel8 ~]# cryptsetup -v luksClose mybackup
Command successful.

Proviamo ad aprire la partizione crittografata tramite la riga di comando utilizzando il file come chiave:

[root@rhel8 ~]# cryptsetup -v luksOpen /dev/vdb1 mybackup --key-file=/etc/luks-keys/mybackup_key

Key slot 1 unlocked.
Command successful.

Successivamente, dobbiamo configurare /etc/crypttab e /etc/fstab per montare il disco all'avvio. Per prima cosa abbiamo bisogno dell'UUID per /dev/vdb1 (non /dev/mapper/mybackup ), che possono essere recuperati come segue:

[root@rhel8 ~]# blkid /dev/vdb1

/dev/vdb1: UUID="46f89586-f802-44f1-aded-f80b16821189" TYPE="crypto_LUKS" PARTUUID="f92dbe33-01"  

Ora inserisci la seguente riga in /etc/crypttab così possiamo aprire automaticamente il nostro filesystem crittografato:

mybackup   UUID=46f89586-f802-44f1-aded-f80b16821189 /etc/luks-keys/mybackup_key luks

Fatto questo, ora possiamo configurare /etc/fstab . Aggiungi la seguente riga (in grassetto) a questo file:

[root@rhel8 ~]# vi /_etc_/fstab

#

# /etc/fstab
# Created by anaconda on Thu Aug  8 06:21:57 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
[...]
**/dev/mapper/mybackup /mnt/my_encrypted_backup xfs defaults 0 0**

E, infine, possiamo testare per vedere se l'automount funziona senza riavviare la macchina, usando mount -a :

[root@rhel8 ~]# mount -av

/                        : ignored
/boot                    : already mounted
swap                     : ignored
/mnt/my_encrypted_backup : successfully mounted

In questo caso, /mnt/my_encrypted_backup è stato montato con successo. Ora riavvia il sistema e assicurati che l'automount funzioni anche al riavvio.

Pensieri finali

Ci sono altre opzioni che possono essere fornite a cryptsetup e ognuno ha dei compromessi quando si tratta di velocità e un filesystem più sicuro. Esplora le opzioni e scegli ciò che è meglio per la tua situazione.


Linux
  1. Crea un archivio di file crittografato su Linux

  2. Configurazione dell'archiviazione locale in Linux con Stratis

  3. Come configurare SSH senza password su Linux

  4. Come impostare le chiavi SSH per l'accesso SSH "chiave pubblica/privata" su Linux

  5. Configurazione di Kensington Slimblade in Linux

Come configurare l'ultimo Oracle OpenJDK su Linux

Imposta l'ambiente di sviluppo locale di WordPress in Linux

Come configurare SFTP in chroot in Linux

Installazione e configurazione di Jenkins in Linux

Come creare una passphrase chiave SSH in Linux

Come configurare WireGuard VPN su Linux