尝试设置chroot的rsync


10

我正在尝试设置备份服务器。我想将每个用户(客户端)chroot到其主目录,并且只允许它使用sftprsync

我很快发现我不是唯一尝试执行此类操作的人,因此我找到并遵循了该指南。因此,现在只有chroot用户使用sftp。

然后,我发现rsync需要ssh才能在另一台计算机上自动生成,而sftp是不够的。首先,我想避免为每个用户提供ssh登录。

谁能想到一些可能的解决方案?

谢谢,

标记


看看这个答案我写了一些时间去serverfault.com/questions/255084/...
user9517

Answers:


11

sftp解决方案需要每个人都使用ssh登录,因此您在这里并没有真正失去任何东西。授予ssh访问权限并不一定意味着完全的shell访问权限,例如,显示了如何使用ssh authorized_keys文件来允许通过rsync进行备份,同时将可用命令限制为 rsync接收器。

实际上,如果您选择基于密钥的身份验证,而不是密码身份验证(应该这样做),则可以在一个用户帐户下运行所有​​内容,而不需要多个帐户。您将使用密钥来标识远程用户,并将rsync接收器定向到特定目录。

在您的authorized_keys文件中这样的内容:

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

使用user1私钥的人将备份到/tmp/user1,使用user2私钥的人将备份到/tmp/user2。依此类推...


链接已消失
404。– luckydonald

我已经更新了链接。
larsk

6

rsync从客户端到远程服务器执行通常的操作,但是添加其他详细开关:SSH -v,然后添加grep Sending command。您将看到客户端发送到远程服务器的确切命令:

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

就我而言,

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

如@larsks所述,command="..."将其添加到远程服务器/home/USER/.ssh/authorized_keys文件中。如有必要,添加其他安全设置:

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

全部一起:

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

(摘自非常好的教程http://en.positon.org/post/Rsync-command-restriction-over-SSH


好的第一答案。
slm 2013年

2

除非您直接连接到rsync服务器,否则您将需要提供某种形式的Shell访问才能使用rsync-默认端口为873(TCP)。

rysnc手册页中

rsync与远程系统联系的方式有两种:使用远程shell程序作为传输工具(例如ssh或rsh)或直接通过TCP与rsync守护程序联系。只要源或目标路径在主机规范之后包含单个冒号(:)分隔符,就使用远程外壳传输。当源或目标路径在主机说明后包含双冒号(::)分隔符时,或者在指定rsync:// URL时,直接联系rsync守护程序(另请参见通过远程SHELL的lqUSING RSYNC-DAEMON功能) CONNECTIONrq部分中的内容除外)。

要提供有限的外壳访问权限,请考虑以下指南。(注意:原始链接已失效)摘要:

此设置结合了rsync,SSH和chroot的最佳功能。Rsync提供文件传输的灵活性和效率,SSH保护正在传输的数据,而chroot保护服务器上的数据免受未经授权的访问。dummysh将访问限制为仅rsync。

尽管rsync服务器实现chroot,但它缺少通常需要的SSH保护。此外,打开额外的rsync服务器端口会带来安全风险,有时在技术上或政治上都是不可能的。Sftp和scp缺乏rsync提供的灵活性和效率,尤其是在涉及目录树(例如网站)时。

还是先看看使用RSSH(有一个指导建立RSSH 这里):

rssh是与OpenSSH一起使用的受限外壳,仅允许使用scp和/或sftp。现在,它还支持rdist,rsync和cvs。例如,如果您有一台服务器,只希望允许用户通过scp复制文件,而不提供外壳程序访问权限,则可以使用rssh来做到这一点。


1
当前的消息是rssh没有得到维护,并且存在一些奇怪的安全漏洞。投资之前请先检查当前状态。
chutz

2
您可以使用perr脚本rrsync代替rssh(包括在官方rsync软件包中)。请参阅derek.simkowiak.net/backing-up-multiple-servers-with-rsnapshot
2013年

0

您可以编写一个包装rsync的shell。

在这里查看总体思路:https : //sixohthree.com/1458/locking-down-rsync-using-ssh

在包装外壳中,您可以执行所需操作,也可以更改用户的根目录。

就我而言,我需要使用相同的* nix用户打开虚拟帐户。我设法使用这种外壳,再加上authorized_keys文件中的许多行来做到这一点。我没有chroot用户,但已在rsync server命令中添加了用户文件夹级别。

使用ssh键不同的方式看待流程用户


0

具有Rsync功能的SFTP,无外壳

您可以在chroot环境中使用LFTP + SFTP并获得与使用rsync相同的结果,而无需为用户提供外壳程序或在ssh中使用包装程序进行大量自定义。

这样更安全,并且可以更快。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.