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 [email protected]
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 [email protected]::/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.