Creative Commons License
Excepto donde se indique otra cosa, todo el contenido de este lugar está bajo una licencia de Creative Commons.
Taquiones > sysadmin > rsync como servidor

rsync como servidor

Estas notas describen como poner en marcha un servicio de sincronización de archivos empleando el programa rsync.

Configuración

Para que funcione como un programa demonio independiente en Debian es necesario activarlo modificando el archivo /etc/default/rsync y cambiando el valor de esta directiva

RSYNC_ENABLE=true

mientras que si preferimos que arranque cada vez que detecta una conexión, modificaremos la configuración de inetd con algo como

rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon

ó si usamos xinetd con esto otro:

service rsync
{
    disable         = no
    socket_type     = stream
    wait            = no
    user            = root
    server          = /usr/bin/rsync
    server_args     = --daemon
    log_on_failure  += USERID
}

además de darle de alta en los servicios del sistema:

rsync           873/tcp

Pero tal y como recomiendan en la documentación es preferible usarlo como demonio; consume muy poco en espera y es posible emplear características avanzadas como el cacheado, aunque a día de hoy no está en versiones estables.

El archivo de configuración que yo empleo para crear repositorios con cierta seguridad es éste:

    1 #
    2 #       Configuracion del demonio rsync
    3 #
    4 
    5 #       Opciones globales
    6 use chroot      = yes
    7 syslog facility = syslog
    8 pid file        = /var/run/rsyncd.pid
    9 
   10 #       Seguridad
   11 secrets file    = /etc/rsyncd.secrets
   12 strict modes    = yes
   13 hosts allow     = 192.168.0.0/24
   14 
   15 #
   16 #       Módulos
   17 #
   18 
   19 [mirrors]
   20         path            = /srv/mirrors
   21         comment         = Copias manuales por host
   22         read only       = no
   23         auth users      = victor, angel
   24         uid             = root
   25         gid             = root
   26 
   27 [postgres]
   28         path            = /data/backups/pgdump
   29         comment         = Copia de los volcados PostgreSQL
   30         read only       = no
   31         uid             = bacula
   32         gid             = bacula
   33         auth users      = bacula

pero tengo que advertir que está limitado a la red interna, sólo permite accesos a un grupo de usuarios y efectúa un cambio de directorio raíz chroot tras la conexión; vamos, que como ejemplo genérico quizás no sea de mucha utilidad.

Módulos

Un servidor rsync se presenta ante los clientes como un grupo de módulos; en principio todos pueden ser visibles, si las autorizaciones no son globales, y después se puede afinar cada uno para tener diferentes accesos.

Cada uno de los módulos se define con un nombre encerrado entre corchetes, seguido de varias directivas. Las más importantes son la ruta donde comienza el módulo (path), la descripción (comments) y los permisos de acceso (uid,gid, read only, ...).

Seguridad

El problema de rsync es que las conexiones no están cifradas (además de el historial de vulnerabilidades), por lo que si lo abrimos al exterior tenemos que ser conscientes de ello e intentar evitarlo empleando túneles y/ó ssh.

La configuración expuesta también hace referencia a un archivo de contraseñas, que puede tener el siguiente aspecto:

victor:XXXXXXX
angel:XXXXXXX
bacula:XXXXXX

y permisos de acceso restrictivos

-rw------- 1 root root 48 2008-11-17 12:16 rsyncd.secrets

Uso del servidor

El acceso a un servidor rsync bien como origen de la sincronización, bien como destino, bien como ambos, se realiza con una síntaxis especial.

[usuario@]servidor::modulo[/ruta_dentro_del_modulo]

El primer parámetro es el usuario con el que se desea contactar, y para el que pedirá contraseña el servidor; si se omite rsync empleará el nombre del usuario que le invoca.

Si necesitamos que no se solicite una contraseña podemos emplear el parámetro --password-file junto a un archivo que contiene, en una única línea, la contraseña de acceso.

$ rsync -av --password-file passwd.txt victor@falcata::backups/data .

Para ver los módulos que ofrece un servidor rsync, y/ó los archivos que contiene cada uno, se debe emplear el parámetro -L sin especificar destino alguno.

$ rsync -L maginot::
mirrors         Copias manuales por host
postgres        Copia de los volcados PostgreSQL
$

aunque si están protegidos al intentar conectarnos pedirá la contraseña:

$ rsync -L maginot::mirrors
Password:
drwxrwxr-x        4096 2008/11/15 10:43:26 .
drwxrwxr-x        4096 2008/11/15 10:43:57 alejandria
drwxrwxr-x        4096 2008/11/15 10:33:58 budapest
drwxrwxr-x        4096 2008/11/15 10:33:58 cracovia
drwxrwxr-x        4096 2008/11/15 10:33:58 helena
drwxrwxr-x        4096 2008/11/15 10:33:58 sarajevo
$