Backup Remoto online automatico con rdiff-backup

Si se recordaran, ya anteriormente habiamos platicado de como hacer sesion o login via ssh linux servers. En esta oportunidad vamos a utilizar rdiff como una buena opcion libre de backups remotos a la herramienta de nti backup. Hablando de windows vs linux, yo me quedo con el ultimo y por eso en mi hosting linux todos mis live backups van desde un linux virtual server hasta un backup hosting dedicado.

Para nuestro ejemplo tendremos un linux host dedicado para el almacenamiento y los servicios de back up online, llamado ibackup. Del otro lado y en mi caso un servidor linux (Debian o Ubuntu) el cual llamaremos cliente.  Anteriormente utilizaba rsync backup, pero esta solucion no necesita de ningun hardware especial o backup tape.

Como instalar rdiff-backup

Los programas ubuntu o software para sistemas basados en Debian se instalan facilmente, solo tecleamos:

:~# apt-get install rdiff-backup

En otras distribuciones linux, como fedora o redhat yum install rdiff-backup.

Crear el usuario para linux backup en ibackup

En el servidor de almacenamiento de los backups online creamos el usuario y grupos llamados rdiff-backup. Este usuario es el que ejecuta el backup on line, y no root, mas que todo por seguridad.

:~# groupadd -g 3500 rdiff-backup
:~# useradd -u 3500 -s /bin/false -d /backup -m -c "rdiff-backup" -g rdiff-backup rdiff-backup

En la segunda linea creamos el usario sin login al sistema, el gid y uid seran 3500 con el directorio /backup como home. Ahora es necesario convertirnos en el usario rdiff, para seguir ejecutando los comandos requeridos. Por lo tanto, tecleamos:

:~# su -m rdiff-backup

Crear las llaves en ibackup

Ahora nos toca crear las llaves publicas para la autenticacion de nuestro ssh hosting.

:~# cd /backup
:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/backup/.ssh/id_rsa): SOLO TECLEAR ENTER
Enter passphrase (empty for no passphrase): SOLO TECLEAR ENTER
Enter same passphrase again:  SOLO TECLEAR ENTER
Your identification has been saved in /backup/.ssh/id_rsa.
Your public key has been saved in /backup/.ssh/id_rsa.pub.
The key fingerprint is:
e2:9b:c4:29:a4:db:35:b1:c6:ca:f8:8d:06:c3:75:58 rdiff-backup@ms backup
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|      E          |
|     o           |
|    o .          |
| . ...o S        |
|  +o + =         |
|  .o. @          |
|   =.O +         |
|  oo* +          |
+-----------------+

Les recuerdo no ingresar ninguna clave ni nada, vean el SOLO TECLEAR ENTER!!! La idea es que las passphase se vayan en blanco para conectar online backup free, sin necesidad de contraseñas.

Pueden revisar que los archivos  /backup/.ssh/id_rsa y /backup/.ssh/id_rsa.pub existan.

Ahora bien, creamos el archivo /backup/.ssh/config, conteniendo lo siguiente:

host internet backup
hostname cliente.guatewireless.org
user root
identityfile /backup/.ssh/id_rsa
compression yes
cipher blowfish
protocol 2

En el parametro de host  podemso poner lo que se quiera, ej: virtual server backup. Personalmente yo escribo la ip del cliente, digamos 10.10.250.9. Para llevar un mejor control y no depender del DNS.

Ahora cambiamos los permisos de ese archivo tecleando;

:~# chmod -R go-rwx /backup/.ssh

Copiar las llaves al server linux remoto

Para que ambos servidores se puedan platicar y intercambiar informacion, necesitamos compartir la llave en el debian server llamdo cliente, de la siguiente manera:

:~# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.250.9

Lo cual les pedira el password del servidor remoto, ingresenlo. Ahora en el servidor cliente ingresan y verifican que el archivo .ssh/authorized_keys contenga la llave que acabamos de copiar.

Configurando el servidor cliente

Dentro del cliente de backup verificamos el archivo /root/.ssh/authorized_keys,su contenido deberia ser parecido a:

ssh-rsa AAAAB3Nza.../MwZxe82Mw== rdiff-backup@ibackup

Justo antes del ssh-rsa agregamos lo siguiente en la misma linea, y tan solo dejando un espacio de por medio entre el no-pty y el ssh-rsa :

command="rdiff-backup --server --restrict-read-only /",from="ibackup.guatewireless.org",no-port-forwarding,no-X11-forwarding,no-pty
  • La instruccion de -restrict-read-only / es para que el usuario tenga solo permisos de lectura.
  • Para el parametro que indica desde donde se conecta o cual es el disk backup  from=”ibackup.guatewireless.org” yo utilizo la IP.

Ahora ejecutamos:

:~# chmod -R go-rwx /root/.ssh

Y buscamos si el archivo /etc/ssh/sshd_config contiene lo siguiente:

RSAAuthentication yes
PubkeyAuthentication yes

Regularmente las dos variables anteriores ya estan en la mitad del archivo, de lo contrario las agregamos y reiniciamos el demonio de open ssh;

:~# /etc/init.d/ssh restart

Realizando la prueba de conexion sin contraseña

De regreso en el servidor central de backups, con el usuario rdiff-backup, probamos la conexion:

:~# cd /backup
:~# rdiff-backup root@10.10.250.9::/home sql backup

Lo que esta haciendo el comando es conectarse sin necesidad de interaccion humana y copiando el contenido del directorio /home en el servidor cliente (10.10.250.9) y escribiendo localmente en el directorio sql backup. Si les pidio contraseña, algo hicieron mal y tendran que evaluar la configuracion.

Programar la tarea de backups automatica

Si hemos llegado hasta aca, es hora de automatizar las copias de seguridad agregando el comando de la seccion anterior a un cron. Para ver como programar un trabajo en crontab, vean aqui.

Terminos de busqueda

  • rdiff-backup
  • como hacer un backup remoto desde debian
  • Comentario, Preguntas o agradecimientos?

    %d bloggers like this: