>> A little while ago I set up an automated backup system to back up the >> data from 3 machines to a backup server. I decided to use a >> push-style layout where the 3 machines push their data to the backup >> server. Public SSH keys for the 3 machines are stored on the backup >> server and restricted to the rdiff-backup command. Each of the 3 >> machines pushes their data to the backup server as a different user >> and the top directory of each backup is chmod 700 to prevent any of >> the 3 machines from reading or writing a backup from another machine. >> >> I've run into a problem with this layout that I can't seem to solve, >> and I'm wondering if I should switch to a pull-style layout where the >> backup server pulls data from each of the 3 machines. >> >> The problem with my current push-style layout is that if one of the 3 >> machines is compromised, the attacker can delete or alter the backup >> of the compromised machine on the backup server. I can rsync the >> backups from the backup server to another machine, but if the backups >> are deleted or altered on the backup server, the rsync'ed copy on the >> next machine will also be deleted or altered. >> >> If I run a pull-style layout and the backup server is compromised, the >> attacker would have root read access to each of the 3 machines, but >> the attacker would already have access to backups from each of the 3 >> machines stored on the backup server itself so that's not really an >> issue. I would also have the added inconvenience of using openvpn or >> ssh -R for my laptop so the backup server can pull from it through any >> router. >> >> What do you think guys? Are push-style backups flawed and unacceptable? >> > > No, it's not flawed, as long as the implementation is right: versioning and > deduplication. > > With versioning, an attacker (or infiltrator, in this matter) might try to > taint the backup, but all she can do is just push a new version to the > server. You can recover your data by reverting to a prior version.
Is that true? Wouldn't the infiltrator be able to craft some sort of rdiff-backup command that deletes the entire backup? I can't come up with such a command myself, but I thought I was essentially giving full read/write access of a system's backup to an infiltrator by putting that system's public key on the backup server. I do restrict the key like command="rdiff-backup --server" but I didn't expect that to completely prevent the backup from being wiped out. Does it? - Grant > The deduplication part is only to save storage space. It's less necessary if > you have a robust versioning system that can categorize each push as either > canonical/perpetual/permanent or ephemeral/temporary. The system can just > discard old ephemeral pushes when storage becomes critical.