Necesito enviar archivos de un grupo de servidores a un servidor remoto. Mi plan era usar rsync a través de SSH, ya que cumple con mi requisito de una conexión segura y la capacidad de eliminar de la fuente después de una transferencia exitosa. También puedo restringir el firewall para permitir solo IP en las que confío en el puerto 22.
Si configuro un trabajo cron para transferir estos archivos usando rsync a través de SSH, supongo que necesitaría configurar claves SSH para comunicarme. Sin embargo, ¿cuál es el riesgo de seguridad de almacenar claves públicas en un montón de servidores? ¿Es mejor crear claves individuales por servidor? Esta cuenta solo se usará para transferir archivos.
Edición para expandir en mi red.
Tengo varios servidores alojados por una empresa de alojamiento de terceros que tienen IP públicas. Mi red doméstica tiene una IP estática y los servidores se encuentran detrás de un enrutador NAT. Así que no estoy seguro de cómo puedo extraer datos en el servidor central de los dispositivos detrás de NAT.
Podría crear un servidor central detrás de NAT que recopile todo y abra un puerto hacia adelante. Con un cortafuegos que restringe el puerto 22 y la IP estática del servidor de la base de datos, supongo que manejaría cualquier posible violación de seguridad.
Respuestas:
fuente
Agregaré que cuando use rsync sobre ssh, siempre es una buena idea restringir qué comando se puede ejecutar con una clave correspondiente: incluso si la clave privada se roba en el servidor central, solo este comando se puede ejecutar en el grupo de otros servidores .
Puede hacer esto con la opción "comando = script_personalizado" en el archivo "claves_autorizadas".
Simplemente use el script "rrsync" como el "comando de restricción" que hace un trabajo perfecto. (/usr/share/doc/rsync/scripts/rrsync.gz en distribuciones similares a debian)
Más detalles aquí:
http://www.guyrutenberg.com/2014/01/14/restricting-ssh-access-to-rsync/
https://www.v13.gr/blog/?p=216
fuente