Diferencia entre revisiones de «LUKS»

De La Wiki de KiVi
(Página creada con «Ya he escrito cómo hacer una instalación cifrada, pero, ¿y si quiero cifrar un disco nuevo? Un ejemplo, quiero tener un disco extraíble que quiero montar para hacer copias de seguridad y luego extraerlo y guardarlo en una caja fuerte y solo volver a montarlo para realizar de nuevo la copia o recuperar información. En el mundo de la seguridad de datos, la encriptación de particiones es una práctica esencial para proteger la información sensible. En este artíc…»)
 
Sin resumen de edición
 
(No se muestran 9 ediciones intermedias del mismo usuario)
Línea 13: Línea 13:


== '''Formatear con el Sistema de Archivos Crypto y Encriptar''' ==
== '''Formatear con el Sistema de Archivos Crypto y Encriptar''' ==
Ahora, prepararemos la partición para la encriptación. Ejecuta los siguientes comandos:
 
<code>sudo cryptsetup luksFormat /dev/sdb1
Ahora, prepararemos la partición para la encriptación. Ejecuta los siguientes comandos:<blockquote>sudo cryptsetup luksFormat /dev/sdb1
sudo cryptsetup open /dev/sdb1 my_encrypted_partition # "my_encrypted_partition" es un nombre descriptivo, puedes poner el que quieras pero debes recordarlo.</code>
 
A continuación debes poner la contraseña de cifrado.
 
sudo cryptsetup open /dev/sdb1 my_encrypted_partition # "my_encrypted_partition" es un nombre descriptivo, puedes poner el que quieras pero debes recordarlo.</blockquote>A continuación debes poner la contraseña de cifrado.


== '''Crear y Montar un Sistema de Archivos en la Partición Encriptada''' ==
== '''Crear y Montar un Sistema de Archivos en la Partición Encriptada''' ==
Ahora le damos formato, por ejemplo «ext4», un formato por defecto en linux, en este caso a la partición mapeada y la montamos, por ejemplo, en el mismo nombre que el mapeo:
Ahora le damos formato, por ejemplo «ext4», un formato por defecto en linux, en este caso a la partición mapeada y la montamos, por ejemplo, en el mismo nombre que el mapeo:<blockquote><code>sudo mkfs.ext4 /dev/mapper/my_encrypted_partition</code>
<code>sudo mkfs.ext4 /dev/mapper/my_encrypted_partition
 
sudo mkdir /mnt/my_encrypted_partition
<code>sudo mkdir /mnt/my_encrypted_partition
sudo mount /dev/mapper/my_encrypted_partition /mnt/my_encrypted_partition</code>
sudo mount /dev/mapper/my_encrypted_partition /mnt/my_encrypted_partition</code></blockquote>En el momento del montado ya nos pedirá la contraseña que le pusimos a la hora de encriptarlo.
En el momento del montado ya nos pedirá la contraseña que le pusimos a la hora de encriptarlo.


= Montado y persistencia =
= Montado y persistencia =
Línea 30: Línea 30:
añadimos la etiqueta de objetivo , la UUID y la «key file» que la dejamos en «none» y por último las opciones
añadimos la etiqueta de objetivo , la UUID y la «key file» que la dejamos en «none» y por último las opciones
  <code>my_encrypted_partition UUID=6c13fb1e-3e83-438c-a09e-c6a1b7281313 none luks,discard</code>
  <code>my_encrypted_partition UUID=6c13fb1e-3e83-438c-a09e-c6a1b7281313 none luks,discard</code>
Recordemos que la '''UUID''' se puede averiguar con el comando: '''blkid'''
Recordemos que la '''UUID''' se puede averiguar con el comando: '''blkid''' , y que será la UUID correspondiente a la partición encriptada.


Ahora editamos el fichero de persistencia:
Ahora editamos el fichero de persistencia:
Línea 37: Línea 37:
  <code>/dev/mapper/my_encrypted_partition /mnt/my_encrypted_partition ext4 defaults,discard 0 2</code>
  <code>/dev/mapper/my_encrypted_partition /mnt/my_encrypted_partition ext4 defaults,discard 0 2</code>
el sistema reaccionará en el reinicio pidiendo la contraseña, recodemos que si es la misma contraseña que el montaje del directorio raíz, no hace falta volverla a poner.
el sistema reaccionará en el reinicio pidiendo la contraseña, recodemos que si es la misma contraseña que el montaje del directorio raíz, no hace falta volverla a poner.
También podemos poner la UUID correspondiente a la partición con formato ext4 bajo la partición encriptada.


== Comandos extra: ==
== Comandos extra: ==
A continuación pongo los comando más utilizados:
A continuación pongo los comando más utilizados:


