Páginas

Mostrando entradas con la etiqueta encriptar. Mostrar todas las entradas
Mostrando entradas con la etiqueta encriptar. Mostrar todas las entradas

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!.

domingo, 30 de agosto de 2020

L2TP IPsec y BCP Mikrotik

VPN Túnel


Puertos que tenemos que abrir en el router Mikrotik 4500, 500, 1701 (udp) y el protocolo ipsec-esp (50).


Utilizar estos protocolos para conseguir conectividad en capa 2 con altos niveles de seguridad. Un túnel o VPN es una conexión entre dos equipos remotos como si los equipos estuviesen conectados directamente. Como este es un túnel de capa 2 vamos a extender nuestro dominio de broadcast de un router hacia el otro y crear un solo dominio de broadcast con independencia de su ubicación. 


L2tp quiere decir Layer 2 Tunneling Protocol o protocolo de capa 2 y se utiliza con IPSec que proporciona  encriptación y autenticación con el fin de para proporcionar mayores niveles de seguridad para la transmisión de datos. BCP (Bridge Control Protocol) sirve para agregar la interfaz virtual creada (el túnel) a un bridge. BCP es una parte independiente de PPP.


Laboratorio con GNS3. Con equipos físicos la configuración será la misma. Lo único que cambia es la IP pública que evidentemente debe ser alcanzable.



Configuración del equipo que va a servir de Servidor de las conexiones L2TP: 


Tenemos una oficina remota con una IP pública 172.16.90.138 (es la IP con la que el equipo sale a Internet en este laboratorio) y una LAN con IP privada 10.1.101.0/24.  Este equipo tiene un bridge llamado bridge_LAN al que pertenecen los puertos ether1 al ether5 y es el que vamos a utilizar con BCP en los túneles.



Queremos tener conexión total en capa 2 entre los dos routers. Comprobamos que tenemos conexión a Internet con un ping. 



En el GNS3 desde la terminal, (botón derecho sobre el router clic en Console), cambiamos los nombres de los routers.



