残念ながら、私のホスティングプロバイダのため、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_keys
Iを使用することはできません。そうしようとすると、次のような結果になります。ForceCommand
command=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.conf
auth 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
どのようなヒントがありますか?