rsyncd.confを使用してSSHを介したrsyncを制限できますか?

rsyncd.confを使用してSSHを介したrsyncを制限できますか?

限られたrsyncスクリプトを見てみると、同期、これはで言及されていますman rsync。デフォルトでは、クライアントコマンドはSSHを介して実行されるリモートコマンド rsyncにすべてのオプションを渡すようです。人々がサーバーが許可するパスとオプションを制限するために使用する200行以上のPerlスクリプト。これに対する私の最初の反応は「悪」でした。このオプションが実際にどのように使用されるかについて、文書が意図的にあいまいであることは役に立ちません。rsyncrrsyncrsync--server

また、2016年のバグレポートには次のような内容が記載されています。巨大なセキュリティ欠陥存在するrrsync。まだ解決されていません。

:-(

私は法的目的とオプションの定義を好みますrsyncd.conf。また、SSH暗号化と認証を使用してrsyncサーバーへの接続を保護したいと思います。

それそうだ~/.authorized_keys同様に、制限オプションを持つプライベートSSHキーを使用してこれを実行できますcommand="/usr/bin/rsync --server --daemon --config=./rsyncd.conf .",restrict。たとえば、rsyncデーモン構文を使用してクライアントコマンドを実行できますrsync -e "ssh" "$SOURCE_PATH" "$SSH_HOST"::"$RSYNC_MODULE"/"$DEST_PATH"

(SSHキーを使用していない場合は、/etc/sshd_config専用ユーザー、Match、およびForceCommandを使用して同じ操作を実行できますが、現在はブランケットに対応するものはなく、restrictすべての権限を個別に無効にする必要があります。)

この作品は信頼できますか?

いくつかの他のオプションをテストしました。クライアントコマンドにオプションを追加しても(rsync例:rsync --server --daemon .-vlogDtprze.iLsf --numeric-ids

質問:上記の内容を信頼できますか?それとは対照的に、クライアントが別のオプションセットを使用してデーモンサーバーを起動する必要がある状況はありますか?

3番目のパラメータ - .- 別の値に設定されていますか?それは何をしますか? ?

ベストアンサー1

はい、私の考えはかなり安全な家庭だと思います。

これがうまくいく自然な方法です。これらの詳細を文書化することは避けましたが、今後のバージョンでも引き続き同じ方法で動作する可能性が高くなります。コマンドラインオプションはrsync --server実際にはネットワークプロトコルの一部であり、通常以前のバージョンと互換性があります。

  1. ソースコード
  2. 「Literature Review」(いくつかの推奨事項、否定的なレビューなし)

1. ソースコード

ソースコードは、「daemon_over_rsh」モードでは、常にコマンドラインオプションのみを使用してサーバー側を実行することが非常に明確に見えます--server --daemon .

rsync(たとえば、他のオプションを実行できるオプションがあると思います/home/alan/rsync-custom-build/rsync。しかし、そうしていることを既にご存知です。)

オプション.c

2390 void server_options(char **args, int *argc_p)
2391 {
2392         static char argstr[64];
2393         int ac = *argc_p;
2394         uchar where;
2395         char *arg;
2396         int i, x;
2397 
2398         /* This should always remain first on the server's command-line. */
2399         args[ac++] = "--server";
2400 
2401         if (daemon_over_rsh > 0) {
2402                 args[ac++] = "--daemon";
2403                 *argc_p = ac;
2404                 /* if we're passing --daemon, we're done */
2405                 return;
2406         }

メインプログラム

 512                 server_options(args,&argc);
 513 
 514                 if (argc >= MAX_ARGS - 2)
 515                         goto arg_overflow;
 516         }
 517 
 518         args[argc++] = ".";
 519 
 520         if (!daemon_over_rsh) {
 ...
 534         }
 535 
 536         args[argc] = NULL;

3番目のパラメータ - .- 別の値に設定されていますか?それは何をしますか? ?

いいえ、何もしません。

オプションではない引数が少なくとも1つ必要です。これがなければ、メッセージがrsync印刷さ--helpれ、終了コード1が返されます。を実行すると、rsync --server --daemonヘルプメッセージがstderr(つまり端末)の代わりにsyslogに書き込まれます。

これは必須ですが、オプションではない引数はrsync --server --daemon完全に無視されます。

1661         if (argc < 1) {
1662                 usage(FERROR);
1663                 exit_cleanup(RERR_SYNTAX);
1664         }
1665 
1666         if (am_server) {
1667                 set_nonblocking(STDIN_FILENO);
1668                 set_nonblocking(STDOUT_FILENO);
1669                 if (am_daemon)
1670                         return start_daemon(STDIN_FILENO, STDOUT_FILENO);
1671                 start_server(STDIN_FILENO, STDOUT_FILENO, argc, argv);
1672         }

2.文学評論」

Google クエリ:

  • rsyncデーモンサーバー(sshd_config forcecommand)または(authorized_keysコマンド)
  • SSHによるrsyncデーモンモード

結果の最初のページをスキャンしました。この特定の問題についていくつかの肯定的な提案を見つけましたが、否定的なフィードバックはありませんでした。否定的なフィードバックがないことは強力な証拠ではありません。セキュリティの脆弱性は私にとってrrsyncより重要な問題のようですが、「rrsync」munge link」を検索する必要がありました。 Google では外部参照が見つからず、バグレポート自体のみが見つかりました。

おすすめ記事