Abrimos el Winbox (los routers ya tienen IP asignadas por NAT desde mi red local:



nos conectamos al router L2TPServer y habilitamos desde PPP el L2TP Server haciendo clic en Enabled, elegimos default encryption, (es aquí donde habilitamos BCP o en su defecto en el perfil que nosotros generemos), como Default Profile, en Use IPsec elegimos required (esto obliga al cliente a utilizar IPSec). En Authentication solo dejamos habilitado mschap2. En IPsec Secret ponemos una contraseña fuerte para conseguir un buen nivel de seguridad (este Secret es para IPsec y puede ser diferente de la contraseña del usuario). También podemos habilitar una sesión por host habilitando One Session Per Host. 



En la pestaña Profiles veremos los perfiles por defecto implementados en RouterOS. Abrimos Default Encryption. En bridge seleccionamos el bridge de la LAN. En estos momentos ya estamos utilizando BCP.  Cuando se establezca el túnel, la interfaz del túnel se va a agregar a este bridge que se llama bridge_LAN guardamos los cambios.




Necesitamos crear un usuario y una clave, esto lo haremos en New PPP Secret. Este usuario es para establecer el túnel l2tp. Como usuario carles y una contraseña (, en Service l2tp y en Profile default encryption. El password anterior era para IPsec. En Local Address pondremos la IP 10.100.100.1 y en Remote Address la 172.16.254.1 (esta es la IP que tomará el equipo cliente). Estas son las direcciones IP que va a tomar en sus extremos el túnel.





Llegados a este punto nuestro router está listo para recibir conexión y nuestro dominio de broadcast sea extendido hacia el cliente. 


Configuración del equipo Cliente:



Nos conectamos a través de Winbox



Equipo cliente desde el que vamos a conectarnos hacia la oficina. No es necesario que tenga una ip pública, algo imprescindible en el de la oficina, lo que si tiene que tener es conexión a Internet. Comprobamos conexión a Internet haciendo un ping. 



Vamos a agregar un L2TP Client y agregar los parámetros de conexión que debe coincidir con lo configurado en el Servidor. Donde pone Dial Out en la entrada Connect To tenemos que introducir la IP pública de la oficina que dijimos que, (a efectos del laboratorio), es la 172.16.90.138. En el usuario y la contraseña que habéis puesto antes.



En Profile seleccionamos default encryption y tildar Use IPsec e introducir el password de IPsec. No necesitamos utilizar las opciones Dial on Demand ni Add Default Route. Clic en Aplicar y OK. Ahora en Profiles agregamos el bridge. En este caso el router tiene un bridge creado entre los puertos 2 al 5 y la wlan1 que se llama LAN_bridge.





En el momento de establecer el túnel todos los puertos perteneciente al bridge tendrán conectividad en capa 2 con el router de la oficina.  Vamos a Interface y deshabitamos y habilitamos el túnel y vemos que el túnel se ha establecido. En status, Status connected. Las Local address (172.16.254.1) t Remote Address (10.100.100.1). Si hacemos un ping a la IP 10.100.100.1 veremos que hay respuesta. También podemos verificar que BCP está activo que entre los Ports del bridge LAN_bridge aparece el puerto l2tp dinámico que es el túnel L2TP. 



Ping a la IP 10.100.100.1



Si abro una nueva ventana New Winbox veré en la pestaña Neighbors el equipo del otro extremo (172.16.254.1.1). Si configuro mi portátil con una IP del mismo rango de la que se utiliza en la oficina que es la tendría que poder hacer ping hacia el otro router. 


Con un dhcp server habilitado mi portátil tomaría una IP automáticamente de esa LAN. Es como si estuviera conectado directamente al router de la oficina. Se pueden conectar clientes Mac, Windows, Linux, Android, etc.


Mikrotik es genial!.

sábado, 24 de septiembre de 2016

Cifrar particion con cryptsetup luks

Sistema Operativo Arch Linux

# lsmod|grep dm_crypt
dm_crypt               28672  1
dm_mod                102400  2 dm_crypt

Si no aparece el módulo lo cargamos con:
# modprobe dm_crypt


Ya creada la partición /dev/sda5, procedemos a formatear usando el sistema de archivos LUKS (Linux Unified Key Setup)

# cryptsetup luksFormat /dev/sda5

El UUID del nuevo sistema de ficheros encryptado.

# cryptsetup luksUUID /dev/sda5
2005190e-81e8-4292-a84e-e84a06d6d70a

El siguiente paso es mapear el sistema de ficheros contra encrypted-fs e introducir la contraseña que necesitaremos recordar.

# cryptsetup luksOpen /dev/sda5 encrypted-fs
Enter passphrase for /dev/sda5

Tendrá que darle formato y montar:

# mkfs.ext4 /dev/mapper/encrypted-fs
mke2fs 1.43.3 (04-Sep-2016)
Creating filesystem with 10521856 4k blocks and 2632672 inodes
Filesystem UUID: 8da03053-b6bd-4add-b944-713fa2942806
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done 



Esta es la salida de fdisk

# fdisk -l
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 9E0ED2FC-0BC1-4542-9688-DF733F20A984

Device         Start       End   Sectors  Size Type
/dev/sda1       2048 104859647 104857600   50G Linux filesystem
/dev/sda2  104859648 105908223   1048576  512M EFI System
/dev/sda3  105908224 114296831   8388608    4G Linux swap
/dev/sda4  114296832 533727231 419430400  200G Linux filesystem
/dev/sda5  533727232 617906175  84178944 40.1G Linux filesystem



Disk /dev/mapper/encrypted-fs: 40.1 GiB, 43097522176 bytes, 84174848 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


La salida del comando siguiente nos sirve para averiguar el UUID y utilizarlo en fstab:

# tune2fs -l /dev/mapper/encrypted-fs | grep UUID

Filesystem UUID:          8da03053-b6bd-4add-b944-713fa2942806


# mkdir /encrypted-fs

Lo añadimos al archivo /etc/fstab con la opción noauto para iniciar y montar manualmente.

# /dev/sda5                                                                                                   
UUID=8da03053-b6bd-4add-b944-713fa2942806   /encrypted-fs  ext4  noauto,defaults  0 0


# cat /etc/fstab


Si quiere montar el sistema de archivos cifrado al iniciar el sistema, tiene que agregar al archivo /etc/crypttab la línea, le pedirá la contraseña al arranque del sistema.

encrypted-fs  /dev/mapper/encrypted-fs  none

Antes de desconectar el dispositivo vamos a copiar los datos que queremos mantener cifrados:

# cp -r /home/carles/gentoo /encrypted-fs/

Desmontamos el dispositivo antes de desconectarlo
# umount /encrypted-fs/

Ya podemods desconectar el dispositivo ejecutando cryptsetup, con la opción luksClose y el nombre del dispositivo.

# cryptsetup luksClose /dev/mapper/encrypted-fs

Bien, reiniciar el sistema.

Al reiniciar el sistema tendremos que cargar el módulo con lsmod, y abrirlo con cryptsetup y la opción luksOpen /dev/sda5 encrypted-fs. Nos pedirá la frase o contraseña introducida para el cifrado de la partición.

# cryptsetup luksOpen /dev/sda5 encrypted-fs
Enter passphrase for /dev/sda5:

Aún no podremos acceder al dispositivo, tenemos que montarlo:

# ls /encrypted-fs/gentoo
ls: cannot access '/encrypted-fs/gentoo': No such file or directory

# mount /encrypted-fs

# ls /encrypted-fs
gentoo  lost+found

Unix es genial!.

viernes, 7 de febrero de 2014

Encriptar con geli FreeBSD

Encriptar disco duro usb con geli:

Geli es una clase GEOM criptográfica que utiliza el framework crypto y entre otras características, soporta múltiples algoritmos criptográficos (AES, Blowfish y 3DES).

Conectar un disco duro externo a un puerto usb, se creará el dispositivo /dev/da0.

Habilitar soporte para geli en del kernel de FreeBSD

options    GEOM_ELI
device     crypto

Recompilar el kenel y reiniciar con el nuevo kernel.

Cargar el nuevo múdulo geli en el arranque añadiendo la siguiente línea al archivo /boot/loader.conf

geom_eli_load="YES"

Generar la clave maestra

Generar una archivo un archivo de clave que se utilizará como parte de la clave maestra para el proveedor de cifrado montado en /private. El archivo de clave algunos datos aleatorios que se utilizan para encriptar la clave maestra. La clave principal también estará protegida por una contraseña. El tamaño del sector del proveedor /dev/da0.eli será de 4kb

# dd if=/dev/random of=/root/safe/da0.key bs=64 count=1

Inicializar el proveedor que necesita ser encriptado. Aquí se puede
configurar el algoritmo criptográfico a usar, longitud de la clave, etc:

# geli init -s 4096 -K /root/safe/da0.key bs=64 count=1

Comprobar el sistema de archivos:


Conectar el proveedor con la clave generada:
# geli atach -k /root/safe/da0.key /dev/da0

# ls /dev/da0*
da0 da0.eli

Crear un nuevo sistema de archivos:

# dd if=/dev/random of=/dev/da0.eli bs=1m
# newfs /dev/da0.eli


# mount /dev/da0.eli /private

El sistema de archivos cifrado ahora es visible y disponible para su uso

# df -h


Desmontar y desconectar del proveedor:
Una vez terminado el trabajo sobre la partición cifrada, es prudente desmontar y separar la partición cifrada geli del kernel (en este caso desconectar el disco duro usb):

# umount /private/
# geli detach da0.eli

Conectar de nuevo:
# geli attach -k /root/safe/da0.key /dev/da0
Enter passphrase:

# umount /private
# geli detach da0.eli

Utilizar solo password:

Es más conveniente para cifrar una memoria USB o una imagen de archivo basada sólo en una fase de contraseña sin clave. En este caso no es necesario llevar el archivo de clave adicional para acceder al contenido del disco. El procedimiento es en gran medida el mismo que el anterior, sólo sin el archivo de clave. Vamos a encriptar un archivo basado en imagen /cryptedfile de 1 GB.

# dd if=/dev/zero of=/cryptedfile bs=1M count=1000
# mdconfig -at vnode -f /cryptedfile


# geli init /dev/da0
# geli attach /dev/da0

# newfs -U -m 0 /dev/da0.eli
# mount /dev/da0.eli /private
# geli detach da0.eli

Ahora es posible mountar esta imagen en otro sistema de solo con el password:
# mdconfig -at vnode -f /cryptedfile
# geli attach /dev/ad0
# mount /dev/da0.ali /private


Fuente:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/disks-encrypting.html
http://bsdtutorial.org/
http://cb.vu/unixtoolbox_pt.xhtml

Unix es genial!.