Nota:

Cifrado de unidades mediante LUKS en Oracle Linux

Introducción

Oracle Linux incluye la cripta asignadora de dispositivos (dm-crypt) y la configuración de claves unificadas (LUKS) de Linux para manejar el cifrado en dispositivos de bloques.

En este laboratorio, nos centraremos en las herramientas front-end para cifrar un dispositivo mediante LUKS, que utiliza el módulo dm-crypt del soporte del asignador de dispositivos incluido con el núcleo de Linux.

Objetivos

Requisitos

Un sistema con un disco disponible y una instalación con parches completos de Oracle Linux.

Configuración del entorno del laboratorio

Nota: Al utilizar el entorno de prácticas gratuitas, consulte Aspectos básicos de las prácticas de Oracle Linux para obtener información sobre la conexión y otras instrucciones de uso.

  1. Si aún no está conectado, abra un terminal y conéctese mediante ssh a la instancia ol-node01.

    ssh oracle@<ip_address_of_instance>
    
  2. Verifique que los volúmenes en bloque existen.

    lsblk -f
    

    La salida del entorno de prácticas libres muestra dos dispositivos de bloques: sda, que contiene el sistema operativo base, y sdb, que utiliza este laboratorio. El uso de la opción -f muestra el tipo de sistema de archivos (FSTYPE) y el identificador único universal de bloques (UUID).

Instalar Paquetes de Cifrado

  1. Si aún no está disponible en el sistema, instale la herramienta cryptsetup.

    Compruebe si cryptsetup está instalado.

    sudo dnf list --installed cryptsetup
    

    Si no está instalado, instale cryptsetup.

    sudo dnf -y install cryptsetup
    

    Nota: El entorno de prácticas libres ya tiene instalada la herramienta cryptsetup.

Cifrado del volumen con LUKS

LUKS y dm-crypt funcionan en dispositivos de bloques, RAID, volúmenes físicos LVM e incluso intercambio. Una vez cifrados, solo se puede acceder a los datos de estos dispositivos durante el inicio o el montaje con las credenciales adecuadas.

El entorno de prácticas libres proporciona un disco particionado previamente /dev/sdb1 para este paso.

  1. Cifre el disco.

    sudo cryptsetup -y -v luksFormat /dev/sdb1
    

    Introduzca YES para continuar y proporcione la frase de contraseña dos veces. La frase de contraseña debe contener:

    • mínimo de 8 caracteres
    • 1 dígito
    • 1 letra superior
    • 1 carácter especial
    • palabra no dictada

    Importante: asegúrese de recordar la contraseña introducida, ya que se utilizará más adelante.

    Resultado de ejemplo:

    [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. Abra el volumen cifrado.

    Este paso requiere un destino con cualquier nombre. Utilizaremos mysecrets.

    sudo cryptsetup -v luksOpen /dev/sdb1 mysecrets
    

    Introduzca la misma frase de contraseña creada en el paso anterior cuando se le solicite.

    Resultado de ejemplo:

    [oracle@ol-node01 ~]$ sudo cryptsetup -v luksOpen /dev/sdb1 mysecrets
    Enter passphrase for /dev/sdb1: 
    Key slot 0 unlocked.
    Command successful.
    
  3. Vuelva a comprobar los dispositivos de bloques.

    lsblk -f
    

    El dispositivo /dev/sdb1 ahora muestra FSTYPE como crypto_LUKS y muestra la asignación del volumen de dispositivos cifrados mysecrets.

Formatear el volumen cifrado

Antes de agregar datos al volumen cifrado, debe tener formato. Puede elegir diferentes sistemas de archivos, como xfs, ext3, ext4, etc.

  1. Cree un sistema de archivos.

    sudo mkfs.xfs /dev/mapper/mysecrets
    

Montaje del volumen cifrado

  1. Cree un punto de montaje.

    sudo mkdir -p /u01/my_secret_storage
    
  2. Monte el volumen.

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

    La salida muestra una advertencia SELinux.

    Resultado de ejemplo:

    [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.
    

    Esto requiere una nueva etiqueta del contexto de seguridad SELinux del punto de montaje.

    sudo restorecon -vvRF /u01/my_secret_storage
    

    Vuelva a ejecutar el comando mount.

    sudo mount -v -o remount /u01/my_secret_storage
    
  3. Visualice el volumen montado.

    lsblk
    

    Resultado de ejemplo:

    [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
    

Mostrar detalles de volumen de LUKS

Visualice la información de la cabecera, el segmento de datos, los espacios de claves y la versión de LUKS.

  1. Volcar detalles de LUKS.

    sudo cryptsetup luksDump /dev/sdb1
    

    Resultado de ejemplo:

    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 
    

Para obtener más información, consulte la página del manual cryptsetup(8), Documentación de Oracle o las preguntas frecuentes ascendentes.

Para obtener más información

Ver otros recursos relacionados:

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.