Seguridad SVN + SSH

9

Yo uso snv + ssh con autenticación basada en clave. En este momento, para que cualquiera de mis usuarios de svn acceda al repositorio a través de Subversion, debo configurar los archivos de repos para que puedan leerse y escribirse en el sistema de archivos para esos usuarios.

Quiero evitar que los usuarios puedan eliminar la base de datos de repositorios cuando inician sesión en el servidor a través de ssh, pero aún así puedo pagar y confirmar el código.

¿Pensamientos sobre cómo puedo hacer esto?

Brad Smith
fuente

Respuestas:

4

Para acceder a una URL svn + ssh, el cliente svn inicia una instancia de svnserve usando "ssh -q user @ host svnserve -t" y habla con esa instancia a través de stdin / stdout.

Si sus usuarios necesitan acceso ssh normal, aún puede evitar que accedan al repositorio limitando el acceso a un usuario (chown -R svnserve: svnserve repo; chmod -R g-rwx, o-rwx repo) y reemplazando el comando svnserve por Este programa setuid / setgid svnserve wrapper .

Alex Jasmin
fuente
10

En un entorno de usuario compartido, recomendaría configurar un servidor Subversion real (ya sea a svnservetravés de Apache). En este entorno, los usuarios individuales no necesitan acceso a los archivos del repositorio porque todo el acceso a los archivos se realiza bajo la cuenta de usuario del proceso del servidor.

El libro de Subversion tiene una sección sobre cómo elegir una configuración de servidor que puede ayudar. De esa sección (énfasis mío):

Si tiene una infraestructura existente que se basa en gran medida en las cuentas SSH, y si sus usuarios ya tienen cuentas del sistema en su máquina servidor, tiene sentido implementar una solución svnserve-over-SSH. De lo contrario, no recomendamos ampliamente esta opción al público. En general, se considera más seguro que sus usuarios accedan al repositorio a través de cuentas (imaginarias) administradas por svnserve o Apache, en lugar de por cuentas de sistema completas.

Greg Hewgill
fuente
4

Este sitio tiene algunos buenos trucos: http://svn.apache.org/repos/asf/subversion/trunk/notes/ssh-tricks

Si nada de eso funciona para usted, ¿tal vez una solución podría hacer el truco? Puede hacer una copia de seguridad del repositorio cada vez que alguien comete algo agregando algo como esto a los enlaces de confirmación: sudo rsync -a / my / repo / path / my / closed / path /

Comandante Keen
fuente
2

Veo dos direcciones posibles para atacar este problema:

  • proporciona acceso limitado a shell, por ejemplo, los usuarios solo pueden usar svn con sus cuentas (puede necesitar otra cuenta si el acceso a shell también es necesario para otros fines). He encontrado algunas referencias interesantes buscando en google para svnonly . Nota: no los probé yo mismo.
  • migre a subversion a través de https, agregando certificados de cliente. He visto personas discutiendo esto, pero nunca lo hice yo mismo. Desventaja: requiere la distribución de certificados de cliente además de las claves ssh.
Olaf
fuente
1

Estoy de acuerdo con Greg y Olaf: busca el acceso https. Estoy usando una configuración de este tipo durante bastante tiempo y no veo realmente ningún inconveniente.

obtendrá un beneficio adicional del control de acceso detallado dentro del repositorio, por lo que puede hacer que algunas partes sean de solo lectura y otras completamente inaccesibles para los usuarios seleccionados.

pQd
fuente