Nota:

Cifrare le unità utilizzando LUKS su Oracle Linux

Introduzione

Oracle Linux include la cripta mapper del dispositivo (dm-crypt) e l'impostazione LUKS (Linux Unified Key Setup) per gestire la cifratura sui dispositivi a blocchi.

In questo laboratorio, ci concentreremo sugli strumenti front-end per crittografare un dispositivo utilizzando LUKS, che utilizza il modulo dm-crypt dal supporto mapper del dispositivo incluso nel Kernel Linux.

Obiettivi

Requisiti

Un sistema con un disco disponibile e un'installazione di Oracle Linux completamente patch.

Imposta ambiente laboratorio

Nota: quando si utilizza l'ambiente di laboratorio gratuito, vedere Oracle Linux Lab Basics per le connessioni e altre istruzioni d'uso.

  1. Se non è già connesso, aprire un terminale e connettersi tramite ssh all'istanza ol-node01.

    ssh oracle@<ip_address_of_instance>
    
  2. Verificare che i volumi a blocchi esistano.

    lsblk -f
    

    L'output dell'ambiente di laboratorio gratuito mostra due dispositivi a blocchi: sda, che contiene il sistema operativo di base e sdb, utilizzati da questo laboratorio. L'uso dell'opzione -f visualizza il tipo di file system (FSTYPE) e l'identificatore univoco universale dei blocchi (UUID).

Installa package di cifratura

  1. Se non è già disponibile sul sistema, installare lo strumento cryptsetup.

    Controllare che cryptsetup sia installato.

    sudo dnf list --installed cryptsetup
    

    Se non è installato, installare cryptsetup.

    sudo dnf -y install cryptsetup
    

    Nota: l'ambiente di laboratorio gratuito dispone già dello strumento cryptsetup installato.

Cifrare il volume con LUKS

LUKS e dm-crypt funzionano su dispositivi a blocchi, RAID, volumi fisici LVM e perfino swap. Una volta cifrati, i dati su questi dispositivi sono accessibili al momento del boot o del MOUNT solo con le credenziali appropriate.

In questo passo l'ambiente di laboratorio gratuito fornisce un disco pre-partizionato /dev/sdb1.

  1. Cifrare il disco.

    sudo cryptsetup -y -v luksFormat /dev/sdb1
    

    Immettere YES per procedere e fornire la passphrase due volte. La passphrase deve contenere:

    • almeno 8 caratteri
    • 1 cifra
    • 1 lettera maiuscola
    • 1 carattere speciale
    • parola non basata sul dizionario

    Importante: ricordare la password digitata che verrà utilizzata successivamente.

    Output di esempio:

    [oracle@ol-node01 ~]$ sudo cryptsetup -y -v luksFormat /dev/sdb1
      
    WARNING!
    ========
    This will overwrite data on /dev/sdb1 irrevocably.
      
    Are you sure? (Type 'yes' in capital letters): YES
    Enter passphrase for /dev/sdb1: 
    Verify passphrase: 
    Key slot 0 created.
    Command successful.
    
  2. Aprire il volume cifrato.

    Questo passo richiede una destinazione con un nome qualsiasi. Useremo mysecrets.

    sudo cryptsetup -v luksOpen /dev/sdb1 mysecrets
    

    Immettere la stessa passphrase creata al passaggio precedente, se richiesto.

    Output di esempio:

    [oracle@ol-node01 ~]$ sudo cryptsetup -v luksOpen /dev/sdb1 mysecrets
    Enter passphrase for /dev/sdb1: 
    Key slot 0 unlocked.
    Command successful.
    
  3. Controllare nuovamente i dispositivi a blocchi.

    lsblk -f
    

    Il dispositivo /dev/sdb1 ora visualizza il dispositivo FSTYPE come crypto_LUKS e mostra la mappatura del volume dei dispositivi cifrati mysecrets.

Formattare il volume cifrato

Prima di aggiungere dati al volume cifrato, è necessario formattarli. È possibile scegliere file system diversi, ad esempio xfs, ext3, ext4 e così via.

  1. Creare un file system.

    sudo mkfs.xfs /dev/mapper/mysecrets
    

