Chroot'd rsync kurmaya çalışıyor


10

Bir yedekleme sunucusu kurmaya çalışıyorum. İstiyorum chroot onun ana dizine her kullanıcı (istemci) ve sadece o kullanmasına izin sftp ve rsync .

Hızlı bir şekilde böyle bir şey yapmaya çalışan tek kişi olmadığımı keşfettim ve bu kılavuzu buldum ve takip ettim. Şimdi sadece sftp ile aldatılmış kullanıcılar var.

Sonra rsync'in diğer makinede kendini göstermesi için ssh'ye ihtiyacı olduğunu öğrendim ve bu sftp yeterli değil. Her kullanıcıya ssh girişi yapmak ilk etapta kaçınmak istediğim bir şey.

Herkes olası çözümleri düşünebilir mi?

Teşekkür ederim,

işaret


Bu cevaba bir göz at biraz zaman yazdım go serverfault.com/questions/255084/…
user9517

Yanıtlar:


11

Bir sftp çözümü de herkes için bir ssh girişi gerektirir, bu yüzden burada hiçbir şey kaybetmediniz. Ssh erişiminin verilmesi tam kabuk erişimi anlamına gelmez, örneğin bu , authorized_keysmevcut komutları yalnızca rsync alıcısıyla sınırlarken, rsync üzerinden yedeklemeye izin vermek için ssh dosyasının nasıl kullanılacağını gösterir .

Aslında, parola kimlik doğrulaması yerine (bunu yapmanız gerekir) anahtar tabanlı kimlik doğrulamayı tercih ederseniz, birden çok hesap yerine, her şeyi tek bir kullanıcı hesabı altında çalıştırabilirsiniz. Uzak kullanıcıları tanımlamak ve rsync alıcısını belirli bir dizine yönlendirmek için anahtarları kullanırsınız.

authorized_keysDosyanızda böyle bir şey :

command="/usr/bin/rsync --server -a . /tmp/user1" ssh-rsa ... user1
command="/usr/bin/rsync --server -a . /tmp/user2" ssh-rsa ... user2

user1Özel anahtarı kullanan biri yedeklenir /tmp/user1ve user2özel anahtarı kullanan biri yedeklenir /tmp/user2. Ve böylece ...


Bağlantı
kesildi

Bağlantıyı güncelledim.
larsks

6

Normalden rsyncistemciden uzak sunucuya yürütün , ancak ek ayrıntılı anahtar ekleyin:, SSH -vsonra grep için Sending command. Komut istemcisinin uzak sunucuya tam olarak gönderdiğini göreceksiniz:

rsync -avz -e'ssh -v -i /ssh-keys/clientprivate.key' --bwlimit=8000 --delete root@server:/path/ /backup/myserver/ 2>&1 | grep "Sending command"

Benim durumumda

rsync --server -vvlogDtprze.iLsf --bwlimit=8000 --delete . /path

Bunu @larsks belirtildiği gibi command="..."uzak sunucu /home/USER/.ssh/authorized_keysdosyasına ekleyin. Gerekirse ek güvenlik ayarları ekleyin:

no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server

Hep birlikte:

command="rsync --server -vvlogDtprze.iLsf --bwlimit=8000 --delete . /backup/path",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server

(Çok iyi bir öğreticiden alınmıştır http://en.positon.org/post/Rsync-command-restriction-over-SSH )


İyi 1. cevap.
slm

2

Doğrudan rsync sunucusuna bağlanmıyorsanız, rsync'i kullanabilmek için bir tür kabuk erişimi sağlamanız gerekecektir - varsayılan bağlantı noktası 873'tür (TCP).

Gönderen rysnc adam sayfası :

Rsync'in uzaktaki bir sistemle iletişim kurmasının iki farklı yolu vardır: aktarım olarak bir uzak kabuk programı kullanmak (ssh veya rsh gibi) veya rsync arka plan programı ile doğrudan TCP üzerinden bağlantı kurmak. Uzak kabuk aktarımı, kaynak veya hedef yol, bir ana bilgisayar belirtiminden sonra tek bir iki nokta üst üste (:) ayırıcısı içerdiğinde kullanılır. Bir rsync daemon'una başvurmak, kaynak veya hedef yol bir ana bilgisayar belirtiminden sonra çift iki nokta (: :) ayırıcısı içeriyorsa VEYA bir rsync: // URL belirtildiğinde (ayrıca bkz. LqUSING RSYNC-DAEMON ÖZELLİKLERİ UZAKTAN-SHELL Bu son kuralın bir istisnası için CONNECTIONrq bölümü).

Sınırlı kabuk erişimi sağlamak için aşağıdaki kılavuzu göz önünde bulundurun . (Not: orijinal bağlantı öldü) Özet:

Bu kurulum rsync, SSH ve chroot'un en iyi özelliklerini bir araya getirir. Rsync, dosya aktarımında esneklik ve verimlilik sağlar, SSH aktarılan verileri korur ve chroot sunucudaki verileri yetkisiz erişime karşı korur. Dummysh yalnızca rsync'e erişimi sınırlar.

Rsync sunucusu chroot uygularken, genellikle gerekli olan SSH korumasından yoksundur. Ayrıca, ek bir rsync sunucu portu açmak güvenlik riski oluşturur ve bazen teknik veya politik olarak mümkün değildir. Sftp ve scp, özellikle Web sitesi gibi bir dizin ağacı söz konusu olduğunda, rsync tarafından sağlanan esneklik ve verimlilikten yoksundur.

Ya kullanarak bakmak rssh (rssh kurma için bir rehber var burada ):

rssh, OpenSSH ile kullanım için kısıtlı bir kabuk olup yalnızca scp ve / veya sftp'ye izin verir. Artık rdist, rsync ve cvs desteği de içeriyor. Örneğin, kullanıcıların kabuk erişimi sağlamadan yalnızca scp aracılığıyla dosyaları kopyalamasına izin vermek istediğiniz bir sunucunuz varsa, bunu yapmak için rssh kullanabilirsiniz.


1
Güncel haberler , rssh'ın korunmadığı ve bazı garip güvenlik delikleri olduğu. Yatırım yapmadan önce mevcut durumu kontrol edin.
chutz

2
rrsyncResmi rsync paketinde bulunan rssh yerine perl betiğini kullanabilirsiniz . Bkz derek.simkowiak.net/backing-up-multiple-servers-with-rsnapshot
unhammer

0

rsync'i saran bir kabuk yazabilirsiniz.

genel fikre buradan bakın: https://sixohthree.com/1458/locking-down-rsync-using-ssh

sarma kabuğunda ne istersen yapabilir ve belki de kullanıcıyı aldatabilirsin.

Benim durumumda aynı * nix kullanıcısını kullanarak sanal hesabı açmam gerekiyordu. Bu tür kabuk artı authority_keys dosyasında birçok satır kullanarak bunu başardı. Ben kullanıcı köklü değil ama rsync sunucu komutuna bir kullanıcı klasörü düzeyi ekledim.

ssh anahtarını kullanarak işlem kullanıcısına farklı bir şekilde bakın


0

Kabuksuz Rsync özellikli SFTP

Sen kullanabilirsiniz chroot ortamında lftp + SFTP ve kullanıcıya kabuk sağlayan veya ambalajlarının ile ssh herhangi ağır özelleştirmeler yapmadan, rsync aynı sonuçları elde eder.

Bu daha güvenlidir ve çok daha hızlı olabilir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.