Cara melakukan rsync aman antara server di jaringan yang tidak aman

19

Pada dasarnya yang saya tanyakan adalah, adakah yang menemukan cara untuk membungkus rsync di dalam ssh.

Dengan OpenSSH v4.9 + sftp memiliki beberapa opsi bagus yang memungkinkan Anda untuk chroot koneksi yang masuk dan semacamnya - dan itu adalah solusi yang akan saya lihat, namun saya terjebak dengan RHEL, dan baik RHEL4 atau RHEL5 tidak sesuai dengan versi ssh.

Solusi saya saat ini adalah menambahkan sesuatu seperti ini ke sisi server menggunakan kunci pengguna klien ...

server% cat ~ / .ssh / otor_keys
command = "cd / srv / rsync / etl && tar --exclude './lost+found' -pcf - ./" ssh-rsa ...

... dan klien kemudian akan dibatasi hanya untuk satu hal dan satu hal saja ...

client% ssh -T -i $ {HOME} /. ssh / id_rsa [email protected]> sensative.tar

Ini mengamankan koneksi, serta server (dari klien), namun tidak efisien karena semua file akan diambil berulang-ulang.

Saya setelah melakukan sesuatu yang serupa (atau hanya lebih baik) menggunakan rsync.

Xerxes
sumber

Jawaban:

18

Dukungan Rsync menggunakan ssh sebagai transportasi

rsync -az /path/to/source username@host:/path/to/destination

beberapa versi rsync yang lebih lama mengharuskan Anda menentukan ssh secara eksplisit

rsync -aze ssh /path/to/source host:/path/to/destination

Alternatif untuk menggunakan rsync adalah BC Pierce's Unison , yang memiliki fungsi yang mirip dengan rsync, tetapi menyimpan indeks lokal di kedua ujungnya untuk menghindari berjalannya sistem file untuk menghitung delta.

Dave Cheney
sumber
Terima kasih atas respon yang cepat! Saya seharusnya menyebutkan bahwa saya menyelidiki itu juga - masalah (dalam kasus saya) dengan itu adalah bahwa hal itu tidak membatasi / chroot pengguna. Jika mungkin untuk berbicara dengan layanan rsync melalui ssh (yaitu menggunakan sintaks double-colon mendefinisikan remote) - itu akan sempurna - tetapi di atas hanya berfungsi dengan single-colon - yaitu melalui ssh, dan karenanya tidak chrooting.
Xerxes
Saya lupa menyebutkan - Serempak terlihat bagus, dan saya akan menyimpan tautannya - namun dalam kasus ini - saya tidak dapat menginstal apa pun di luar yang ditawarkan oleh RHN - yang timpang, tetapi di luar kendali saya.
Xerxes
Namun batasan lain yang harus saya sebutkan adalah bahwa koneksi harus dimulai dari klien - sisi <i> menarik </i>, dan bukan server. (Dorongan sisi server secara alami akan mudah untuk mengamankan server karena klien tidak memiliki suara, tetapi tidak berlaku untuk masalah saya saat ini).
Xerxes
1
rsync -az server: / path / path / on / client?
Dave Cheney
1
Mengapa chroot? Anda tahu bahwa chroot tidak terlalu meningkatkan keamanan. Lebih lanjut, jika Anda sudah menyediakan ssh maka rsync over ssh tidak mengurangi keamanan sistem. Juga pikirkan tentang apa yang rsync over ssh lakukan adalah memanggil rsync binary di server. Anda dapat mengamankan itu dengan cara yang sama Anda mengamankan perintah salin Anda.
Paul de Vrieze
5

Oke saya akhirnya menemukan ini, tetapi solusinya tidak seanggun yang saya harapkan.

Di satu sisi server, Anda perlu menambahkan berikut ini ke file yang diotorisasi untuk pengguna yang relevan ...

no-pty, command="exit"

Di klien, Anda kemudian dapat membuat terowongan sebagai berikut ...

ssh -l username -fNTL 8073:server:873

Setelah terowongan didirikan, Anda dapat melakukan rsync seperti biasanya - menggunakan sintaks double-colon tidak mungkin - ke localhost.

Nomor port localhost yang Anda pilih (8073) sepenuhnya opsional, ingat saja bahwa itulah yang harus Anda rsync untuk ...

rsync --port=8073 -a user@localhost::mySecureStore /srv/some/place/
Xerxes
sumber