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?

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 .


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.


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 /


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.

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.