miércoles, 8 de marzo de 2023

Copias de seguridad con Grsync en GNU/Linux.

 Grsync es una interfaz gráfica (GUI) para rsync, la herramienta para la línea de comandos de sincronización de directorios disponible en Linux. 


Si bien Grsync no permite acceder a toda la potencia que posee rsync, puede ser utilizado con mucha facilidad para sincronizar directorios (locales y remotos). Además podemos crear fácilmente perfiles, con diferentes tipos de copias mucho más fácilmente que con rsync; y combinarlos con Cron para que se vayan ejecutando en diferentes momentos.

 

Para instalar grsync solo tenemos que ir a una terminal y allí:


~# apt install grsync

 

Empezamos

 


Lo primero vamos a ver el interfaz de Grsync al detalle:

 


 
  1. En este desplegable podemos crear nuevos perfiles. 
  2. Aquí podemos navegar por las carpetas del disco/discos para elegir que archivos copiar y donde; también podemos introducir la ruta a mano.
  3. Aquí tenemos todas las opciones adicionales para las copias, como veis son muchas.
  4. En esta pestaña tenemos aun mas opciones adicionales.
Lo mejor es guardar copias de seguridad en la máquina local y también en una máquina remota para mas seguridad. Así que vamos a ver como podemos hacer una copia de seguridad sobre SSH con la ayuda de Grsync.

 

Copias en remoto con Grsync. Preparativos.

He implementado un servidor SSH con un usuario (redes) y contraseña en una máquina con Debian 10 con dirección IP 172.16.20.2 y como cliente usaré una máquina con Linux Mint; pero no es recomendable la opción usuario/contraseña en servidores remotos abiertos a internet por razones obvias de seguridad. Es necesario que Rsync y Grsync estén instalados tanto en el servidor como en el cliente.

He creado una carpeta llamada datos con algunos archivos de texto.

También he usado UFW para configurar el cortafuegos y le abrimos el puerto 22 TCP.


~# apt intall ufw


~# ufw allow 22 tcp


Podemos comprobar que está activado correctamente con:


~# ufw status verbose


Esto último también lo hacemos en la máquina cliente; En Linux Mint tenemos Ufw preinstalado  con interfaz gráfico. Con todo listo seguimos. 


En el lado del servidor.

 

Instalamos openssh rsync y grsync con la terminal 


~# apt update


~# apt install openssh-server rsync grsync


Configuramos el servidor editando el archivo de configuración sshd_config con nuestro editor favorito. En mi caso usaré Nano. 

 

~# nano /etc/ssh/sshd_config


Y allí editamos algunas líneas:


Port 22
AddressFamily inet # para ipv4, para ipv6 sería inet6
ListenAddress 172.16.20.2
PasswordAuthentication yes
AllowUsers redes #el nombre del usuario creado


Guardamos el archivo y arrancamos el servidor con:


~# systemctl start sshd


Podemos comprobar que esta todo correcto con:


~# systemctl status sshd


En el lado del cliente.

 

Instalamos rsync y grsync.


~# apt update


~# apt install rsync grsync


Abrimos una terminal y empezamos una sesión ssh en una terminal con:


~# ssh redes@172.16.20.2


obtenemos un mensaje de terminal como la imagen inferior, en el que se nos comunica que vamos a añadir el host 172.16.20.2 a la lista de host conocidos y la clave ECDSA del este host, además se nos pide confirmación y la contraseña del usuario. 

 


 

Ahora abrimos el interfaz de Grsync y aquí rellenamos los formularios con el origen de los archivos a respaldar y el destino, podemos dejar las opciones por defecto como en la imagen inferior.

 


 

Hacemos clic en el icono de “Ejecutar” de la esquina arriba a la derecha, os lo indico en la imagen inferior, porque según la versión del escritorio que usemos cambiará el icono.

 


 


Nos aparece un prompt para introducir la contraseña y ya vemos como se hace la copia, como los archivos son muy pequeños la copia es instantánea.

 


 

Podemos comprobar en la máquina-server que los archivos se copiaron.


El problema de realizar las copias así es que es un poco complicado de automatizar y hay que pasar la contraseña al prompt cada vez que se hace la copia, así que vamos a realizar la misma tarea esta vez con clave de cifrado RSA sin contraseña con lo que automatizarla será mucho mas fácil.


Aparte tiene otro beneficio adicional desde el punto de vista de la seguridad: es mas difícil de violentar, pues atacante necesitaría sustraer las claves, o bien del servidor o bien del cliente, lo que es mucho mas difícil que obtener una contraseña. Eso si, requiere de un poquito mas de trabajo, pero tampoco demasiado; vamos a verlo.


En el lado del cliente.

 

Creamos una clave RSA  con el comando ssh-keygen.


~# ssh-keygen -f /home/redes/.ssh/mint_key.pub -t rsa -b 4096


    • -f le pasamos el nombre de archivo junto con la ruta a su ubicación.
    • -t tipo de clave.
    • -b bits del cifrado cuanto mas alto mas fuerte.


Durante el proceso se nos requerirá una contraseña para la clave, la dejamos en blanco haciendo Intro directamente. Con la clave generada tenemos que exportarla al servidor en la terminal con:


~# ssh-copy-id redes@172.16.20.2


Es posible que nos salte en algún momento un error “Agent admitted failure using the key”, lo corregimos reiniciando la conexión y luego usando el comando:


~# ssh-add

 

En el lado del servidor.

 

Reconfiguramos el ssh server para funcionar con RSA, editando el archivo de configuración.


~# nano /etc/ssh/sshd_config

 

 

# editamos las líneas:


PasswordAuthentication no
PubkeyAuthentication yes
RSAAuthentication yes #está deprecated pero yo lo sigo usando de momento
AuthorizedKeysFile  .ssh/authorized_keys .ssh/authorized_keys2
ChallengeResponseAuthentication no #suele venir comentada, pero comprobadlo por si acaso

 

Guardamos el archivo, reiniciamos el servidor y cerramos la conexión. Con todo listo vamos a arrancar Grsync y como antes vamos a intentar hacer la copia

 


 


 

Esta vez no ha aparecido ningún prompt para pedirnos la contraseña, ahora podremos automatizarlo mucho mas fácilmente.


Para esta entrada he usado Grsync las opciones más básicas pero con un poco de investigación podemos crear diferentes perfiles con diferentes características de la copia (copias incrementales por ej.) y ejecutarlos periódicamente. 

Para ejecutar los perfiles es muy simple en la terminal:


~# grsync -e nombre_del_perfil


.. que es facilísimo de implementar en un script en bash o crear un servicio systemd a la hora de automatizarlo sin necesidad de saber apenas programar.


Y bueno esto es todo por hoy espero que os sea útil la entrada.


No hay comentarios:

Publicar un comentario