Backups de hosts (rsnapshots)
Objetivo
Mediante el host backups se hacen copias rotativas de datos de otros hosts
De dispositivos
Este host no es accesible desde Internet.
Este servicio se mantiene en su propio host, con acceso muy limitado, ya que desde aquí se accede como root a los hosts a respaldar
Las copias de seguridad pueden realizarse en los dos sentidos:
- Que los hosts dejen sus datos en el servidor de backups.
- El móvil, que a través del servidor nas-internet, dejara sus copias de seguridad en el directorio gestionado por backups.
- Máquinas windows, que utilizan samba en nas para acceder a un espacio de backup
- Que el servidor de backups absorba los datos de los hosts.
- Para los hosts que ya tienen un servicio ssh
- Todos los linux van por esta via.
- Así se centralizan las políticas de respaldo
En líneas generales, las técnicas usadas son:
- Rsnapshot a traves de ssl
- Los hosts no conectados permanentemente, acceden mediante srv-internet a su espacio de backup.
TODO:Actualmente hay configurado un rsync escuchando para las copias de windows. Estos deben usar nas (samba).
Tiene montado montado el directorio Copias de seguridad de pool_nocrit en /mnt/backups/
Los hosts a respaldar que puedan ejecutar un servicio ssh, usarán el método Estrategia general ssh+rsnapshot
El resto de hosts (Windows, móbiles, conexiones intermitentes) utilizarán:
- Los servicios de nas (samba, rsync, etc.)
- Los servicios de nas-internet (vsftpd, etc.)
Estrategias de copia de seguridad
Estrategia general ssh+rsnapshot
El container backups se encarga, mediante rsnapshot como root a través de ssh, de absorber los datos del resto de máquinas.
Cada host a respaldar debe tener instalado rsync, no necesariamente como daemon.
La configuración de la copia de seguridad por host se encuentra en /etc/rsnapshot.[host].conf en backups.lechuga.eu
Cada host a respaldar ha de tener habilitada una clave publica en la cuenta root, la equivalente privada está en /etc/rsync_remotos en el host backups.lechuga.eu
Procedimiento de backup
El host backups dispara, mediante scripts en /etc/perdiodic/... el script /usr/local/bin/rsnapshots:
- Para cada host configurado dentro del propio script, ejecuta el comando
rsnapshot -c /etc/rsnapshot.[nombre host].conf - Deposita el backup en /mnt/backups/[nombre de host]
Se configura el rsnapshot para que no atraviese fronteras de sistemas de archivo.
Se hace un snapshot diario y semanal.
Configuración en backups para un nuevo host a respaldar
Averiguar por qué el host entryp tenia problemas para usar el key ed25519, y al cambiar a rsa, ha funcionado sin problemas
En el host 'backups'
Generar una pareja público-privada sin clave para root en [nuevoHost].
ssh-keygen -t rsa -f /etc/rsync_remotos/id_rsa_rsync_[nuevoHost]
La parte pública (fichero .pub con "ssh-ed25519" ...) ha de ir a [nuevoHost]:/root/.ssh/authorized_keys (usar configpush y configpull)
Generar un directorio nuevo en /mnt/backups/[nuevoHost] con permisos igual al resto.
Generara un nuevo /etc/rsnapshot.[nuevoHost].conf partiendo de otro existente.
Parámetros relevantes a observar:
lockfile /var/run/rsnapshot.[nuevoHost].pid snapshot_root /mnt/backups/minecraft/ no_create_root 1 ssh_args -i /etc/rsync_remotos/id_rsa_rsync_minecraft one_fs 1 backup root@[nuevoHost].lechuga.eu:/ localhost/
Modificar el script /usr/local/bin/rsnapshots para recoger [nuevoHost]
Configuración del sshd en los hosts a respaldar
Instalar el paquete rsync sin configuración adicional.
Preparar rrsync (a mano si es Alpine, donde hay que añadir el intérprete Perl):
gunzip /usr/share/doc/rsync/scripts/rrsync.gz -c > /usr/local/bin/rrsync chmod +x /usr/local/bin/rrsync
En el fichero /root/.ssh/authorized_keys hay que habilitar una clave pública de acceso con el siguiente prefijo:command="/usr/local/bin/rrsync -ro /",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa [...] rsyncBackups
PermitRootLogin forced-commands-only AllowUsers root [otros usuarios]
Reiniciar el servicio sshd.
service sshd restart
Comprovar que aún conservamos acceso al sshd.
Habilitar las medidas de seguridad habituales para el servidor ssh.
Reingeneria de backups (inversión de rsnapshot)
Hacer que rsnapshot se ejecute en el host que quiere hacer copia y utilice backups2 como proveedor de espacio de copia.
No lo hacemos, ya que seria más vulnerable al ransomware, al estar todos los snapshot accesibles por el host a respaldar