自動バックアップ
Webサーバー(WebServer)のさまざまなディレクトリからローカルバックアップサーバー(BackupServer)にデータをコピーするバックアップソリューションを実装したいと思います。バックアップは無人で実行する必要があるため、鍵ベースの認証とパスワードのない秘密鍵を使用したいと思います。
権限Rsync
バックアップするディレクトリは、権限を持つユーザーだけが読み取ることができます。 rsyncを使ってファイルをコピーしたいです。専用のバックアップユーザーを作成し、ユーザーがvisudoルールを使用してパスワードの入力を求めずにsudoを使用してrsyncを実行できるようにしました。
backup-user ALL = NOPASSWD: /usr/bin/rsync
セキュリティに関する考慮事項
バックアップユーザーが実行できるコマンドを制限するために、Webサーバーのauthorized_keysファイルにコマンドリストを追加してセキュリティを強化したいと思います。述べたようにrrsyncをインストールしました。この投稿。
command="/usr/bin/rrsync",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAA134143NzaC1yc...
Rrsyncにはサブディレクトリが必要です。
通常のrsyncとは異なり、rrsyncはここで説明されているように、認証キーファイルのサブディレクトリを期待します。ブログ投稿
command="/usr/share/rsync/rrsync /var/backup/client1/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa
この制限は機能しますが、/var/backup/client1/という1つの特定のディレクトリのみをバックアップできます。
rsyncコマンドにBackupServerでバックアップしたいディレクトリを提供したいと思います。たとえば、rsyncのようにrrsyncを使用できますか?
rsync -avze ssh --rsync-path='sudo rrsync' [email protected]:/media/data /backups/Server/
追加のガイドライン
Authorized_hostsのcommand = "..."部分がそのユーザーの実行可能なコマンドを提供されたコマンドに制限していることを認識していますが、通常のrsyncを使用すると、次のタスクを実行してバックアップしたいパスにパラメータを提供できます。
command="/usr/bin/rsync --server --sender -vlogDtpre.is . ${SSH_ORIGINAL_COMMAND//* \//\/}"
rrsyncでは動作しません。
許容されるソリューション
これは技術的に質問に対する明確な答えではありませんが、Gilesが投稿したソリューションは非常に良いアプローチだと思います。バックアップしたい物理ディレクトリのすべてのビューのルートフォルダを作成しました。したがって、認証をrrsyncにのみ安全に制限できます。
One time todo
sudo mkdir /mnt/Backups-Rsync-Readonly
sudo chown -R rsync-backup /mnt/Backups-Rsync-Readonly
sudo mkdir /mnt/Backups-Rsync-Readonly/VAR-WWW
sudo mkdir /mnt/Backups-Rsync-Readonly/MySQL-Backups
sudo setfacl -m u:rsync-backup:rx /mnt/Backups-Rsync-Readonly/
sudo setfacl -m u:rsync-backup:rx /mnt/Backups-Rsync-Readonly/MySQL-Backups
sudo setfacl -m u:rsync-backup:rx /mnt/Backups-Rsync-Readonly/VAR-WWW
ビューの作成(再起動すると消えます)
sudo bindfs -o perms=0000:u=rD,force-user=rsync-backup /var/www /mnt/Backups-Rsync-Readonly/VAR-WWW
sudo bindfs -o perms=0000:u=rD,force-user=rsync-backup /MySQL-Dumps /mnt/Backups-Rsync-Readonly/MySQL-Backups
Fstabバージョン
/home/stefan/Scans /mnt/Backups-Rsync-Readonly/VAR-WWW fuse.bindfs perms=0000:u=rD,force-user=rsync-backup 0 0
認証キー
command="/usr/bin/rrsync -ro /mnt/Backups-Rsync-Readonly",from="192.168.0.10",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-rsa AAAAB
答え1
1 つの可能性は、以下を使用して、専用ユーザーがバックアップできるようにするディレクトリの読み取り専用ビューを作成することです。ファイルシステムバインディング。 sudoをまったく使用しないでください。rrsync
そのユーザーを許可するコマンドのみを生成します。ワンタイム設定:
mkdir /somewhere/backup-views /somewhere/backup-views/dir1 /somewhere/backup-views/dir2
chmod 700 /somewhere/backup-views
setfacl -m u:rx:backup-user /somewhere/backup-views
起動するたびに設定:
bindfs -o perms=a+r-w /actual/dir1 /somewhere/backup-views/dir1
bindfs -o perms=a+r-w /actual/dir2 /somewhere/backup-views/dir2
または対応する行/etc/fstab
:
/actual/dir1 /somewhere/backup-views/dir1 bindfs perms=a+r-w
/actual/dir2 /somewhere/backup-views/dir2 bindfs perms=a+r-w
次に、バックアップユーザーrsync
がで実行されるように設定します/somewhere/backup-views
。