Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
configuracion_de_rsync [2010/03/15 12:03]
10.12.12.12
configuracion_de_rsync [2017/03/27 17:44] (actual)
Línea 1: Línea 1:
 ====== Cómo realizar copias de seguridad con rsync ====== ====== Cómo realizar copias de seguridad con rsync ======
  
-[[Enalce original al documento|http://​www.eslomas.com/​index.php/​archives/​2005/​01/​31/​como-realizar-copias-de-seguridad-con-rsync/​]]+[[http://​www.eslomas.com/​index.php/​archives/​2005/​01/​31/​como-realizar-copias-de-seguridad-con-rsync/​|Enlace original al documento]]
  
 Una de las tareas más importantes de un webmaster, y muchas veces olvidada, es la realización de copias de seguridad. Hay multitud de aplicaciones comerciales y open source que nos permiten realizarlas de una forma más o menos potente o sencilla. En este artículo vamos a explicar mediante un ejemplo práctico como obtener una réplica local de la información de un servidor mediante el comando rsync. Para ello antes de nada vamos a dar una breve introducción a este comando y sus características fundamentales,​ las cuales nos permitirán montar el sistema de réplica en muy pocos pasos y de forma sencilla. Dejamos al interés del usuario el ir más allá y montar sistemas más potentes aprovechando todas las posibilidades existentes. Una de las tareas más importantes de un webmaster, y muchas veces olvidada, es la realización de copias de seguridad. Hay multitud de aplicaciones comerciales y open source que nos permiten realizarlas de una forma más o menos potente o sencilla. En este artículo vamos a explicar mediante un ejemplo práctico como obtener una réplica local de la información de un servidor mediante el comando rsync. Para ello antes de nada vamos a dar una breve introducción a este comando y sus características fundamentales,​ las cuales nos permitirán montar el sistema de réplica en muy pocos pasos y de forma sencilla. Dejamos al interés del usuario el ir más allá y montar sistemas más potentes aprovechando todas las posibilidades existentes.
-Introduction ​a rsync+ 
 +===== Introduccion ​a rsync =====
  
 La utilidad rsync, escrita inicialmente por Andrew Tridgell y Paul Mackerras, viene prácticamente con la totalidad de distribuciones Linux y sistemas Unix. En caso de no ser así se dispone del código fuente en rsync.samba.org. La principal utilidad de rsync es la de sincronizar estructuras de árboles de directorios a través de la red, aunque puede ser utilizado perfectamente también dentro de una máquina de forma local. La utilidad rsync, escrita inicialmente por Andrew Tridgell y Paul Mackerras, viene prácticamente con la totalidad de distribuciones Linux y sistemas Unix. En caso de no ser así se dispone del código fuente en rsync.samba.org. La principal utilidad de rsync es la de sincronizar estructuras de árboles de directorios a través de la red, aunque puede ser utilizado perfectamente también dentro de una máquina de forma local.
Línea 13: Línea 14:
  
 Como ya hemos visto la utilización de rsync nos permite realizar transmisiones ecónomicas en cuanto a ancho de banda, debido a su algoritmo basado en las diferencias de los archivos, y en la utilización de la compresión,​ pero ¿qué hay acerca de la seguridad?. El protocolo de auntenticación que se usa está basado en un MD4 de 128 bits. Este sistema se considera suficientemente bueno para cualquier necesidad, aunque para aquellos más paranoicos existe la opción de utilizar rsync sobre ssh, o incluso mezclar la flexibilidad de ejecutar un demonio rsync utilizando ssh como transporte. Hay que tener en cuenta que rsync no realiza ningún tipo de encriptación de la información transmitida,​ únicamente se utiliza en el momento de la autenticación. Como ya hemos visto la utilización de rsync nos permite realizar transmisiones ecónomicas en cuanto a ancho de banda, debido a su algoritmo basado en las diferencias de los archivos, y en la utilización de la compresión,​ pero ¿qué hay acerca de la seguridad?. El protocolo de auntenticación que se usa está basado en un MD4 de 128 bits. Este sistema se considera suficientemente bueno para cualquier necesidad, aunque para aquellos más paranoicos existe la opción de utilizar rsync sobre ssh, o incluso mezclar la flexibilidad de ejecutar un demonio rsync utilizando ssh como transporte. Hay que tener en cuenta que rsync no realiza ningún tipo de encriptación de la información transmitida,​ únicamente se utiliza en el momento de la autenticación.
-Qué es lo que queremos hacer+ 
 +===== Qué es lo que queremos hacer =====
  
 El ejemplo que vamos a desarrollar está basado en la utilización de un servidor remoto que corre un demonio de rsync, que exporta diferentes árboles de directorios,​ llámados módulos. Vamos a utilizar un planteamiento típico utilizando un servidor remoto rsync, pero sin utilizar ssh como transporte, ya que no se considera que la información a transmitir requiera ese nivel de seguridad. Utilizaremos también un equipo local en el que queremos obtener una réplica de lo que hay en los módulos exportados por el servidor de rsync. El ejemplo que vamos a desarrollar está basado en la utilización de un servidor remoto que corre un demonio de rsync, que exporta diferentes árboles de directorios,​ llámados módulos. Vamos a utilizar un planteamiento típico utilizando un servidor remoto rsync, pero sin utilizar ssh como transporte, ya que no se considera que la información a transmitir requiera ese nivel de seguridad. Utilizaremos también un equipo local en el que queremos obtener una réplica de lo que hay en los módulos exportados por el servidor de rsync.
Línea 26: Línea 28:
 Esta es la carpeta del equipo local donde queremos realizar las copias: Esta es la carpeta del equipo local donde queremos realizar las copias:
 /​usr/​local/​backups/​replica_hosting /​usr/​local/​backups/​replica_hosting
-Configuración del servidor+ 
 +===== Configuración del servidor ​=====
  
 Vamos a ejecutar el demonio de rsync a partir del superdemonio xinetd, para lo cual debemos asegurarnos de que está asociado al puerto 873/tcp dentro del archivo /​etc/​services. Para ello hay que comprobar que el archivo contiene un línea como la siguiente: Vamos a ejecutar el demonio de rsync a partir del superdemonio xinetd, para lo cual debemos asegurarnos de que está asociado al puerto 873/tcp dentro del archivo /​etc/​services. Para ello hay que comprobar que el archivo contiene un línea como la siguiente:
Línea 48: Línea 51:
 Para preparar la configuración del servidor debemos crear dos archivos, /​etc/​rsyncd.conf y /​etc/​rsyncd.secrets. El primero de ellos contiene la configuración de los módulos exportados, mientras que el segundo contiene la información de los usuarios que tienen permisos para realizar conexiones. Estos son los contenidos de cada archivo: Para preparar la configuración del servidor debemos crear dos archivos, /​etc/​rsyncd.conf y /​etc/​rsyncd.secrets. El primero de ellos contiene la configuración de los módulos exportados, mientras que el segundo contiene la información de los usuarios que tienen permisos para realizar conexiones. Estos son los contenidos de cada archivo:
  
-/​etc/​rsyncd.conf+**/​etc/​rsyncd.conf**
  
-uid = nobody +  ​uid = nobody 
-gid = nobody +  gid = nobody 
-use chroot = yes +  use chroot = yes 
-max connections = 1 +  max connections = 1 
-log file = /​var/​log/​rsyncd.log +  log file = /​var/​log/​rsyncd.log 
-pid file = /​var/​run/​rsyncd.pid+  pid file = /​var/​run/​rsyncd.pid 
 +  [www] 
 +    path = /www 
 +    comment = datos de www 
 +    use chroot = true 
 +    max connections = 1 
 +    read only = true 
 +    list = false 
 +    uid = nobody 
 +    gid = nobody 
 +    auth users = remote_user 
 +    secrets file = /​etc/​rsyncd.secrets 
 +    strict modes = true 
 +    hosts allow = 111.111.111.111 
 +  [mysql] 
 +    path = /​var/​lib/​mysql 
 +    comment = datos de mysql 
 +    use chroot = true 
 +    max connections = 1 
 +    read only = true 
 +    list = false 
 +    uid = mysql 
 +    gid = mysql 
 +    auth users = remote_user 
 +    secrets file = /​etc/​rsyncd.secrets 
 +    strict modes = true 
 +    hosts allow = 111.111.111.111
  
-[www] +**/​etc/​rsyncd.secrets**
-path = /www +
-comment = datos de www +
-use chroot = true +
-max connections = 1 +
-read only = true +
-list = false +
-uid = nobody +
-gid = nobody +
-auth users = remote_user +
-secrets file = /​etc/​rsyncd.secrets +
-strict modes = true +
-hosts allow = 111.111.111.111+
  
-[mysql] +  ​remote_user:​thepass
-path = /​var/​lib/​mysql +
-comment = datos de mysql +
-use chroot = true +
-max connections = 1 +
-read only = true +
-list = false +
-uid = mysql +
-gid = mysql +
-auth users = remote_user +
-secrets file = /​etc/​rsyncd.secrets +
-strict modes = true +
-hosts allow = 111.111.111.111 +
- +
-/​etc/​rsyncd.secrets +
- +
-remote_user:​thepass+
  
 El archivo rsyncd.conf se puede observar que se compone de una primera parte en la que se configuran parámetros genéricos del servidor, y una segunda parte donde se muestra la configuración exacta de cada módulo exportado. En la configuración se ha puesto por defecto que se use como usuario local nobody, y que se haga bajo un entorno chroot por seguridad. Esto hace que por defecto cuando nos conectemos a un módulo lo hagamos con ese usuario, y no podamos salir de él a otras zonas del servidor. Dentro de cada módulo se indica la carpeta a la que apunta, se dice que únicamente se pueden leer archivos, mediante read only = true, pero no modificarlos ni crear nuevos. Se dice también que si se socilita un listado de módulos al servidor estos estén ocultos, que se utilice como datos de conexión un usuario de nombre remote_user cuyo password está en el archivo /​etc/​rsyncd.secrets,​ y que únicamente se permitan conexiones desde la ip 111.111.111.111 El archivo rsyncd.conf se puede observar que se compone de una primera parte en la que se configuran parámetros genéricos del servidor, y una segunda parte donde se muestra la configuración exacta de cada módulo exportado. En la configuración se ha puesto por defecto que se use como usuario local nobody, y que se haga bajo un entorno chroot por seguridad. Esto hace que por defecto cuando nos conectemos a un módulo lo hagamos con ese usuario, y no podamos salir de él a otras zonas del servidor. Dentro de cada módulo se indica la carpeta a la que apunta, se dice que únicamente se pueden leer archivos, mediante read only = true, pero no modificarlos ni crear nuevos. Se dice también que si se socilita un listado de módulos al servidor estos estén ocultos, que se utilice como datos de conexión un usuario de nombre remote_user cuyo password está en el archivo /​etc/​rsyncd.secrets,​ y que únicamente se permitan conexiones desde la ip 111.111.111.111
Línea 95: Línea 96:
 Estos deberían ser lor permisos para ambos archivos: Estos deberían ser lor permisos para ambos archivos:
  
--rw-r--r-- 1 root root 472 Dec 31 14:01 /​etc/​rsyncd.conf +  ​-rw-r--r-- 1 root root 472 Dec 31 14:01 /​etc/​rsyncd.conf 
--rwx------ 1 root root 21 Dec 31 14:00 /​etc/​rsyncd.secrets+  -rwx------ 1 root root 21 Dec 31 14:00 /​etc/​rsyncd.secrets
  
 Hay multitudes de opciones de configuración que nos permiten configurar el servidor para nuestras necesidades específicas,​ más información en la página de man de rsyncd.conf. Hay multitudes de opciones de configuración que nos permiten configurar el servidor para nuestras necesidades específicas,​ más información en la página de man de rsyncd.conf.
Línea 105: Línea 106:
  
 Ahora ya podemos comenzar a configurar el equipo cliente. Ahora ya podemos comenzar a configurar el equipo cliente.
-Configuración del Cliente+ 
 +===== Configuración del Cliente ​=====
  
 Dentro de la carpeta /​usr/​local/​backups creamos el archivo password.rsync,​ en el que escribimos el password con el que queremos conectarnos al servidor rsync: thepass Dentro de la carpeta /​usr/​local/​backups creamos el archivo password.rsync,​ en el que escribimos el password con el que queremos conectarnos al servidor rsync: thepass