Las copias de seguridad remota permiten proteger los datos de una empresa con una serie de importantes ventajas frente a los sistemas tradicionales (disquetes, CDs, discos duros…). Precisamente la ubicación remota de nuestra copia de seguridad la protege ante eventos sucedidos dentro de las instalaciones de la empresa, como pueden ser hurtos, incendios, inundaciones, etc. Además evitamos la necesidad de disponer de espacio para el almacenamiento de dichos soportes. Este sistema nos permite también la escalabilidad de manera más sencilla a medida que vaya creciendo la empresa. Las copias de seguridad remotas están encriptadas, por lo que solo el personal autorizado podrá acceder a las mismas y además podrá hacerse de manera inmediata.
Configuración para la realización de copias de seguridad en ubicación remota.
Consideraciones a tener en cuenta:
· rsnapshot requiere que la copia se realice en un dispositivo local.
· queremos securizar el proceso, evitando acceso de root desde el exterior a nuestros servidores con claves privadas.
Desafortunadamente, rsnapshot no nos permite almacenar las copias de seguridad en un medio remoto (que sería realmente la mejor solución desde el punto de vista de la seguridad). Por ello, la configuración requiere que el servidor de copias tenga acceso al servidor de datos.
Este sistema realiza una copia de seguridad desde un almacenamiento remoto. Configuramos el acceso desde el servidor de copias a un emplazamiento remoto. Para ello, habilitamos el acceso ssh sin contraseña con llaves ssl desde el servidor de copias, instalamos sshfs y definimos el punto de montaje para emplear rsnapshot.
Variables a tener en cuenta:
SERVIDOR DE COPIAS DE SEGURIDAD (backup.server). Este equipo ejecuta rsnapshot. Se encuentra en la red local.
SERVIDOR DE DATOS (data.server). Este equipo NO ejecuta rsnapshot. Es el servidor cuyos datos queremos guardar.
Asumimos que ya contamos con un sistema de copias de segurdad con rsnapshot funcionando correctamente en backup.server. Para instrucciones sobre como montar el servidor de Copias de Seguridad local con rsnapshot ver el manual correspondiente.
1. Conexión segura sin contraseñas
En data.server creamos un usuario backupuser para ejecutar el proceso rsync posteriormente en nuestro servidor de datos:
$ adduser backupuser
En backup.server generamos las llaves ssh desde el usuario root (es el usuario que corre rsnapshot):
$ su root
$ ssh-keygen -t rsa
Agregamos la clave pública de root@backup.server al fichero .ssh/authorized_keys del usuario backupuser@data.server root@backup.server
$ cat /root/.ssh/id_rsa.pub | ssh backupuser@sdata.server ‘cat > .ssh/authorized_keys’
Comprobamos que podemos acceder desde root@backup.server a backupuser@data.server sin contraseña.
root@backup.server$ ssh backupuser@data.server
root@projects:~# ssh backupuser@guacia.dyndns.info
Linux rigel 4.9.0-14-amd64 #1 SMP Debian 4.9.246-2 (2020-12-17) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
Last login: Sat Feb 20 09:26:15 2021 from 51.91.142.146
backupuser@rigel:~$
Editamos /root/.ssh/config en backup.server para que siempre conecte a storage.server como usuario backupuser:
##### /root/.ssh/config ###########
Host storage.server
User backupuser
#############################
Comprobamos que se realiza la conexión con el usuario sin tener que especificarlo:
root@backup.server$ ssh servidor.almacenamiento
root@projects:~# ssh guacia.dyndns.info
Linux rigel 4.9.0-14-amd64 #1 SMP Debian 4.9.246-2 (2020-12-17) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
Last login: Sat Feb 20 09:26:33 2021 from 51.91.142.146
backupuser@rigel:~$
2. Ejecución de copias de seguridad
Configuramos rsnapshot en backup.server:
root@storage.server$ mkdir /bak/snapshot.cliente
Modificamos los permisos del directorio:
root@storage.server$ chmod 0700 /bak/snapshot.cliente
root@storage.server$ chown -R backupuser /bak/snapshot.cliente
Creamos el punto de montaje para el almacenamiento remoto:
root@backup.server$ mkdir /bak.remote
Montamos el recurso remoto en el servidor de copias en el punto de montaje /bak.remote/ usando sshfs:
root@backup.server$ sshfs -o allow_other,default_permissions root@storage.server:/bak /bak.remote/
Creamos una instancia de rsnapshot para realizar las copias de seguridad remotas:
root@backup.server$ cp /etc/rsnapshot.conf /etc/rsnapshot_remote.conf
Editamos el fichero e indicamos el almacenamiento remoto para la realización de las copias.
config_version 1.2
snapshot_root /bak.remote/snapshots
#no_create_root 1
cmd_cp /bin/cp
cmd_rm /bin/rm
cmd_rsync /usr/bin/rsync
#cmd_ssh /usr/bin/ssh
cmd_logger /usr/bin/logger
#cmd_du /usr/bin/du
#cmd_rsnapshot_diff /usr/bin/rsnapshot-diff
#cmd_preexec /path/to/preexec/script
#cmd_postexec /path/to/postexec/script
[…]
Realizamos una prueba, primero usamos ‘-t’ para ver los comandos que se ejecutarán:
root@backup.server$ rsnapshot -c /etc/rsnapshot_remote.conf -t daily
mkdir -m 0700 -p /bak.remote/snapshots/
mkdir -m 0755 -p /bak.remote/snapshots/daily.0/
/usr/bin/rsync -a –delete –numeric-ids –relative –delete-excluded \
/home/ /bak.remote/snapshots/daily.0/localhost/
mkdir -m 0755 -p /bak.remote/snapshots/daily.0/
/usr/bin/rsync -a –delete –numeric-ids –relative –delete-excluded /etc/ \
/bak.remote/snapshots/daily.0/localhost/
touch /bak.remote/snapshots/daily.0/
Realizamos la primera copia
rsnapshot -c /etc/rsnapshot_remote.conf daily
Comprobamos en storage.server que se haya realizado la copia correctamente.
3. Automatización de proceso de realización de copia de seguridad en almacenamiento remoto.
Usamos cron para realizar las tareas de automatización.
1. montar el recurso de almacenamiento remoto
2. realizar la copia de seguridad correspondiente.
3. desmontar el recurso de almacenamiento remoto.