Cifrado de particiones sobre LVM2 – Reiserfs

Introducción:

Uno de los problemas más comunes con los que nos encontramos a veces es que nos quedamos cortos a la hora de definir nuestro esquema de particiones y debemos reformatear y particionar nuestro disco o particiones, o bien nos vemos en la necesidad de agregar nuevos discos a los ya existentes. Para facilitarnos estas tareas, entre otras cosas se incluyó LVM entre las capacidades del kernel de Linux.

Contenido:

  1. Objetivos
  2. Panorama
  3. La tecnología LVM
  1. ¿Qué es LVM?
  2. ¿Cómo funciona?
  • Configuración y Puesta en marcha
  • Crear particiones LVM
  • Crear Volúmenes Físicos
  • Crear Grupos de Volúmenes
  • Crear Volúmenes Lógicos
  • Crear un Sistema de Archivos
  • Crear la partición Cifrada

    1. Objetivos:

      • Crear Volúmenes Lógicos.
      • Asegurar nuestras particiones para restringir el acceso físico no autorizado a los datos.
      • Poder aumentar y/o modificar los tamaños de las particiones en caso de ser necesario.
      • Utilizar un fs con journalling.

    2. Panorama

      El sistema utilizado es un Debian Sarge, sobre un RAID5 por hardware, pero el efecto de la instalación será idéntico si lo hacemos en una partición sin arreglo o en un arreglo por Software.


    3. La tecnología LVM

      LVM son las siglas en inglés para Logical Volume Management (Administración de Volúmenes Lógicos).

    1. ¿Qué es LVM?

      Uno de los problemas más comunes con los que nos encontramos a veces es que nos quedamos cortos a la hora de definir nuestro esquema de particiones y debemos reformatear y particionar nuestro disco o particiones, o bien nos vemos en la necesidad de agregar nuevos discos a los ya existentes. Para facilitarnos estas tareas, entre otras cosas se incluyó LVM entre las capacidades del kernel de Linux.

      LVM es un concepto diferente respecto del manejo de la información, un nivel más alto que las particiones y los discos rígidos.

      Terminología LVM

      Los conceptos que manejamos son:

      • Volumen físico: Representa una partición o disco rígido.
      • Volumen lógico: Uno o más volúmenes físicos conforman un volumen lógico, similar a lo que llamamos comúnmente una partición, por ejemplo, un volumen lógico puede contener un sistema de archivos (/home, /var, etc).
      • Grupo de Volúmenes: Uno o más volúmenes lógicos conforman un Grupo de Volúmenes. Similar a lo que normalmente usamos como un disco duro físico, sirve para unificar y administrar varios volúmenes lógicos.
    2. ¿Cómo funciona?

      El VGDA (Volume Group Descriptor Area – Área de Descripción de Grupo de Volumen), funciona de manera similar a cómo funciona una tabla de particiones. Se localiza al comienzo de cada Volumen Físico, cada VGDA contiene la siguiente información:

      1. un descriptor de PV (Vol.Físico)
      2. un descriptor de VG (Grupo de Vol.)
      3. Los descriptores de los LV (Vol.Lógicos)
      4. Múltiples descriptores de PE (Physical Extents – la unidad de información de LVM)

      Al arrancar el sistema, los Lvs y Vgs se activan y el VGDA se cargara en memoria.

      El VGDA ayuda a identificar donde se alojan realmente los Lvs. Cuando el sistema desea acceder al dispositivo de almacenamiento, el mecanismo de mapeo, construido junto con el VGDA, es utilizado para acceder a la ubicación física real para efectuar las operaciones de E/S.


  • Configuración y puesta en marcha

    Antes que nada, debemos tener instalados los paquetes y soporte en el kernel.

    Como ya dijimos, utilizamos Debian Sarge, por lo cual ya sabemos que tenemos soporte nativo en el kernel. Deberías chequearlo para tu distribución, el kernel debe tener las siguientes opciones habilitadas:

    Multi-device Support (RAID and LVM) –>
    [*] Multiple devices driver support (RAID and LVM)
    Logical volume manager (LVM) Support.

    # apt-get install lvm2

    nos instalará los paquetes necesarios.

    Hay que tener en claro que, para transformar en lvm nuestro sistema, deberemos tener espacio suficiente en disco para mover temporalmente nuestra información desde la partición «común» a la nueva partición LVM. Por eso chequeamos nuestro espacio en disco:

    # df -h
    Filesystem Size Used Avail Use% Mounted on

    /dev/sda1 954M 447M 508M 47% /
    tmpfs 63M 0 63M 0% /dev/shm
    /dev/sda8 191M 44M 148M 23% /boot
    /dev/sda5 4.5G 56M 4.5G 2% /home
    /dev/sda7 1.9G 867M 1.1G 46% /var


  • Crear particiones LVM

    Podemos crear una partición LVM con fdisk, cfdisk u otra herramienta de particionado preferida, de la misma manera que creamos otro tipo de particiones, el código es 8e.

    # fdisk /dev/sda
    press p (to print the partition table)
    and n (to create a new partition)

    Una vez creada la partición, verificamos con fdisk:

    Device Boot Start End Blocks Id System
    /dev/sda1 * 1 506 4064413+ 83 Linux

    /dev/sda2 507 523 136552+ 5 Extended
    /dev/sda5 507 523 136521 82 Linux swap
    /dev/sda3 524 778 2048256 8e Linux LVM
    /dev/sda4 779 1033 2048256 8e Linux LVM


  • Crear Volúmenes Físicos

    El comando para crear volúmenes físicos es pvcreate. Suponiendo que deseamos hacer un PV en /dev/sda3, y /dev/sda4, entonces:

    # pvcreate /dev/sda3

    pvcreate — -physical volume «/dev/sda3» successfully created
    # pvcreate /dev/sda4
    pvcreate- — physical volume «/dev/sda4» successfully created


  • Crear Grupos de volúmenes

    Ahora, deberemos crear un grupo de Volumen, en el cual agruparemos los Pvs creados:

    # vgcreate prueba /dev/sda3 /dev/sda4
    vgcreate- — INFO: using default physical extent size 4 MB

    vgcreate- — INFO: maximum logical volume size is 255.99 Gigabyte
    vgcreate- — doing automatic backup of volume group «prueba»
    vgcreate- — volume group «prueba» successfully created and activated

    Hemos creado un Grupo de Volumen llamado «prueba», el cual contiene a los volúmenes físicos /dev/sda3 y /dev/sda4. Podemos, además, si deseamos especificar el tamaño del «extent» (unidad mínima de inf) en el comando en el caso que el predeterminado de 4 MB no sea adecuado para nuestro objetivo.

    Ahora, deberemos activar el Grupo de Volumen, mendiante el comando

    # vgchange -ay prueba

    Para ver en detalle los VG en nuestro sistema:

    # vgdisplay

    nos mostrará la información al respecto.


  • Crear Volúmenes Lógicos

    Para crear volúmenes lógicos, utilizamos el comando lvcreate:

    # lvcreate -L1G -nvolumen1 prueba

    Creamos un LV de 1 Gb llamado volumen1 en el VG prueba.


  • Crear un Sistema de Archivos

    Ya estamos en condiciones de crear un filesystem en nuestra partición LVM (en éste caso reiserfs, pero puedes elegir el que te plazca, siempre que esté soportado por tu kernel ) :

    # mkreiserfs /dev/prueba/volumen1

    Por último, debemos montarlo para poder empezar a acceder:

    # mkdir /mnt/lv1
    # mount -t reiserfs /dev/prueba/volumen1 /mnt/lv1

    Para que se monten automáticamente al inicio, agregamos en /etc/fstab:

    /dev/prueba/volumen1 /mnt/lv1 reiserfs defaults 1 1

  • Crear la partición cifrada

    Hasta aquí sería si queremos tener una partición LVM «cruda», pero como adelantamos en nuestro objetivos, además, deseamos tener nuestra información encriptada.

    Para ello utilizaremos la capacidad del kernel 2.6 crypto.

    Instalamos el paquete cryptsetup

    # apt-get install cryptsetup

    Incluimos los módulos necesarios:

    # modprobe dm_mod
    # modprobe dm_crypt

    # modprobe aes

    Ahora hacemos permanente la carga de los módulos:

    # echo aes >> /etc/modules
    # echo dm_mod >> /etc/modules
    # echo dm_crypt >> /etc/modules

    A continuación, creamos la partición en la cual guardaremos la información cifrada (en nuestro caso /dev/prueba/volumen1:

    # cryptsetup -y create info-crypt /dev/prueba/volumen1

    Se nos pedirá ingresar la contraseña 2 veces. Cuidado!!! Si perdemos esta contraseña o introducimos de manera errónea, no podremos acceder a los datos guardados allí!.

    Para hacer los cambios permanentes, debemos completar 2 pasos más:

    agregar en /etc/fstab una línea con los siguientes datos:

    /dev/prueba/volumen1 /info-crypt reiserfs defaults 0 1

    y crear un archivo /etc/crypttab con los siguientes datos:

    info-crypt /dev/prueba/volumen1

    Por último, creamos el filesystem:

    # mkfs.reiserfs /dev/prueba/volumen1

    y lo montamos:

    mount /info-crypt

    Verificamos que todo esté correcto:

    # df -h
  • Documentación consultada y recomendada:

    Using the Logical Volume Manager – The Linux Gazette 84

    LVM HowTo

    Learning Linux LVM
    EncryptedFilesystemHowto

    Licencia del documento
    El contenido de este documento está registrado bajo los términos de la licencia creative commons – Reconocimiento / Compartir Igual

    Autor: Ricardo Frydman
    URL: http://www.eureka-linux.com.ar

    Deja un comentario

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.