Hola a todos!!! Este va a ser el primer artículo, espero que de muchos, para Redbyte.Yo soy DiegoAltF4 y tengo un humilde blog sobre ciberseguridad https://diegoaltf4.com/

Hoy voy a enseñaros cómo podemos hacer una copia incremental cifrada y subirla a nuestro sistema de almacenamiento online favorito, ya sea Google Drive, Dropbox …

Primer paso: Rsync incremental

Lo primero es conocer un poco la herramienta Rsync: rsync es una herramienta de código abierto que permite transferir archivos de forma incremental y rápida.Está disponible gratuitamente bajo la Licencia Pública General de GNU y actualmente es mantenido por Wayne Davison. 

Se puede instalar o actualizar mediante el comando:

Sudo apt-get install rsync

A pesar de ser una utilidad muy habitual en Linux, en windows es más común utilizar Robocopy

Bueno, una vez ya hemos aprendido qué es rsync, vamos a ponernos manos a la obra.

Mediante el siguiente comando vamos crear un directorio con el nombre de la fecha y hora actuales:

mkdir backup/$(date +%Y%m%d_%H%M%S)

Ahora vamos a crear un subdirectorio llamado actual mediante el comando

mkdir backup/actual

Este directorio apunta a la copia más reciente.

Rsync tiene numerosas opciones, entre las cuales usaremos las siguientes:

-v Aumenta la verbosidad

-a Esta opción activa de una sola vez las opciones -rlptgoD

-r  Nos permite aplicar recursividad a la copia de seguridad

-l Mantiene los enlaces simbólicos copiandolos tal cual y apuntando al mismo destino, exista o no.

-p Nos permite transferir los permisos de los archivos

-t Conserva las fechas de modificación, haciendo que rsync ponga en el destino la misma fecha de modificación que tenía el archivo en origen

-g Conserva el identificador de grupo (GID)

-o Conserva el identificador de usuario (UID)

-D Copia dispositivos especiales es lo mismo que –devices –specials

-c Esta opción desactiva el checksum, solo utiliza el tamaño y la fecha de modificación para decidir si el archivo se transfiere o no

-z Emplea compresión a los datos durante la transferencia

–link-dest=DIR  Crea enlaces (no copias) a los ficheros en DIR cuando no han cambiado

Vamos a utilizar el comando

rsync -avz –link-dest=/home/user/tmp/backup/actual/ passwd /home/user/tmp/backup/20190713_145816/ 

Con este comando, hemos creado una copia de seguridad enlazando los archivos que se encuentran en /home/user/tmp/backup/actual/passwd a la ruta /home/user/tmp/backup/20190713_145816/  Lo importante de esta orden es el link dest ya que nos permite crear una copia de seguridad, enlazando a los archivos que encuentre en la ruta de link dest, este es el motivo por el que es incremental dado que solo copia los archivos nuevos, los archivos que ya estén los enlaza por lo que no aumenta el tamaño.

Hay que borrar el directorio actual mediante el comando

rm -rf backup/actual/

y crear un enlace simbólico que apunte al nuevo directorio actual

ln -s backup/20190713_145816/ backup/actual

Segundo paso: Cifrado con EncFS

Al igual que antes, vamos a aprender un poco sobre EncFs. EncFS es un sistema de archivos criptográfico gratuito basado en FUSE. Encripta los archivos, utilizando un directorio arbitrario como almacenamiento para los archivos encriptados.

Los archivos se cifran mediante una clave de volumen, que se almacena dentro o fuera del directorio de origen cifrado. Se utiliza una contraseña para descifrar esta clave. Hay que aclarar que no es un volumen cifrado sino que es un sistema de archivos cifrados, no se modifica todo el volumen, únicamente los archivos deseados. Aquí tenéis más información 

Instalación: Para instalar EncFS únicamente hay que ejecutar el siguiente comando
sudo apt-get install encfs

El programa encfs funciona escribiendo encfs la ruta en la que queremos guardar el contenido cifrado y la ruta en la que vamos a guardar el contenido sin cifrar.

encfs /home/user/Desktop/clave/cifrada /home/user/Desktop/clave/sincifrar

