|  |  | @@ -0,0 +1,77 @@ | 
		
	
		
			
			|  |  |  | # Server Backup | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | There are many ways to make a server backup, but we will use `rsync` (remote sync), `bindfs`, and `rssh` (restricted shell). | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ## Create a backup user with restricted shell access | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 1. Install rssh: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ```console | 
		
	
		
			
			|  |  |  | apt list rssh | 
		
	
		
			
			|  |  |  | apt show rssh | 
		
	
		
			
			|  |  |  | apt install rssh | 
		
	
		
			
			|  |  |  | ``` | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 2. Create a user for backups that uses the restricted shell: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ```console | 
		
	
		
			
			|  |  |  | useradd apps_backup -m -s /usr/bin/rssh | 
		
	
		
			
			|  |  |  | ls -al /home/apps_backup/ | 
		
	
		
			
			|  |  |  | grep apps_backup /etc/passwd | 
		
	
		
			
			|  |  |  | ``` | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 3. Edit `/etc/rssh.conf` to allow `rsync` and use a chroot jail for restricting access: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ```console | 
		
	
		
			
			|  |  |  | allowrsync | 
		
	
		
			
			|  |  |  | chrootpath = /home/apps_backup | 
		
	
		
			
			|  |  |  | ``` | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 4. Test that the shell of the user `apps_backup` is restricted: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ```console | 
		
	
		
			
			|  |  |  | su apps_backup | 
		
	
		
			
			|  |  |  | ``` | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ## Create a read-only view of the parts of the filesystem that need to be backed up | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 1. Install `bindfs`: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ```console | 
		
	
		
			
			|  |  |  | apt list bindfs | 
		
	
		
			
			|  |  |  | apt show bindfs | 
		
	
		
			
			|  |  |  | apt install bindfs | 
		
	
		
			
			|  |  |  | ``` | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 2. Create mount directories: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ```console | 
		
	
		
			
			|  |  |  | mkdir -p /home/apps_backup/opt-scripts | 
		
	
		
			
			|  |  |  | mkdir -p /home/apps_backup/var-ds | 
		
	
		
			
			|  |  |  | ``` | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 3. Add these lines to `/etc/fstab` for mounting directories read-only: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ```console | 
		
	
		
			
			|  |  |  | /opt/docker-scripts /home/apps_backup/opt-scripts fuse.bindfs perms=0000:u=rD,force-user=apps_backup,force-group=nogroup 0 0 | 
		
	
		
			
			|  |  |  | /var/ds /home/apps_backup/var-ds fuse.bindfs perms=0000:u=rD,force-user=apps_backup,force-group=nogroup 0 0 | 
		
	
		
			
			|  |  |  | ``` | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 4. Mount them: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ```console | 
		
	
		
			
			|  |  |  | mount -a | 
		
	
		
			
			|  |  |  | ls -al /home/apps_backup/opt-scripts | 
		
	
		
			
			|  |  |  | ls -al /home/apps_backup/var-ds | 
		
	
		
			
			|  |  |  | ``` | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 5. Test that they are read-only: | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ```console | 
		
	
		
			
			|  |  |  | sudo -u apps_backup ls -al /home/apps_backup/var-ds | 
		
	
		
			
			|  |  |  | sudo -u apps_backup touch /home/apps_backup/var-ds/test1.txt | 
		
	
		
			
			|  |  |  | ``` | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | # References | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | - http://jorgenmodin.net/index_html/how-to-create-a-read-only-view-of-files-to-back-up-with-e.g.-rsync |