Wo soll das zentrale Quell-Repository gepflegt werden?


10

Was ist die branchenweit bewährte Methode zur Sicherung des Zugriffs auf den Quellcode? Ich denke, dass nur SSL-Verbindungen über Apache zu unserem Server an einem dunklen Port zugelassen werden, der mit nichts anderem in Konflikt steht. Was mich stört, ist das Speichern von Quellcode auf einem öffentlich zugänglichen Server, dh nicht nur über ein LAN. Darüber hinaus hat dieser Server mehrere Verwendungszwecke. Apache stellt bereits einige andere interne Unternehmenswebsites bereit. Ich möchte, dass jeder von überall (zu Hause, am Flughafen usw.) auf den Quellcode zugreifen kann, solange er über die richtigen Anmeldeinformationen verfügt. Vorschläge?

Antworten:


13

Wenn Sie befürchten, dass es sich auf einem öffentlich zugänglichen Server befindet, aber von überall aus darauf zugreifen möchten, sollten Sie in Betracht ziehen, dass Ihre Entwickler ein clientbasiertes VPN verwenden, um sich remote bei Ihrem Netzwerk anzumelden und auf einen internen Versionsverwaltungsserver zuzugreifen.


1
Können Sie Ihre Argumentation erklären, warum Sie glauben, dass ein VPN sicherer ist als ein SSL / TLS-basierter Server, da beide "öffentlich" sein müssen? VPNs verwenden eine vertraute Verschlüsselung für SSL / TLS. Wenn Sie also das VPN hacken könnten, bekommen Sie alles.
Matt

1
@Matt Wenn es keinen Grund für ihn gibt, sein Repository in einem öffentlichen Segment zu haben, warum sollte er es dann dort ablegen? Darüber hinaus kann ein VPN andere Vorteile für seine Entwickler haben. Sie werden auch feststellen, dass ich nirgendwo gesagt habe, dass "VPN sicherer ist als SSL / TLS", also stecken Sie mir keine Worte in den Mund :)
Phoebus

1
Wahr. Ich hatte das Gefühl, dass Sicherheit in meiner Aussage impliziert war. Vielleicht können Sie dies qualifizieren: "Wenn Sie sich Sorgen machen, dass es sich auf einem öffentlich zugänglichen Server befindet"
Matt

Meiner Meinung nach ist es Teil des mehrschichtigen Ansatzes, private Server / Dienste hinter einem VPN zu haben. Es schützt vor Konfigurationsfehlern, die die Quelle der Öffentlichkeit zugänglich machen könnten. Nicht erforderlich, aber klug.
Martijn Heemels

4

Ich bin mir nicht sicher, warum die Leute denken, dass der VPN-Ansatz der beste ist. Es ist nicht unbedingt sicherer und bietet nur einen Vorteil, den ich mir vorstellen kann.

Es ist bekannt, dass PPTP weniger als die ideale Sicherheit bietet, obwohl ich glaube, dass es seit seiner Einführung etwas verbessert wurde. Seien Sie also vorsichtig, welche VPN-Lösung Sie verwenden. Ich würde mit OpenVPN oder IPSEC gehen.

Sie können jedoch den Komfort von SSL / TLS ohne das VPN nicht übertreffen (lesen Sie weiter unten). Und um es noch sicherer zu machen, können Sie es nur als Zertifikat erstellen.

Wenn Sie jedoch der Meinung sind, dass Sie möglicherweise andere Dienste als die Quellcodeverwaltung anbieten, sollten Sie eine VPN-Lösung in Betracht ziehen, da Sie andere Dienste darüber tunneln.

Der Nachteil bei der Verwendung eines VPN besteht darin, dass Ihr PC effektiv Teil des Netzwerks wird, in das er eine Verbindung herstellt. Das kann auch von Vorteil sein. Wenn Sie jedoch eine Million Meilen von zu Hause entfernt sind und die Netzwerkverbindung zur Heimatbasis nicht zu schnell ist, kann es sein, dass Sie jedes Mal, wenn Sie einen Diff durchführen oder Code ein- oder auschecken möchten, das VPN verbinden und trennen.

Ich kann aus persönlicher Erfahrung hier sprechen, da ich ein Entwickler bin und es ein echtes Problem war, dies zu tun !!! Idealerweise werden beide Optionen bevorzugt.

Wenn Sie also im Internet usw. surfen, wird das Lesen der Nachrichten usw. möglicherweise eher langsam. Aber zumindest erhalten Sie sicheren Zugriff auf E-Mails. Überlegen Sie sich also, wie Sie es zuerst verwenden werden ... Wenn ich Sie wäre, würde ich in Betracht ziehen, beide zu implementieren.


