Conjunto de datos cifrado
En el servidor (tormenta.local.com)
Crear el keyfile para cifrado automático
Generar un keyfile seguro de 32 bytes (requerido para keyformat=raw):
dd if=/dev/urandom of=/etc/zfs/secifrado.key bs=32 count=1 chmod 400 /etc/zfs/secifrado.key
Este archivo contiene la clave binaria. Respaldar en un lugar seguro, su pérdida implica perder permanentemente el acceso al dataset.
Creación del dataset padre ZFS (no cifrado)
zfs create -o mountpoint=/nfsv4 zroot/nfsv4
A continuación crear el dataset hijo cifrado
zfs create -o encryption=aes-256-gcm -o \ keyformat=raw -o keylocation=file:///etc/zfs/secifrado.key -o \ mountpoint=/nfsv4/secifrado zroot/nfsv4/secifrado
Utiliza AES-256-GCM (recomendado por seguridad y rendimiento). El comando cargará la clave automáticamente durante la creación.
Verificar con el comando siguiente
zfs get encryption,keyformat,keylocation,mountpoint zroot/nfsv4/secifrado NAME PROPERTY VALUE SOURCE zroot/nfsv4/secifrado encryption aes-256-gcm - zroot/nfsv4/secifrado keyformat raw - zroot/nfsv4/secifrado keylocation file:///etc/zfs/secifrado.key local zroot/nfsv4/secifrado mountpoint /nfsv4/secifrado local
Configurar el desbloqueo automático en el arranque
Script rc.d personalizado que cargará la clave y montará el dataset después de importar los pools ZFS, pero antes de iniciar los servicios NFS (evita la intervención manual)
vim /usr/local/etc/rc.d/zfskeys
#############################################################
#!/bin/sh
# PROVIDE: zfskeys
# REQUIRE: zfs
# BEFORE: mountd
# KEYWORD:
. /etc/rc.subr
name=zfskeys
rcvar=zfskeys_enable
start_cmd="${name}_start"
zfskeys_start() {
zfs load-key zroot/nfsv4/secifrado
zfs mount -a # Montar cualquier dataset despues de cargar la clave
}
load_rc_config $name
run_rc_command "$1"
#############################################################
Convertir el archivo en ejecutable y habilitarlo
chmod +x /usr/local/etc/rc.d/zfskeys sysrc zfskeys_enable="YES"
Esto permite que la clave se cargue desde el keyfile automáticamente al arranque, asumiendo que zroot raíz no está cifrado y el keyfile es accesible al inicio.
En caso de que zroot esté cifrado, ajustar el keyfile a un dataset no cifrado.
Archivo /etc/exports
############################################################# V4: /nfsv4 -tls --- /nfsv4/docs -maproot=root -network 192.168.88.0/24 /nfsv4/secifrado -maproot=root 192.168.88.51 --- #############################################################
Recargar configuración y reiniciar servicios
service mountd reload service nfsd restart service tlsservd restart
En el cliente (solaris.local.com)
service tlsclntd restart
Montar el recurso compartido NFSv4 con tls
mkdir /nizs4 mount -t nfs -o nfsv4,tls tormenta:/secifrado /nizs4
Montaje automático agregar en /etc/fstab
tormenta:/secifrado /nizs4 nfs rw,nfsv4,tls,noatime,bg 0 0
Seguridad: El keyfile permite desbloqueo sin intervención, mejor proteger (permisos 400, backups). Si el servidor es sustraido, el keyfile en disco permite acceso, considera almacenarlo en un dispositivo externo removible.
Reiniciar el servidor, comprobar que el dataset está montado y accesible via NFS desde el cliente.
Si TLS falla, comprobar logs (dmesg | grep tls, /var/log/messages). Verificar que los puertos NFS (2049/TCP) están abiertos en el firewall PF. Para depuración usar mount -vv
zfs mount | grep "secifrado"
nfsstat -m --- tormenta:/secifrado on /nizs4 nfsv4,minorversion=2,tcp,resvport,tls,nconnect=1,hard,cto,sec=sys,acdirmin=3,\ acdirmax=60,acregmin=5,acregmax=60,nametimeo=60,negnametimeo=60,rsize=65536,\ wsize=65536,readdirsize=65536,readahead=1,wcommitsize=16777216,timeout=120,\ retrans=2147483647 ---
Archivo /etc/exports
V4: /nfsv4 -tls ... /nfsv4/secifrado -maproot=root 192.168.88.51FreeBSD es genial!.
No hay comentarios:
Publicar un comentario