Esegui il MOUNT del volume cifrato

  1. Creare un punto di attivazione.

    sudo mkdir -p /u01/my_secret_storage
    
  2. Installare il volume.

    sudo mount -v /dev/mapper/mysecrets /u01/my_secret_storage
    

    L'output mostra un'avvertenza SELinux.

    Output di esempio:

    [oracle@ol-node01 ~]$ sudo mount -v /dev/mapper/mysecrets /u01/my_secret_storage/
    mount: /u01/my_secret_storage 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/mysecrets mounted on /u01/my_secret_storage.
    

    Per farlo, è necessario avere un'etichetta del contesto di sicurezza SELinux del punto di attivazione.

    sudo restorecon -vvRF /u01/my_secret_storage
    

    Eseguire di nuovo il comando mount.

    sudo mount -v -o remount /u01/my_secret_storage
    
  3. Visualizzare il volume installato.

    lsblk
    

    Output di esempio:

    [oracle@ol-node01 ~]$ lsblk
    NAME               MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
    sda                  8:0    0 46.6G  0 disk  
    |-sda1               8:1    0  100M  0 part  /boot/efi
    |-sda2               8:2    0    1G  0 part  /boot
    `-sda3               8:3    0 45.5G  0 part  
      |-ocivolume-root 252:0    0 35.5G  0 lvm   /
      `-ocivolume-oled 252:1    0   10G  0 lvm   /var/oled
    sdb                  8:16   0   50G  0 disk  
    `-sdb1               8:17   0    2G  0 part  
      `-mysecrets      252:2    0    2G  0 crypt /u01/my_secret_storage
    

Visualizza dettagli volume LUKS

Visualizzare l'intestazione LUKS, il segmento dati, gli slot chiave e le informazioni sulla versione.

  1. Dump dettagli LUKS.

    sudo cryptsetup luksDump /dev/sdb1
    

    Output di esempio:

    LUKS header information
    Version:       	2
    Epoch:         	3
    Metadata area: 	16384 [bytes]
    Keyslots area: 	16744448 [bytes]
    UUID:          	4ccea398-5864-45a9-b274-173c8ebc3356
    Label:         	(no label)
    Subsystem:     	(no subsystem)
    Flags:       	(no flags)
      
    Data segments:
      0: crypt
    	offset: 16777216 [bytes]
    	length: (whole device)
    	cipher: aes-xts-plain64
    	sector: 512 [bytes]
      
    Keyslots:
      0: luks2
    	Key:        512 bits
    	Priority:   normal
    	Cipher:     aes-xts-plain64
    	Cipher key: 512 bits
    	PBKDF:      argon2i
    	Time cost:  10
    	Memory:     1048576
    	Threads:    4
    	Salt:       ee d2 c7 5b 05 43 0f 0a 12 60 da b5 87 19 4a 6f 
    	            06 57 a2 31 b1 dd bb 60 74 53 95 b2 ca 2f ad 4b 
    	AF stripes: 4000
    	AF hash:    sha256
    	Area offset:32768 [bytes]
    	Area length:258048 [bytes]
    	Digest ID:  0
    Tokens:
    Digests:
      0: pbkdf2
    	Hash:       sha256
    	Iterations: 243628
    	Salt:       89 6c 8b aa 37 af 58 e9 26 49 c5 e5 db 2d 54 ea 
    	            f8 7a c2 89 0e ab ed 48 74 a5 23 d7 b0 e6 9c 87 
    	Digest:     4a 2b 25 76 c5 85 1a 6c a9 28 0c ee d0 c7 76 eb 
    	            e1 4c ee 9c 5b 9a e2 d0 95 6e 1f 6e bb 1b 03 d1 
    

Per ulteriori informazioni, consulta la pagina man cryptsetup(8), la documentazione Oracle o le domande frequenti a monte.

Per ulteriori informazioni

Vedere altre risorse correlate:

Altre risorse di apprendimento

Esplora altri laboratori all'indirizzo docs.oracle.com/learn o accedi ad altri contenuti per la formazione gratuita sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione sul prodotto, visitare Oracle Help Center.