バックアップの自動化
Webサーバー(WebServer)からローカルバックアップサーバー(BackupServer)にさまざまなディレクトリからデータをコピーするバックアップソリューションを実装したいと思います。バックアップは無人で実行する必要があるため、パスワードなしの秘密鍵による鍵ベースの認証を使用したいと思います。
特権Rsync
バックアップしたいディレクトリは、特権ユーザーだけが読み取ることができます。rsyncを使用してファイルをコピーしたいと思います。専用のバックアップユーザーを作成し、visudoルールでパスワードの入力を求められることなく、ユーザーがsudoでrsyncを実行できるようにしました。
backup-user ALL = NOPASSWD: /usr/bin/rsync
セキュリティに関する考慮事項
WebServerの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 /のみをバックアップできます
rsyncコマンドでBackupServerからバックアップしたいディレクトリを提供したいと思います。rsyncとまったく同じようにrrsyncを使用する可能性はありますか?
rsync -avze ssh --rsync-path='sudo rrsync' backupuser@111.222.33.44:/media/data /backups/Server/
追加の説明
authorized_hostsのcommand = "..."部分は、このユーザーの実行可能なコマンドを提供されたものに正確に制限していることを認識していますが、通常のrsyncを使用して、次のようにして、バックアップするパスを指定できます。パラメータ:
command="/usr/bin/rsync --server --sender -vlogDtpre.is . ${SSH_ORIGINAL_COMMAND//* \//\/}"
これはrrsyncでは機能しません。
承認されたソリューション
技術的にはこの質問に対する明確な回答ではありませんが、Gillesによって投稿されたソリューションは非常に優れたアプローチだと思います。バックアップする実際のディレクトリのすべてのビューのルートフォルダを作成しました。このため、認証を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
Authorized_keys
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
command=
オプションinauthorized_keys
は、実行されるコマンドを1つだけ受け入れます。それだ。