por ejemplo, en este caso he guardado el contenido cifrado en el escritorio en una carpeta llamada clave y en el mismo directorio otra carpeta llamada sincifrar. Si queréis que no se pueda ver el archivo cifrado a simple vista, podéis ocultarlo poniendo un punto delante por ejemplo: .cifrada

Cuando estamos ejecutando encfs, en caso de que el directorio en el que queremos crear el archivo cifrado y descifrado, no está creado, nos brindará la opción de crearlo.

Una vez creado el directorio, nos pedirá que elegir entre dos opciones, el modo experto [x] o el modo preconfigurado [p] nosotros vamos a utilizar el modo preconfigurado.

Ahora nos pedirá la contraseña para crear el volumen cifrado

Y nos pedirá una confirmación de la contraseña.

Necesitas recordar esta contraseña ya que no existe ninguna forma de recuperarla. La contraseña se puede cambiar usando el comando encfsctl

Por tanto, con encfs se crea el volumen cifrado que vamos a dedicar a nuestra copia de seguridad, el cual posteriormente subiremos a la nube.

Con EncFS se monta la unidad, para desmontarla hay que usar

fusermount -u /home/user/Desktop/clave/sincifrar

NO SE DEBE TOCAR NUNCA EL DIRECTORIO CIFRADO A MANO

Como podéis ver en este ejemplo, he creado dos directorios, el directorio “encriptado” y el “plano”. Ambos estan vacios pero cuando copio tres archivos en el directorio “plano” en el directorio cifrado aparecen unos archivos con nombres muy extraños. Estos archivos son los tres archivos que he copiado en el directorio plano pero están cifrados.

Tercera parte: subiendo la copia a la nube con Rclone

Rclone, es una herramienta de línea de comandos que te permite transferir archivos locales a sistemas de almacenamiento en la nube, como google drive, a veces conocido como rsync para la nube, es una herramienta escrita en Go que se utiliza para transferir datos desde o hacia un ordenador y un centro de almacenamiento de datos alojado en la nube. diferentes.

Para instalar o actualizar Rclone utilizaremos el comando:

curl https://rclone.org/install.sh | sudo bash

una vez que ya hemos instalado rclone, vamos a configurarlo. Eso lo hacemos ejecutando el comando: rclone config

Yo voy a configurar rclone con google drive, que es donde voy a guardar mi backup

Configuración:
  • Seleccionaremos “new remote” [n]
  • Escribiremos el nombre que queramos darle, en mi caso “backup”
  • Seleccionaremos donde queremos almacenar el backup. Da igual escribir “drive” que poner el número “12”
  • Id. de cliente de la aplicación de Google: dejarlo en blanco normalmente.
  • Secreto de cliente de la aplicación Google – dejar en blanco normalmente
  • Ahora elegiremos el tipo de acceso que va a tener rclone a nuestro drive. En mi caso voy a elegir la opción 1 (acceso total)
  • ID de la carpeta raíz – dejar en blanco normalmente
  • Credenciales de cuenta de servicio Ruta de archivo JSON: necesaria sólo si desea utilizar SA en lugar de un inicio de sesión interactivo.
  • Para usar la configuración automática [Y]
Ahora deberíais ver en vuestro navegador una ventana como la siguiente
En caso de que vuestro navegador no lo abra automáticamente, tenéis que ir a la ruta:
http://127.0.0.1:53682/auth
Aquí, tenéis que permitir que rclone tenga acceso a nuestra cuenta.

Ahora volveremos a la terminal y nos preguntará que si el “access_token” es correcto. Si todo ha ido bien, darle a Yes [Y] Y ya tendremos todo configurado. Si hemos hecho todo bien hasta ahora, con el comando:

rclone lsd copiaseguridad:/
podremos listar los archivos que tendremos en nuestro drive

Ahora nos toca sincronizar nuestro backup cifrado con nuestro Drive. Tenemos que usar el parámetro sync en vez del copy dado que lo que queremos hacer es una copia idéntica del volumen cifrado para así evitar problemas de integridad. Esto lo hacemos con el comando:

rclone sync /root/prueba1/ copiaseguridad:/

Si agrupamos estas tres herramientas conseguimos copias incrementales, cifradas y en la nube.

Espero que os haya gustado Un saludo DiegoAltF4

Un comentario en “Rsync + EncFS + Rclone: copias incrementales cifradas en la nube.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *