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

En el fichero /etc/ssh/sshd_config habilitar acceso limitado a root:
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