Subsecciones

Manejo de discos cifrados

El cifrado que se usa en el proceso de instalación es un cifrado de disco completo (Full disk encryption, FDE) El subsistema de cifrado FDE en Linux 2.6 es dm-crypt

LUKS

Estándar para cifrado de disco en Linux

cryptsetup

Comando básico para el cifrado de disco Ejemplos de uso:
  1. Cifrar y activar una partición usando formato LUKS y una contraseña como clave (todos los datos se pierden y debemos reinicir el filesystem)
    # Para mayor seguridad, desmonta y sobreescribe
    # la partición (puede ser muy lento)
    umount /dev/hda8
    dd if=/dev/urandom of=/dev/hda8
    # Formatea la partición, cifrando con LUKS
    cryptsetup luksFormat /dev/hda8
    # Activa la partición, en el
    # dispositivo /dev/mapper/hda8_crypt
    cryptsetup luksOpen /dev/hda8 hda8_crypt
    # Reinicia el sistema de ficheros
    mkfs -t fstipo /dev/mapper/hda8_crypt
    # Obtiene el UUID luks
    crypsetup luksUUID /dev/hda8
  2. Cifrar una partición de swap usando /dev/urandom como clave aleatoria (sin usar LUKS)
    cryptsetup create hda7_crypt /dev/hda7 --key-file /dev/urandom
    
  3. Usar un fichero de clave para una partición cifrada inicialmente con contraseña, eliminando la contraseña inicial
    # Crea un fichero aleatorio para usar como clave
    dd if=/dev/urandom of=/etc/keys/hda6.luks bs=1 count=4096
    # Cambia los permisos del fichero (debe ser de root)
    chown root.root /etc/keys/hda6.luks
    chmod 700 /etc/keys
    chmod 400 /etc/keys/hda6.luks
    # Añade el fichero hda6.luks como clave
    cryptsetup luksAddKey /dev/hda6 /etc/keys/hda6.luks
    # Comprueba que existen dos claves (slots)
    cryptsetup luksDump /dev/hda6
    # Borra el slot 0 con la clave original
    # (impide usar esa clave, hacerlo solo después de comprobar que el fichero luks funciona como clave)
    cryptsetup luksKillSlot /dev/hda6 0 -key-file /etc/keys/hda6.luks
    # Comprueba que el slot se ha borrado
    cryptsetup luksDump /dev/mapper/hda6_crypt
    # Por último, modifica el fichero crypttab para indicar que se use el fichero luks

  4. Extiende el dispositivo cifrado GV-homelv_crypt, después de haber extendido el volumen lógico sobre el que está definido
    # cryptsetup resize /dev/mapper/GV-homelv_crypt

Fichero /etc/crypttab

Especifica en el arranque como se deben descifrar los discos
Ejemplo:
#<cifrado>  <original> <fichero clave>      <opciones>
hda7_crypt  /dev/hda7  /dev/urandom         cipher=aes-cbc-essiv:sha256,size=256,swap
hda8_crypt  /dev/hda8  none                 luks
hda6_crypt  /dev/hda6  /etc/keys/hda6.luks  luks
Línea 1
área de swap con cifrado aleatorio
Línea 2
partición con cifrado LUKS; none indica que se pide una contraseña en el arranque
Línea 3
partición con cifrado LUKS y clave obtenida desde fichero
Para evitar problemas (posibles cambios en el nombre de las particiones), es preferible substituir el nombre del dispositivo original por su UUID obtenido usando crypsetup luksUUID
# cryptsetup luksUUID /dev/hda8
0e44dcc3-2b1f-4349-9fb3-db82b547acd1
# cat /etc/crypttab
.....
hda8_crypt UUID=0e44dcc3-2b1f-4349-9fb3-db82b547acd1 none luks
.....

Administración de Sistemas e Redes <ASR.USC[at]gmail.com>
Tomás Fernández Pena <tf.pena[at]usc.es>
Última actualización: 19-10-15 11:23 por tomas

Creative Commons License
Curso de Administración de Sistemas y Redes por Tomás Fernández Pena se distribuye bajo la licencia Creative Commons Recoñecemento-Compartir baixo a mesma licenza. 3.0 España.
Trabajo original en persoal.citius.usc.es/tf.pena/ASR.