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


10

バックアップサーバーをセットアップしようとしています。各ユーザー(クライアント)をホームディレクトリにchrootし、sftprsyncの使用のみを許可します。

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

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

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

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

マーク


この答えを見て、私はいくつかの時間の外出先に書いたserverfault.com/questions/255084/...
user9517

回答:


11

sftpソリューションでは、全員にsshログイン必要となるため、ここでは何も失われていません。sshアクセスを許可しても、必ずしも完全なシェルアクセスを意味するわけではありません。たとえば、これは、ssh authorized_keysファイルを使用して、rsyncを介したバックアップを許可し、使用可能なコマンドをrsyncレシーバーのみに制限する方法を示しています。

実際、パスワード認証(推奨)ではなく、キーベースの認証を選択すると、複数のアカウントを要求する代わりに、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/user1user2秘密鍵を使用している誰かがにバックアップし/tmp/user2ます。など...


リンクは404です
。–ラッキードナルド

リンクを更新しました。
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

2

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

rysnc manページ

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

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

このセットアップは、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を使用してそれを行うことができます。


1
現在のニュースは、rsshがメンテナンスされておらず、奇妙なセキュリティホールがあることです。それに投資する前に、現在の状態を確認してください。
チャッツ

2
rrsync公式のrsyncパッケージに含まれているrsshの代わりにperlスクリプトを使用できます。derek.simkowiak.net/backing-up-multiple-servers-with-rsnapshotを
ハンマー

0

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

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

あなたのラッピングシェルであなたはあなたが望むことをすることができ、おそらくユーザーをchrootすることができます。

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

sshキーを使用してプロセスユーザーを別の方法で確認する


0

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

あなたは使用することができchroot環境にLFTP + SFTPをユーザーにシェルを提供するか、ラッパーでのsshで重いカスタマイズを行うことなく、rsyncのを使用するなどして同じ結果を得ます。

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.