SVN + SSH-Sicherheit

9

Ich benutze snv + ssh mit schlüsselbasierter Authentifizierung. Damit einer meiner SVN-Benutzer über Subversion auf das Repository zugreifen kann, muss ich festlegen, dass die Repo-Dateien für diese Benutzer im Dateisystem lesbar und beschreibbar sind.

Ich möchte verhindern, dass die Benutzer die Repo-Datenbank löschen können, wenn sie über ssh am Server angemeldet sind, aber dennoch Code auschecken und festschreiben können.

Gedanken darüber, wie ich das machen kann?

Brad Smith
quelle

Antworten:

4

Um auf eine svn + ssh-URL zuzugreifen, startet der svn-Client eine svnserve-Instanz mit "ssh -q user @ host svnserve -t" und kommuniziert mit dieser Instanz über stdin / stdout.

Wenn Ihre Benutzer normalen SSH-Zugriff benötigen, können Sie sie dennoch am Zugriff auf das Repository hindern, indem Sie den Zugriff auf einen Benutzer beschränken (chown -R svnserve: svnserve repo; chmod -R g-rwx, o-rwx repo) und den Befehl svnserve durch ersetzen Dieses Wrapper-Programm setuid / setgid svnserve .

Alex Jasmin
quelle
10

In einer gemeinsam genutzten Benutzerumgebung würde ich empfehlen, einen echten Subversion-Server einzurichten (entweder svnserveoder über Apache). In dieser Umgebung benötigen einzelne Benutzer überhaupt keinen Zugriff auf die Repository-Dateien, da der gesamte Dateizugriff über das Benutzerkonto des Serverprozesses erfolgt.

Das Subversion-Buch enthält einen Abschnitt zur Auswahl einer Serverkonfiguration, der hilfreich sein kann. Aus diesem Abschnitt (Schwerpunkt Mine):

Wenn Sie über eine vorhandene Infrastruktur verfügen, die stark auf SSH-Konten basiert, und wenn Ihre Benutzer bereits Systemkonten auf Ihrem Server haben, ist es sinnvoll, eine svnserve-over-SSH-Lösung bereitzustellen. Andernfalls empfehlen wir diese Option der Öffentlichkeit nicht allgemein. Es wird allgemein als sicherer angesehen, wenn Ihre Benutzer über (imaginäre) Konten, die von svnserve oder Apache verwaltet werden, auf das Repository zugreifen, anstatt über vollständige Systemkonten.

Greg Hewgill
quelle
4

Diese Seite hat einige nette Tricks: http://svn.apache.org/repos/asf/subversion/trunk/notes/ssh-tricks

Wenn nichts davon für Sie funktioniert, könnte vielleicht eine Problemumgehung den Trick tun? Sie können jedes Mal eine Sicherungskopie des Repositorys erstellen, wenn jemand etwas festschreibt, indem Sie den Festschreibungs-Hooks Folgendes hinzufügen: sudo rsync -a / my / repo / path / my / closed / path /

Commander Keen
quelle
2

Ich sehe zwei mögliche Richtungen, um dieses Problem anzugreifen:

  • Bieten Sie eingeschränkten Shell-Zugriff an, z. B. können die Benutzer svn nur mit ihren Konten verwenden (benötigen möglicherweise ein anderes Konto, wenn der Shell-Zugriff auch für andere Zwecke erforderlich ist). Ich habe einige interessante Referenzen gefunden, die nur für svnon googeln . Hinweis: Ich habe sie nicht selbst ausprobiert.
  • Migrieren Sie über https zur Subversion und fügen Sie Client-Zertifikate hinzu. Ich habe Leute gesehen, die darüber diskutierten, aber ich habe es nie selbst getan. Nachteil: Erfordert die Verteilung von Client-Zertifikaten zusätzlich zu den SSH-Schlüsseln.
Olaf
quelle
1

Ich stimme Greg und Olaf zu - gehen Sie für https-Zugriff. Ich benutze ein solches Setup seit einiger Zeit und sehe keine wirklichen Nachteile.

Sie profitieren zusätzlich von einer detaillierten Zugriffssteuerung im Repository, sodass Sie einige Teile davon schreibgeschützt und andere für ausgewählte Benutzer vollständig unzugänglich machen können.

pQd
quelle