Páginas

viernes, 21 de octubre de 2022

ZFS Cifrar Conjunto de Datos Dataset FreeBSD

https://www.oracle.com/technical-resources/articles/solaris/how-to-manage-zfs-encryption.html

ZFS Datasets Encriptados

Resultado de shell que muestra la lista de conjuntos de datos

$ zfs list


NAME                                           USED  AVAIL     REFER  MOUNTPOINT
zroot                                         14.1G   420G       96K  /zroot
zroot/ROOT                                    12.1G   420G       96K  none
zroot/ROOT/13.1-RELEASE-p2_2022-10-19_233328     8K   420G     2.63G  /
zroot/ROOT/13.1-RELEASE_2022-10-19_232051        8K   420G     1.33G  /
zroot/ROOT/default                            12.1G   420G     11.4G  /
zroot/encrypt                                   96K  30.0G       96K  /zroot/encrypt
zroot/tmp                                      288K   420G      152K  /tmp
zroot/usr                                     1.97G   420G       96K  /usr
zroot/usr/home                                 350M   420G      308M  /usr/home
zroot/usr/ports                                912M   420G      912M  /usr/ports
zroot/usr/src                                  759M   420G      759M  /usr/src
zroot/var                                     1.16M   420G       96K  /var
zroot/var/audit                                 96K   420G       96K  /var/audit
zroot/var/crash                                 96K   420G       96K  /var/crash
zroot/var/log                                  592K   420G      384K  /var/log
zroot/var/mail                                 200K   420G      144K  /var/mail
zroot/var/tmp
104K   420G       96K  /var/tmp

Listar snapshots

$ zfs list -t snapshot


NAME                                                              USED  AVAIL     REFER  MOUNTPOINT
zroot@baseMateKdeInstall                                            0B      -       96K  -
zroot/ROOT@baseMateKdeInstall                                       0B      -       96K  -
zroot/ROOT/13.1-RELEASE-p2_2022-10-19_233328@baseMateKdeInstall     0B      -     2.63G  -
zroot/ROOT/13.1-RELEASE_2022-10-19_232051@baseMateKdeInstall        0B      -     1.33G  -
zroot/ROOT/default@2022-10-19-23:20:51-0                         77.8M      -     1.33G  -
zroot/ROOT/default@2022-10-19-23:33:28-0                         34.2M      -     2.63G  -
zroot/ROOT/default@baseMateKdeInstall                             533M      -     11.9G  -
zroot/tmp@baseMateKdeInstall                                      136K      -      168K  -
zroot/usr@baseMateKdeInstall                                        0B      -       96K  -
zroot/usr/home@baseMateKdeInstall                                41.3M      -      224M  -
zroot/usr/ports@baseMateKdeInstall                                  8K      -      912M  -
zroot/usr/src@baseMateKdeInstall                                    8K      -      759M  -
zroot/var@baseMateKdeInstall                                        0B      -       96K  -
zroot/var/audit@baseMateKdeInstall                                  0B      -       96K  -
zroot/var/crash@baseMateKdeInstall                                  0B      -       96K  -
zroot/var/log@baseMateKdeInstall                                  208K      -      336K  -
zroot/var/mail@baseMateKdeInstall                                  56K      -      144K  -
zroot/var/tmp@baseMateKdeInstall                                    8K      -       96K  -


Creación y uso de conjuntos de datos cifrados, ejemplo simple de habilitación del cifrado.

Administrar claves de cifrado localmente. Si no especifica ninguna política de administración de claves, ZFS solicitará interactivamente una frase de contraseña. Esto probablemente no es ideal en la mayoría de las implementaciones de centros de datos, por lo que en su lugar necesitamos obtener la clave a través de medios no interactivos desde otro lugar. La clave de ajuste puede ser una frase de contraseña o una clave AES sin procesar. El método no interactivo más simple es almacenar la clave de ajuste o frase de contraseña en un archivo y decirle a ZFS qué archivo buscar para esa clave. Si utiliza este método, se supone que el otro sistema de archivos es suficientemente seguro por otros medios, como estar en un disco extraíble. La clave de ajuste solo es necesaria en el momento en que el sistema de archivos ZFS se monta inicialmente después del arranque del sistema, por lo que los medios extraíbles se pueden quitar más tarde si es necesario.


 $ zfs create -o encryption=on -o keylocation=prompt -o \
 keyformat=passphrase zroot/encrypt
Enter new passphrase:
Re-enter new passphrase:

Zfs Listar el dataset zroot/encrypt


 $ zfs list zroot/encrypt 
NAME            USED  AVAIL     REFER  MOUNTPOINT
zroot/encrypt   200K   420G      200K  /zroot/encrypt

Crear un archivo dentro del dataset


 $ touch /zroot/encrypt/supersecret

Zfs creación del conjunto de datos con una cuota


 $ zfs set quota=30g zroot/encrypt

Zfs obtener encryption


 $ zfs get encryption zroot/encrypt 
NAME           PROPERTY    VALUE        SOURCE
zroot/encrypt  encryption  aes-256-gcm  -

Zfs desmontar dataset


 $ zfs unmount zroot/encrypt

Zfs descargar llave


 $ zfs unload-key -r zroot/encrypt 
1 / 1 key(s) successfully unloaded

No se monta directamente


 $ zfs mount zroot/encrypt 
cannot mount 'zroot/encrypt': encryption key not loaded

Zfs obtener estado actual de la llave


 $ zfs get keystatus zroot/encrypt 
NAME           PROPERTY   VALUE        SOURCE
zroot/encrypt  keystatus  unavailable  -

Zfs cargar llave


 $ zfs load-key -r zroot/encrypt 
Enter passphrase for 'zroot/encrypt':
1 / 1 key(s) successfully loaded

$ zfs mount -a

Zfs comprobar accesibilidad


 $ ls /zroot/encrypt 
supersecret

$ Zfs listar


 $ zfs list
NAME                                           USED  AVAIL     REFER  MOUNTPOINT
zroot                                         14.1G   420G      104K  /zroot
zroot/ROOT                                    12.1G   420G       96K  none
zroot/ROOT/13.1-RELEASE-p2_2022-10-19_233328     8K   420G     2.63G  /
zroot/ROOT/13.1-RELEASE_2022-10-19_232051        8K   420G     1.33G  /
zroot/ROOT/default                            12.1G   420G     11.4G  /
zroot/encrypt                                  200K  30.0G      200K  /zroot/encrypt
zroot/tmp                                      288K   420G      152K  /tmp
zroot/usr                                     1.98G   420G       96K  /usr
zroot/usr/home                                 359M   420G      315M  /usr/home
zroot/usr/ports                                912M   420G      912M  /usr/ports
zroot/usr/src                                  759M   420G      759M  /usr/src
zroot/var                                     1.16M   420G       96K  /var
zroot/var/audit                                 96K   420G       96K  /var/audit
zroot/var/crash                                 96K   420G       96K  /var/crash
zroot/var/log                                  592K   420G      384K  /var/log
zroot/var/mail                                 200K   420G      144K  /var/mail
zroot/var/tmp                                  104K   420G       96K  /var/tmp

Zfs desmontar, listar, keystatus, load-key, mount, unmount.


$ zfs unmount zroot/encrypt
 $ zfs unload-key -r zroot/encrypt 
1 / 1 key(s) successfully unloaded
$ ls /zroot/encrypt $ zfs get keystatus zroot/encrypt NAME PROPERTY VALUE SOURCE zroot/encrypt keystatus unavailable -
$ zfs load-key -r zroot/encrypt Enter passphrase for 'zroot/encrypt': 1 / 1 key(s) successfully loaded
$ zfs get keystatus zroot/encrypt NAME PROPERTY VALUE SOURCE zroot/encrypt keystatus available -
$ zfs mount -a $ ls /zroot/encrypt supersecret
$ zfs unmount zroot/encrypt $ zfs unload-key -r zroot/encrypt 1 / 1 key(s) successfully unloaded
$ ls /zroot/encrypt

 $ zfs allow -u carlos keychange zroot/encrypt

El ejemplo anterior permite al usuario carlos cambiar el valor de la clave de ajuste para el conjunto de datos y sus elementos secundarios, pero no cambiar la propiedad keysource. En este caso que el usuario carlos no puede montar el conjunto de datos ZFS después del arranque ni puede forzar la descarga del conjunto de datos y su clave. El usuario raíz (y el propio arranque del sistema) tiene todas las delegaciones de ZFS.

Si fuera un disco externo tendríamos que importar el zpool después de un reinicio. Por ejemplo, previamente hemos creado un zpool de nombre cifrado y un conjunto de datos llamado encrypt.


# zfs import -l cifrado/encrypt
Enter passphrase for 'cifrado/encrypt':
1 / 1 keys successfully loaded

 

FreeBSD es genial!.

No hay comentarios:

Publicar un comentario