3

Eigentlich mag ich Ihren Vorschlag. Wenn Sie Ihr Quellcode-Repository NUR über SSL / TLS zugänglich machen und sicherstellen, dass Ihre Entwickler keine einfach zu erzwingenden Passphrasen verwenden (oder noch besser Zertifikate verwenden), sollte dies so sicher wie alles andere sein .

Sie können stattdessen Ihren Server in Ihrem LAN verstecken und Entwickler dazu zwingen, ein VPN zu verwenden, um Zugriff zu erhalten. Dies bedeutet jedoch nur, dass Ihre Entwickler ihren Benutzernamen / ihr Kennwort (und / oder ihr Zertifikat) in ein anderes Anmeldefeld eingeben müssen. Ich würde empfehlen, keinen Einstiegspunkt in Ihr Netzwerk zu erstellen, dessen Auswirkungen auf die Sicherheit möglicherweise nicht immer offensichtlich sind, nur um den Zugriff auf einen einzelnen Dienst zu ermöglichen. Wenn Sie VPN bereits für andere Zwecke konfiguriert und gesichert haben, ist dies ein Kinderspiel. Verwenden Sie es. Andernfalls kann es einfacher und damit sicherer sein, den Dienst selbst direkt über SSL / TLS verfügbar zu machen.


3

Der Industriestandard hängt wahrscheinlich davon ab, was Ihre (oder die Ihrer Kunden) Branche ist :-)

In der Praxis müssen Sie überlegen, wem Sie Zugriff gewähren möchten und wie sie damit umgehen können. Einige Personen, auf die Sie möglicherweise zugreifen möchten / müssen, können nicht viel mehr als einen Benutzernamen / ein Passwort verarbeiten. Andere sind möglicherweise in der Lage, sich mit ssh vertraut zu machen, und ein privater Schlüssel, der vorausgesetzt, Sie können den Schlüssel sicher zu ihnen bringen, ist nicht schlecht. Der TortoiseSVN-Client kann mit ssh + svn umgehen und unterstützt private Schlüssel mit ein wenig Armdrehung. Das war gut genug für meine Zwecke.

Ein VPN-Tunnel ist auch ein fairer Vorschlag, obwohl Sie an vielen Orten gerne externen Personen nur Zugriff auf Ihre Quellcodeverwaltung gewähren würden, nicht jedoch auf Ihr gesamtes Netzwerk!


2

Wie andere bevorzuge ich ein VPN. Eine Alternative wäre ein SSH-Tunnel, der in der Praxis ohnehin eine Art VPN ist.


0

Machen Sie es nur intern und implementieren Sie eine VPN-Lösung für Remotebenutzer. / Doh-Duplikat.


0

Wenn Sie von überall aus zugreifen möchten, benötigen Sie einen öffentlich zugänglichen Server - so viel ist klar.

Auf diesem Server möchten Sie so wenig wie möglich verfügbar machen , vorzugsweise nur Mercurial / Subversion und sonst nichts. Dies soll verhindern, dass sich eine Sicherheitsverletzung von der Quellcodeverwaltung auf den Rest Ihres Unternehmens ausbreitet. Aus diesem Grund stimme ich Matt zu, wenn er sagt, dass ein VPN gefährlich sein kann: Es bietet einen viel breiteren Zugang als nötig.

Bei Mercurial können Sie die Dinge fest sperren, indem Sie hg-sshdie Befehle einschränken, die Clients zur Verfügung stehen, die eine Verbindung über SSH herstellen. Durch die Verwendung von SSH können Sie leicht verlangen, dass Clients die Authentifizierung mit öffentlichem Schlüssel anstelle von Kennwörtern verwenden. Dies schützt Ihren Server vor Brute-Force-Anmeldeangriffen.

Selbst wenn ein SSH-Schlüssel kompromittiert ist (möglicherweise hatte er eine schwache Passphrase und der Laptop, auf dem er gespeichert ist, wurde gestohlen), besteht der schlimmste Schaden, den ein Angreifer anrichten kann, darin, in Mercurial den Müllverlauf hinzuzufügen. Das verwendete Protokoll ist von Natur aus nur anhängbar, sodass nichts mit gelöscht werden kann hg push.

Bei HTTPS erfolgt die Authentifizierung über den Front-End-Webserver . Dies bedeutet, dass Sie bei Bedarf Client-Site-Zertifikate anfordern können, um Sicherheit wie die oben genannte SSH-Authentifizierung mit öffentlichem Schlüssel zu erhalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.