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
$