Servidor Rsync
Configuración del servicio
Por defecto, en la mayoría de los sistemas Unix está instalado Rsync. Pero sólo es utilizable como cliente.
Si solicitamos el status del servicio veremos que nos indica como falta el archivo /etc/rsyncd.conf
root@server-carpet:/home/user# systemctl status rsync.service
● rsync.service - fast remote file copy program daemon
Loaded: loaded (/lib/systemd/system/rsync.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Condition: start condition failed at Wed 2021-11-03 11:14:46 UTC; 2min 32s ago
└─ ConditionPathExists=/etc/rsyncd.conf was not met
Crearemos dicho archivo, en el que añadiremos:
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
[rsync]
path = /home/programster/code
comment = Archivos_Carpet4You
uid = user
gid = user
read only = no
list = yes
auth users = user
secrets file = /etc/rsyncd.secrets
hosts allow = 172.26.0.0/255.255.0.0
La autenticación la realizaremos mediante clave SSH, siguiendo los pasos descritos en Servicio Rsync automatizado.
Reiniciaremos el servicio para aplicar los cambios:
root@server-carpet:/ systemctl restart rsync.service
Configuración de autenticación
Generar clave SSH
Por motivos de seguridad no vamos a usar la misma clave SSH. Por motivos intrínsecos a la ejecución del comando (debe ejecutarse de forma automática, sin interacción del usuario) la clave no debe tener contraseña simétrica.
Desde el cliente, vamos a generarla. uando nos pida introducir contraseña, haremos clic en Intro para no fijar ninguna:
user@cliente:~$ ssh-keygen -t rsa
La guardaremos en ~/.ssh/rsync.
Copiar clave pública a servidor
Iniciando en el propio servidor (mediante SSH, por ejemplo), añadimos la clave publica al archivo /home/user/.ssh/authorized_keys. Después de copiarla tendremos, al menos, dos clave:
La clave pública para el inicio SSH “típico”.
La clave pública que utilizaremos para la autenticación contra Rsync.
Probar conexión a carpeta
Para comprobar si funciona Rsync debemos generar algunos archivos y después comprobar si se copian.
user@cliente:~$ sudo rsync -avRh -e "ssh -i /home/user/.ssh/rsync" prueba/ user@172.26.110.201:/rsync/
Tarea cron
Añadiremos la tarea crontab con el siguiente comando:
user@cliente:~$ sudo su #Necesitamos que la tarea la ejecute root
user@cliente:~$ crontab -e
# En el archivo que se nos abre añadimos el siguiente comando:
*/15 * * * * sudo rsync -avRh -e "ssh -i /home/user/.ssh/rsync" prueba/ user@172.26.110.201:/rsync/
Limitar acceso desde IP cliente
Como medida de seguridad adicional, limitaremos el uso de la clave pública. Indicaremos que únicamente se pueda utilizar desde el equipo cliente. Para identificar al equipo usaremos su clave pública.
from="<IP-del-Cliente>" ssh-rsa <Clave-SSH> <Comentario-SSH>