Suspensión de la partición, en el caso de que queramos desactivarla temporalmente por motivos de seguridad
'''Apertura''' y montado temporal:
sudo cryptsetup luksOpen /dev/sde1 my_encrypted_partition #Donde /dev/sde1 es la partición encriptada
'''Montado''' de la partición abierta:
sudo mount /dev/mapper/my_encrypted_partition /mnt/backup/
'''Suspensión''' de la partición, en el caso de que queramos desactivarla temporalmente por motivos de seguridad
  <code>cryptsetup luksSuspend my_encrypted_partition</code>  
  <code>cryptsetup luksSuspend my_encrypted_partition</code>  
Para volver a activar:
Para volver a '''activar''':
  <code>cryptsetup luksResume my_encrypted_partition</code>  
  <code>sudo cryptsetup luksResume my_encrypted_partition</code>  
y vuelve a poner la contraseña
y vuelve a poner la contraseña


Para desmontar el disco primero desmontamos la partición con:
Para '''desmontar''' el disco primero desmontamos la partición con:
  <code>sudo umount /mnt/my_encrypted_partition</code>
  <code>sudo umount /mnt/my_encrypted_partition</code>
Y por último cerramos el montado:
Y por último '''cerramos''' el montado:
  <code>sudo cryptsetup close my_encrypted_partition</code>
  <code>sudo cryptsetup close my_encrypted_partition</code>
Y ya podemos desconectar el disco.
Y ya podemos desconectar el disco.


Por último, queda cómo cambiar la contraseña de una partición encriptada, solo hay que desmontarla como he explicado antes y ejecutar:
Por último, queda cómo '''cambiar la contraseña''' de una partición encriptada, solo hay que desmontarla como he explicado antes y ejecutar:
  <code>sudo cryptsetup luksChangeKey /dev/sdb1 #siguiendo el caso de la entrada</code>
  <code>sudo cryptsetup luksChangeKey /dev/sdb1 #siguiendo el caso de la entrada</code>
Esto te pedirá la contraseña antigua y la contraseña nueva. Acto seguido ya puedes volver a montar la partición.
Esto te pedirá la contraseña antigua y la contraseña nueva. Acto seguido ya puedes volver a montar la partición.
== Creando un disco encriptado con dos particiones ==
En el siguiente caso vamos a montar un nuevo disco de 500GB, lo vamos a encriptar y dentro vamos a crear dos particiones de formato [[XFS]] donde haremos el montado temporal.
Esta guía explica cómo encriptar un disco de 500GB utilizando LUKS, crear dos volúmenes lógicos con el sistema de archivos XFS y realizar un montado temporal de los mismos.
=== Requisitos previos ===
* Un disco no particionado y sin datos (en este caso asumimos que es "/dev/sdb").
* Privilegios de superusuario o acceso mediante <code>sudo</code>.
* Instalación de las herramientas necesarias:
<pre>
  sudo dnf install cryptsetup lvm2 xfsprogs
  </pre>
=== Paso 1: Preparar el disco ===
==== Crear la tabla de particiones ====
Usa <code>fdisk</code> para configurar la tabla de particiones del disco:<pre>
sudo fdisk /dev/sdb
</pre>Dentro de <code>fdisk</code>, realiza los siguientes pasos:
# Presiona <code>g</code> para crear una nueva tabla de particiones GPT.
# Presiona <code>n</code> para crear una nueva partición que ocupe todo el disco.
# Escribe los cambios con <code>w</code>.
==== Verificar la partición creada ====
<pre>
sudo fdisk -l /dev/sdb
</pre>Deberías ver una sola partición, <code>/dev/sdb1</code>.
=== Paso 2: Encriptar el disco ===
==== Crear un contenedor LUKS ====
<pre>
sudo cryptsetup luksFormat /dev/sdb1
</pre>''Nota:'' Este comando sobrescribirá todos los datos de la partición. Escribe "YES" cuando se te solicite confirmar.
==== Abrir el contenedor LUKS ====
<pre>
sudo cryptsetup open /dev/sdb1 data_crypt
</pre>Esto crea un dispositivo mapeado en <code>/dev/mapper/data_crypt</code>.
=== Paso 3: Configurar LVM sobre LUKS ===
==== Crear un volumen físico en el contenedor LUKS ====
<pre>
sudo pvcreate /dev/mapper/data_crypt
</pre>
==== Crear un grupo de volúmenes ====
<pre>
sudo vgcreate vg_data /dev/mapper/data_crypt
</pre>
==== Crear volúmenes lógicos ====
Crea dos volúmenes lógicos:<pre>
sudo lvcreate -L 150G -n data1 vg_data
sudo lvcreate -l 100%FREE -n data2 vg_data
</pre>Esto crea dos volúmenes: <code>data1</code> de 150GB y <code>data2</code> que utiliza el espacio restante.
=== Paso 4: Crear los sistemas de archivos ===
==== Formatear los volúmenes lógicos con XFS ====
<pre>
sudo mkfs.xfs /dev/vg_data/data1 -L data1
sudo mkfs.xfs /dev/vg_data/data2 -L data2
</pre>
=== Paso 5: Montado temporal ===
==== Crear puntos de montaje ====
<pre>
sudo mkdir -p /mnt/data1 /mnt/data2
</pre>
==== Montar los volúmenes ====
<pre>
sudo mount /dev/vg_data/data1 /mnt/data1
sudo mount /dev/vg_data/data2 /mnt/data2
</pre>
==== Verificar el montado ====
Usa <code>df -h</code> para verificar que los volúmenes estén montados:<pre>
df -h
</pre>
=== Paso 6: Desmontar y cerrar los volúmenes ===
==== Desmontar los volúmenes ====
<pre>
sudo umount /mnt/data1
sudo umount /mnt/data2
</pre>
==== Desactivar los volúmenes lógicos y el grupo ====
<pre>
sudo vgchange -an vg_data
</pre>
==== Cerrar el contenedor LUKS ====
<pre>
sudo cryptsetup close data_crypt
</pre>
=== Notas adicionales ===
* Para un montado persistente, edita el archivo <code>/etc/fstab</code> y utiliza el UUID de cada volumen. Puedes obtenerlos con:
<pre>
  sudo blkid
  </pre>
* Asegúrate de guardar la contraseña del contenedor LUKS en un lugar seguro.
Con esto, tienes tu disco encriptado con dos volúmenes lógicos formateados en [[XFS]], listos para usarse.

Revisión actual - 10:06 17 dic 2024

Ya he escrito cómo hacer una instalación cifrada, pero, ¿y si quiero cifrar un disco nuevo? Un ejemplo, quiero tener un disco extraíble que quiero montar para hacer copias de seguridad y luego extraerlo y guardarlo en una caja fuerte y solo volver a montarlo para realizar de nuevo la copia o recuperar información.

En el mundo de la seguridad de datos, la encriptación de particiones es una práctica esencial para proteger la información sensible. En este artículo, aprenderemos a crear una partición, encriptarla y gestionarla de forma segura en sistemas Linux utilizando herramientas como fdisk y cryptsetup. Ambas herramientas ya vienen integradas en nuestro sistema operativo Linux Fedora.

Primero, hay que particionar el disco, como en todas las entradas, lo haremos por consola y con «fdisk» como herramienta de particionado. En este ejemplo el siguiente disco sería el segundo detectado por el sistema ( recordemos que podemos listar los discos y particiones con el comando «lsblk» ).

fdisk /dev/sdb
  1. Presiona g para crear una nueva tabla de particiones GPT.
  2. Presiona n para crear una nueva partición.
  3. Selecciona el tipo de partición, generalmente p para primaria.
  4. Especifica el tamaño de la partición (100%, quiero que sea todo el disco).
  5. Presiona w para escribir los cambios y salir.

Formatear con el Sistema de Archivos Crypto y Encriptar

Ahora, prepararemos la partición para la encriptación. Ejecuta los siguientes comandos:

sudo cryptsetup luksFormat /dev/sdb1


sudo cryptsetup open /dev/sdb1 my_encrypted_partition # "my_encrypted_partition" es un nombre descriptivo, puedes poner el que quieras pero debes recordarlo.

A continuación debes poner la contraseña de cifrado.

Crear y Montar un Sistema de Archivos en la Partición Encriptada

Ahora le damos formato, por ejemplo «ext4», un formato por defecto en linux, en este caso a la partición mapeada y la montamos, por ejemplo, en el mismo nombre que el mapeo:

sudo mkfs.ext4 /dev/mapper/my_encrypted_partition

sudo mkdir /mnt/my_encrypted_partition

sudo mount /dev/mapper/my_encrypted_partition /mnt/my_encrypted_partition

En el momento del montado ya nos pedirá la contraseña que le pusimos a la hora de encriptarlo.

Montado y persistencia

Ahora demos el caso que queremos mantener la persistencia de este disco en el inicio del sistema, para ello primero editamos el fichero:

vi /etc/crypttab

añadimos la etiqueta de objetivo , la UUID y la «key file» que la dejamos en «none» y por último las opciones

my_encrypted_partition UUID=6c13fb1e-3e83-438c-a09e-c6a1b7281313 none luks,discard

Recordemos que la UUID se puede averiguar con el comando: blkid , y que será la UUID correspondiente a la partición encriptada.

Ahora editamos el fichero de persistencia:

vi /etc/fstab

Y añadimos

/dev/mapper/my_encrypted_partition /mnt/my_encrypted_partition ext4 defaults,discard 0 2

el sistema reaccionará en el reinicio pidiendo la contraseña, recodemos que si es la misma contraseña que el montaje del directorio raíz, no hace falta volverla a poner.

También podemos poner la UUID correspondiente a la partición con formato ext4 bajo la partición encriptada.

Comandos extra:

A continuación pongo los comando más utilizados:

Apertura y montado temporal:

sudo cryptsetup luksOpen /dev/sde1 my_encrypted_partition #Donde /dev/sde1 es la partición encriptada

Montado de la partición abierta:

sudo mount /dev/mapper/my_encrypted_partition /mnt/backup/

Suspensión de la partición, en el caso de que queramos desactivarla temporalmente por motivos de seguridad

cryptsetup luksSuspend my_encrypted_partition 

Para volver a activar:

sudo cryptsetup luksResume my_encrypted_partition 

y vuelve a poner la contraseña

Para desmontar el disco primero desmontamos la partición con:

sudo umount /mnt/my_encrypted_partition

Y por último cerramos el montado:

sudo cryptsetup close my_encrypted_partition

Y ya podemos desconectar el disco.

Por último, queda cómo cambiar la contraseña de una partición encriptada, solo hay que desmontarla como he explicado antes y ejecutar:

sudo cryptsetup luksChangeKey /dev/sdb1 #siguiendo el caso de la entrada

Esto te pedirá la contraseña antigua y la contraseña nueva. Acto seguido ya puedes volver a montar la partición.

Creando un disco encriptado con dos particiones

En el siguiente caso vamos a montar un nuevo disco de 500GB, lo vamos a encriptar y dentro vamos a crear dos particiones de formato XFS donde haremos el montado temporal.

Esta guía explica cómo encriptar un disco de 500GB utilizando LUKS, crear dos volúmenes lógicos con el sistema de archivos XFS y realizar un montado temporal de los mismos.

Requisitos previos

  • Un disco no particionado y sin datos (en este caso asumimos que es "/dev/sdb").
  • Privilegios de superusuario o acceso mediante sudo.
  • Instalación de las herramientas necesarias:
  sudo dnf install cryptsetup lvm2 xfsprogs
  

Paso 1: Preparar el disco

Crear la tabla de particiones

Usa fdisk para configurar la tabla de particiones del disco:

sudo fdisk /dev/sdb

Dentro de fdisk, realiza los siguientes pasos:

  1. Presiona g para crear una nueva tabla de particiones GPT.
  2. Presiona n para crear una nueva partición que ocupe todo el disco.
  3. Escribe los cambios con w.

Verificar la partición creada

sudo fdisk -l /dev/sdb

Deberías ver una sola partición, /dev/sdb1.

Paso 2: Encriptar el disco

Crear un contenedor LUKS

sudo cryptsetup luksFormat /dev/sdb1

Nota: Este comando sobrescribirá todos los datos de la partición. Escribe "YES" cuando se te solicite confirmar.

Abrir el contenedor LUKS

sudo cryptsetup open /dev/sdb1 data_crypt

Esto crea un dispositivo mapeado en /dev/mapper/data_crypt.

Paso 3: Configurar LVM sobre LUKS

Crear un volumen físico en el contenedor LUKS

sudo pvcreate /dev/mapper/data_crypt

Crear un grupo de volúmenes

sudo vgcreate vg_data /dev/mapper/data_crypt

Crear volúmenes lógicos

Crea dos volúmenes lógicos:

sudo lvcreate -L 150G -n data1 vg_data
sudo lvcreate -l 100%FREE -n data2 vg_data

Esto crea dos volúmenes: data1 de 150GB y data2 que utiliza el espacio restante.

Paso 4: Crear los sistemas de archivos

Formatear los volúmenes lógicos con XFS

sudo mkfs.xfs /dev/vg_data/data1 -L data1
sudo mkfs.xfs /dev/vg_data/data2 -L data2

Paso 5: Montado temporal

Crear puntos de montaje

sudo mkdir -p /mnt/data1 /mnt/data2

Montar los volúmenes

sudo mount /dev/vg_data/data1 /mnt/data1
sudo mount /dev/vg_data/data2 /mnt/data2

Verificar el montado

Usa df -h para verificar que los volúmenes estén montados:

df -h

Paso 6: Desmontar y cerrar los volúmenes

Desmontar los volúmenes

sudo umount /mnt/data1
sudo umount /mnt/data2

Desactivar los volúmenes lógicos y el grupo

sudo vgchange -an vg_data

Cerrar el contenedor LUKS

sudo cryptsetup close data_crypt

Notas adicionales

  • Para un montado persistente, edita el archivo /etc/fstab y utiliza el UUID de cada volumen. Puedes obtenerlos con:
  sudo blkid
  
  • Asegúrate de guardar la contraseña del contenedor LUKS en un lugar seguro.

Con esto, tienes tu disco encriptado con dos volúmenes lógicos formateados en XFS, listos para usarse.