Git-SSH-Server sperren

Git-SSH-Server sperren

Ich möchte einen Git-Server über SSH einrichten, mit einem einzigen SSH-Konto für das Projekt. Alle Projektmitglieder sollten ihre SSH-Schlüssel in authorized_keys aufgelistet haben. Lockdown sollte den Zugriff auf ausschließlich Git-Aufgaben und nur innerhalb eines dedizierten Verzeichnisses beschränken.

Wie kann ich ein solches Setup am besten erstellen? Es gibt git-shell, das anscheinend die Sperre auf die Ausführung von Git-Befehlen beschränken kann, aber ich kann nicht herausfinden, wie ich den Zugriff auf ein einzelnes Verzeichnis beschränken kann. Es gibt auch verschiedene Python- und Ruby-Wrapper – welchen davon kann ich vertrauen?

Antwort1

Sie könnten einen Blick darauf werfenGitoseoderGitolit, Gitolite ist in Bezug auf die Gewährung von Zugriff und so weiter auf Repositories irgendwie besser, Sie müssten sich auch keine Gedanken darüber machen, Benutzern Zugriff auf den Server zu gewähren und so weiter

Antwort2

Was ist Ihr Bedrohungsmodell?

Guter Kerl zerstört versehentlich das Git-Repository oder andere Daten:Stellen Sie sicher, dass Ihre Benutzer nur in ihr Home-Verzeichnis, ihr temporäres Verzeichnis und das Git-Repository schreiben können. Sichern Sie das Repository nach jedem Commit und führen Sie regelmäßig Wiederherstellungsverfahren durch.

Ein Bösewicht stiehlt den privaten Schlüssel einer anderen Person und möchte Ihr System besitzen:Ihre Angriffsfläche ist auf Teile von sshd beschränkt, die durch Authentifizierung geschützt sind – und auf die Shell-Schnittstelle, die Sie verwenden. Machen Sie sie also so klein wie möglich. Python/Ruby-Wrapper enthalten viel Code und bieten viel Raum für Fehler. Verwenden Sie die Git-Shell oder ziehen Sie die Verwendung der Anweisungen Match und ChrootDirectory in sshd_config in Betracht, um einzuschränken, auf welche Teile des Dateisystems die Benutzer zugreifen können.

Ein Bösewicht stiehlt den privaten Schlüssel einer anderen Person und erhält Ihren Quellcode:Bringen Sie den Benutzern bei, wie sie ihre privaten Schlüssel schützen, und legen Sie Verfahren für den schnellen Widerruf von Schlüsseln fest (z. B. wen sie um 4 Uhr morgens anrufen müssen, um Schlüssel widerrufen zu lassen).

Verwenden Sie nicht .ssh/authorized_keys, sondern das AuthorizedKeyfileSchlüsselwort in sshd_config, um einen Pfad anzugeben, für den Benutzer keinen Schreibzugriff haben, z. B. /etc/ssh/keys/%u. Es ist zu schwierig sicherzustellen, dass Benutzer .ssh/authorized_keys niemals mit ihrer eigenen Kopie überschreiben können.

Sorgen Sie außerdem dafür, dass die Benutzerschlüsseldateien und die SSHD-Konfiguration versionskontrolliert sind, um Audits zu ermöglichen.

verwandte Informationen