SVN + SSH Security

9

Saya menggunakan snv + ssh dengan otentikasi berbasis kunci. Saat ini agar setiap pengguna svn saya dapat mengakses repositori melalui Subversion, saya harus mengatur file repo agar dapat dibaca dan ditulis pada sistem file untuk para pengguna tersebut.

Saya ingin mencegah pengguna untuk dapat menghapus database repo ketika masuk ke server melalui ssh, namun masih dapat checkout dan melakukan kode.

Pikiran tentang bagaimana saya bisa melakukan ini?

Brad Smith
sumber

Jawaban:

4

Untuk mengakses svn + ssh URL klien svn meluncurkan instance svnserve menggunakan "ssh -q user @ host svnserve -t" dan berbicara dengan instance tersebut melalui stdin / stdout.

Jika pengguna Anda memerlukan akses ssh normal, Anda masih dapat mencegah mereka mengakses repositori dengan membatasi akses ke satu pengguna (chown -R svnserve: svnserve repo; chmod -R g-rwx, o-rwx repo) dan dengan mengganti perintah svnserve dengan ini setuid / setgid svnserve wrapper Program .

Alex Jasmin
sumber
10

Dalam lingkungan pengguna bersama, saya akan merekomendasikan pengaturan server Subversion nyata (baik svnserveatau melalui Apache). Dalam lingkungan ini, pengguna individu tidak memerlukan akses ke file repositori sama sekali karena semua akses file dilakukan di bawah akun pengguna dari proses server.

Buku Subversion memiliki bagian tentang Memilih Konfigurasi Server yang dapat membantu. Dari bagian itu (beri penekanan pada saya):

Jika Anda memiliki infrastruktur yang sudah ada yang sangat didasarkan pada akun SSH, dan jika pengguna Anda sudah memiliki akun sistem di mesin server Anda, masuk akal untuk menggunakan solusi svnserve-over-SSH. Kalau tidak, kami tidak merekomendasikan opsi ini secara luas kepada publik. Biasanya dianggap lebih aman untuk membuat pengguna Anda mengakses repositori melalui akun (imajiner) yang dikelola oleh svnserve atau Apache, daripada dengan akun sistem yang lengkap.

Greg Hewgill
sumber
4

Situs ini memiliki beberapa trik bagus: http://svn.apache.org/repos/asf/subversion/trunk/notes/ssh-tricks

Jika tidak ada yang berhasil untuk Anda, mungkin solusinya dapat melakukan trik? Anda dapat mengambil cadangan repositori setiap kali seseorang melakukan sesuatu dengan menambahkan sesuatu seperti ini ke kait komit: sudo rsync -a / my / repo / path / my / closed / path /

Komandan Keen
sumber
2

Saya melihat dua kemungkinan arah untuk menyerang masalah ini:

  • menyediakan akses shell terbatas, mis. pengguna hanya dapat menggunakan svn dengan akun mereka (mungkin memerlukan akun lain jika akses shell juga diperlukan untuk keperluan lain) - Saya telah menemukan beberapa referensi menarik yang googling untuk svnonly . Catatan: jangan mencobanya sendiri.
  • bermigrasi ke subversi melalui https, menambahkan sertifikat klien. Saya pernah melihat orang mendiskusikan hal ini, tetapi tidak pernah melakukannya sendiri. Kelemahan: membutuhkan distribusi sertifikat klien selain kunci ssh.
Olaf
sumber
1

saya setuju dengan Greg dan Olaf - pergi untuk akses https. Saya menggunakan pengaturan seperti itu untuk beberapa waktu dan tidak melihat kelemahannya.

Anda akan mendapatkan manfaat tambahan dari kontrol akses berbutir halus dalam repositori - sehingga Anda dapat membuat beberapa bagian dari itu hanya-baca dan beberapa benar-benar tidak dapat diakses untuk pengguna yang dipilih.

pQd
sumber