Sécurité SVN + SSH

9

J'utilise snv + ssh avec une authentification basée sur les clés. À l'heure actuelle, pour que l'un de mes utilisateurs svn accède au référentiel via Subversion, je dois définir les fichiers repo pour qu'ils soient lisibles et inscriptibles sur le système de fichiers pour ces utilisateurs.

Je veux empêcher les utilisateurs de pouvoir supprimer la base de données repo lorsqu'ils sont connectés au serveur via ssh, tout en étant en mesure de retirer et de valider le code.

Réflexions sur la façon dont je peux faire cela?

Brad Smith
la source

Réponses:

4

Pour accéder à une URL svn + ssh, le client svn lance une instance svnserve à l'aide de "ssh -q user @ host svnserve -t" et communique avec cette instance via stdin / stdout.

Si vos utilisateurs ont besoin d'un accès ssh normal, vous pouvez toujours les empêcher d'accéder au référentiel en limitant l'accès à un utilisateur (chown -R svnserve: svnserve repo; chmod -R g-rwx, o-rwx repo) et en remplaçant la commande svnserve par ce programme wrapper setuid / setgid svnserve .

Alex Jasmin
la source
10

Dans un environnement utilisateur partagé, je recommanderais de configurer un vrai serveur Subversion (soit svnservevia Apache). Dans cet environnement, les utilisateurs individuels n'ont pas du tout besoin d'accéder aux fichiers du référentiel car tous les accès aux fichiers se font sous le compte utilisateur du processus serveur.

Le livre Subversion contient une section sur le choix d'une configuration de serveur qui peut vous aider. De cette section (soulignement le mien):

Si vous disposez d'une infrastructure existante fortement basée sur des comptes SSH, et si vos utilisateurs ont déjà des comptes système sur votre machine serveur, il est judicieux de déployer une solution svnserve-over-SSH. Sinon, nous ne recommandons pas largement cette option au public. Il est généralement considéré plus sûr que vos utilisateurs accèdent au référentiel via des comptes (imaginaires) gérés par svnserve ou Apache, plutôt que par des comptes système complets.

Greg Hewgill
la source
4

Ce site a de belles astuces: http://svn.apache.org/repos/asf/subversion/trunk/notes/ssh-tricks

Si rien de tout cela ne fonctionne pour vous, peut-être qu'une solution de contournement pourrait faire l'affaire? Vous pouvez effectuer une sauvegarde du référentiel chaque fois que quelqu'un valide quelque chose en ajoutant quelque chose comme ceci aux hooks de validation: sudo rsync -a / my / repo / path / my / closed / path /

Commandant Keen
la source
2

Je vois deux directions possibles pour attaquer ce problème:

  • fournir un accès shell limité, par exemple, les utilisateurs ne peuvent utiliser svn qu'avec leurs comptes (peuvent avoir besoin d'un autre compte si l'accès shell est également requis à d'autres fins) - J'ai trouvé quelques références intéressantes googler pour svnonly . Remarque: ne les ai pas essayés moi-même.
  • migrez vers subversion via https, en ajoutant des certificats clients. J'ai vu des gens en discuter, mais je ne l'ai jamais fait moi-même. Inconvénient: nécessite la distribution de certificats clients en plus des clés ssh.
Olaf
la source
1

je suis d'accord avec Greg et Olaf - optez pour l'accès https. J'utilise une telle configuration depuis un certain temps et je n'en vois vraiment aucun inconvénient.

vous bénéficierez d'un contrôle d'accès plus fin dans le référentiel - vous pourrez donc en rendre certaines parties en lecture seule et certaines complètement inaccessibles pour les utilisateurs sélectionnés.

pQd
la source