web-dev-qa-db-ja.com

chrootされたrsyncをセットアップしようとしています

バックアップサーバーをセットアップしようとしています。各ユーザー(クライアント)のホームディレクトリにchrootして、sftpおよびrsync

私はこのようなことをやろうとしているのは私だけではないことをすぐに発見し、 このガイド を見つけてそれに従いました。だから今私はsftpだけでchrootされたユーザーを持っています。

次に、rsyncが他のマシン上で自身を生成するためにsshを必要としていること、そしてsftpでは不十分であることを発見しました。各ユーザーにsshログインを提供することは、そもそも避けたいものです。

誰かがいくつかの可能な解決策を考えることができますか?

ありがとうございました、

マーク

10
Mark R.

Sftpソリューションはまたすべての人にsshログインを必要とするため、ここで何も失うことはありません。 sshアクセスを許可しても、必ずしも完全なシェルアクセスを意味するわけではありません。たとえば、 this は、ssh authorized_keysファイルを使用して、使用可能なコマンドをjustrsyncレシーバー。

実際、パスワード認証(推奨)ではなく、キーベースの認証を選択すると、複数のアカウントを要求する代わりに、1つのユーザーアカウントですべてを実行できます。キーを使用してリモートユーザーを識別し、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にバックアップします。など...

11
larsks

通常のrsyncをクライアントからリモートサーバーに実行しますが、冗長スイッチSSH -vを追加してから、Sending commandをgrepします。クライアントがリモートサーバーに送信している正確なコマンドが表示されます。

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

6
Arnis Juraga

Rsyncサーバーに直接接続している場合を除き、rsyncを使用できるようにするには、何らかの形式のシェルアクセスを提供する必要があります。デフォルトのポートは873(TCP)です。

rysnc man page から:

rsyncがリモートシステムに接続する方法は2つあります:リモートシェルプログラムをトランスポートとして使用する(sshやrshなど)か、TCPを介してrsyncデーモンに直接接続するリモートシェルトランスポートは、ソースまたは宛先パスにホスト指定の後に単一のコロン(:)区切り文字が含まれる場合に常に使用されます。 rsyncデーモンへの直接接続は、ソース指定または宛先パスにホスト指定の後に2つのコロン(::)区切り文字が含まれる場合に発生しますOR rsync:// URLが指定されている場合(lqUSINGも参照) RSYNC-DAEMONの機能VIAこの後者のルールの例外のREMOTE-Shell CONNECTIONrqセクション)。

制限付きのシェルアクセスを提供するには、次の guide を検討してください。 (注:元のリンクは無効です)要約:

このセットアップは、rsync、SSH、およびchrootの優れた機能を組み合わせたものです。 Rsyncはファイル転送の柔軟性と効率を提供し、SSHは転送されるデータを保護し、chrootはサーバー上のデータを不正アクセスから保護します。 dummyshは、rsyncへのアクセスのみを制限します。

Rsyncサーバーはchrootを実装していますが、しばしば必要となるSSH保護が欠如しています。さらに、追加のrsyncサーバーポートを開くことはセキュリティリスクをもたらし、技術的にも政治的にも不可能である場合があります。 Sftpとscpは、特にWebサイトなどのディレクトリツリーが関係する場合、rsyncが提供する柔軟性と効率に欠けています。

または rssh の使用方法を確認してください(rsshの設定ガイド ここ ):

rsshはOpenSSHで使用するための制限付きシェルであり、scpやsftpのみを許可します。また、rdist、rsync、およびcvsのサポートも含まれています。たとえば、シェルアクセスを提供せずに、ユーザーがscpを介してファイルをコピーできるようにするサーバーがある場合、rsshを使用してそれを行うことができます。

2
runlevelsix

chrootへのRsyncはトリッキーです:) chrootされたディレクトリ内で/ bin/shおよび/ usr/bin/rsyncの最小限の環境をセットアップする必要があります(宛先側)が機能するようにします。

こちらの記事全体をご覧ください。rsync-environmentの設定はまもなく終了します
https://medium.com/@deltazero/linux-remote-backup-rsync-chroot-d797ba6babe5

0
dayvee.cz

Rsync機能を備えたSFTP、シェルなし

chroot環境でのLFTP + SFTP を使用して、rsyncを使用する場合と同じ結果を得ることができます。ユーザーにシェルを提供したり、ラッパーを使用してsshで大幅なカスタマイズを行ったりする必要はありません。

これはより安全で、大幅に高速化できます。

0
Aaron

rsyncをラップするシェルを書くことができます。

ここで一般的なアイデアを見てください: https://sixohthree.com/1458/locking-down-rsync-using-ssh

ラッピングシェルでは、必要なことを実行でき、ユーザーをchrootすることもできます。

私の場合、同じ* nixユーザーを使用して仮想アカウントをオンにする必要がありました。私は、この種のシェルに加えて、authorized_keysファイルの多くの行を使用して、そうすることに成功しました。ユーザーをchrootしていませんが、rsyncサーバーコマンドにユーザーフォルダーレベルを追加しました。

見てください sshキーを使用して別の方法でユーザーを処理する

0
quazardous