root以外のユーザーを使用してSSHを介したRsyncデーモンの保護

root以外のユーザーを使用してSSHを介したRsyncデーモンの保護

残念ながら、私のホスティングプロバイダのため、rsyncデーモンにrootとしてアクセスし、それに応じてセキュリティを設定することはできません。代わりに、サーバー上で定期的なリモートバックアップを実行するには、ファイルを介して sudo 権限が制限されている root 以外のユーザーとして rsync デーモンにアクセスする必要があります/etc/sudoers

私はそれを動作させ、以下の解決策を使用して正常にバックアップできました(下にスクロール)。 各リクエストに関する追加情報
a.)non-root-username以下で sudo 権限を取得します/etc/sudoers

non-root-username ALL=NOPASSWD: /usr/bin/rsync

b.)目的は、root以外のユーザーを使用して私のシステムディレクトリの安全なリモートバックアップを作成することです/backups(リソースを節約するためにrsyncプロトコルの代わりに暗号化されたSSH接続とrysncdを使用)。

c.)次のディレクトリ/backups(以下のソリューションは正常に動作しました。できるだけ安全であることを確認したかった)。

質問:
root以外のrsyncデーモン接続をより安全にするにはどうすればよいですか?

質問
sudo rsync環境変数を保存しないため、さまざまな問題が発生します。

1.)/etc/rsyncd.conf 機能がhosts allow =機能しなくなった場合は、サーバー側のrsync.logに次のものが表示されます。

rsync allowed access on module data from UNKNOWN (0.0.0.0)
rsync on data/ from root@UNKNOWN (0.0.0.0)
building file list

2.)実際のrsyncコマンドを実行するためにそれぞれvia/etc/ssh/sshd_configおよび/または/home/non-root-user/.ssh/authorized_keysIを使用することはできません。そうしようとすると、次のような結果になります。ForceCommandcommand=rsync --server --daemon .

rsync: did not see server greeting
rsync error: error starting client-server protocol (code 5) at main.c(1675) [Receiver=3.1.3]

2a.)現在のルートではなくバックアップユーザーを制限するこれらの値があります/etc/ssh/sshd_config。他の提案はありますか?

Match User non-root-username
    X11Forwarding no
    AllowTcpForwarding no
    PermitTTY no
   # ForceCommand /usr/bin/sudo /usr/bin/rsync <-- will not work
   # ForceCommand sudo rsync <-- will not work
   # ForceCommand rsync <-- will not work

私の現在のソリューション:

使用:
rsync -a -e "ssh -l non-root-username" --rsync-path="sudo rsync" xx.xx.xx.xx::data /local/path
修正する:
上記のコマンドを編集すると発生するため、上記の認証ユーザーを次のように@ERROR: auth failed on module data変更する必要がありました。/etc/rsyncd.confauth users: root/etc/rsyncd.conf

root@admin:~# cat /etc/rsyncd.conf 
# Global configuration of the rsync service
pid file = /var/run/rsyncd.pid
#hosts allow = 123.123.123.123  <-- hashed out
log file = /var/log/rsync.log
# Username and group for working with backups
uid = root
gid = root
# Don't allow to modify the source files
read only = yes
# Data source information
[data]
use chroot = false
#strict modes = false <-- (defaults to true)
path = /backups
list = yes
auth users = root
secrets file = /etc/rsyncd.passwd

私のものには/etc/rsyncd.passwd file次のものがあります。

root@admin:~# cat /etc/rsyncd.passwd 
root:password

私には次の権限があります/etc/rsyncd.conf

root@admin:~# stat /etc/rsyncd.conf 
  File: /etc/rsyncd.conf
  Size: 471         Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 144028      Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: ( 1001/root)
Access: 2022-05-21 13:38:46.797769245 +0800
Modify: 2022-05-21 13:38:42.641735637 +0800
Change: 2022-05-21 13:55:52.384894170 +0800

そして私にはこれらの権限があります。/etc/rsyncd.passwd

root@admin:~# stat /etc/rsyncd.passwd 
  File: /etc/rsyncd.passwd
  Size: 31          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 144040      Links: 1
Access: (0640/-rwxrwxr-x)  Uid: (    0/    root)   Gid: ( 1001/root)
Access: 2022-05-21 13:38:06.989448597 +0800
Modify: 2022-05-21 13:37:37.473212811 +0800
Change: 2022-05-21 13:37:37.473212811 +0800

どのようなヒントがありますか?

ベストアンサー1

おすすめ記事