Estoy tratando de configurar un servidor de respaldo. Quiero hacer chroot a cada usuario (cliente) en su directorio de inicio, y solo permitirle usar sftp y rsync .
Rápidamente descubrí que no era el único que intentaba hacer algo como esto, y encontré esta guía y la seguí. Así que ahora tengo usuarios chroot'd con sftp solamente.
Luego descubrí que rsync necesita ssh para reproducirse en la otra máquina, y que sftp no es suficiente. Darle a cada usuario un inicio de sesión ssh es algo que quería evitar en primer lugar.
¿Alguien puede pensar en algunas posibles soluciones?
Gracias,
marca
Respuestas:
Una solución sftp también requeriría un inicio de sesión ssh para todos, por lo que realmente no ha perdido nada aquí. Otorgar acceso ssh no implica necesariamente un acceso completo al shell, por ejemplo, esto muestra cómo usar el
authorized_keys
archivo ssh para permitir la copia de seguridad a través de rsync mientras limita los comandos disponibles solo para el receptor rsync.De hecho, si opta por la autenticación basada en clave, en lugar de la autenticación de contraseña (que debería), podría ejecutar todo bajo una cuenta de usuario en lugar de requerir varias cuentas. Usaría teclas para identificar usuarios remotos y dirigir el receptor rsync a un directorio particular.
Algo como esto, en su
authorized_keys
archivo:Alguien que use la
user1
clave privada hará una copia de seguridad/tmp/user1
, y alguien que use lauser2
clave privada hará una copia de seguridad/tmp/user2
. Etcétera...fuente
Ejecute lo habitual
rsync
desde el cliente al servidor remoto, pero agregue un interruptor detallado adicional:SSH -v
y luego grep paraSending command
. Verá el comando exacto que el cliente está enviando al servidor remoto:En mi caso, fue
Agregue esto
command="..."
al/home/USER/.ssh/authorized_keys
archivo del servidor remoto como se mencionó en @larsks. Agregue configuraciones de seguridad adicionales, si es necesario:no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server
Todos juntos:
(Tomado de muy buen tutorial http://en.positon.org/post/Rsync-command-restriction-over-SSH )
fuente
Deberá proporcionar algún tipo de acceso de shell para poder usar rsync a menos que se conecte directamente al servidor rsync; el puerto predeterminado es 873 (TCP).
Desde la página de manual de rysnc :
Para proporcionar acceso de shell limitado, considere la siguiente guía . (Nota: el enlace original está muerto) Resumen:
O eche un vistazo al uso de rssh (hay una guía para configurar rssh aquí ):
fuente
rrsync
lugar de rssh, incluido en el paquete oficial rsync. Ver derek.simkowiak.net/backing-up-multiple-servers-with-rsnapshotpuedes escribir un shell que envuelva rsync.
mira la idea general aquí: https://sixohthree.com/1458/locking-down-rsync-using-ssh
en su shell de envoltura puede hacer lo que quiera y quizás desarmar al usuario.
En mi caso, necesitaba activar la cuenta virtual con el mismo usuario * nix. Logré hacerlo usando este tipo de shell más muchas líneas en el archivo autorizado_claves. No he desarmado al usuario, pero he agregado un nivel de carpeta de usuario en el comando del servidor rsync.
mira al usuario del proceso de manera diferente usando la clave ssh
fuente
SFTP con capacidades Rsync, sin shell
Puede usar LFTP + SFTP en un entorno chroot y lograr los mismos resultados que con rsync, sin proporcionar al usuario un shell o realizar personalizaciones pesadas en ssh con envoltorios.
Esto es más seguro y puede ser sustancialmente más rápido.
fuente
Rsync en chroot es complicado :) Tendrá que configurar un entorno mínimo para / bin / sh y / usr / bin / rsync dentro del directorio chrooteado (lado del destino) para que funcione.
Vea el artículo completo aquí, la configuración del entorno rsync es al final
https://medium.com/@deltazero/linux-remote-backup-rsync-chroot-d797ba6babe5
fuente