Backuppc (setup)

Tooltje die gebaseerd is om Backups te maken via verschillende protocollen (rsync, samba…). Heel mooie GUI voor zaken te restoren.
Meer info op

Standaard installatie
Je kan de installatie het makkelijst uitvoeren met volgende stappen:

apt-get install backuppc
htpasswd /etc/backuppc/htpasswd backuppc
ln -s /etc/backuppc/apache.conf /etc/apache2/conf.d/backuppc.conf
service apache2 restart
service backuppc restart

Hierdoor draait backuppc nu al op de server. Het enige dat je nu nog rest, is de verschillende hosten te defineren, en eventueel een eigen config bestandje maken (zie puntje 4).

vi /etc/backuppc/hosts
service backuppc restart

Wil je nu dat de folder waar de backups elder staan (bv externe disk, 2de harde schijf…), vervolledig dan volgende stappen. Hieronder wordt een externe disk gebruikt als voorbeeld (/media/usb0)

sudo cp -r /var/lib/backuppc /media/usb0
sudo chown -R backuppc:backuppc /media/usb0/backuppc
sudo rm -r /var/lib/backuppc
sudo ln -s /media/usb0/backuppc /var/lib/backuppc
sudo chown -h backuppc:backuppc /var/lib/backuppc

Mails
Om mails te versturen vanuit backuppc, kan je dit best doen via postfix. Zorg dat voglende zaken goed staan in /etc/postfix/main.cf

myhostname = hostname.yourdomaine.be
mydestination = domain.be, hostname, localhost.localdomain, localhost
relayhost = uit.provider.be

Je kan eventueel een testmailtje sturen met volgend commando, dit zal je een korte analyse doorsturen van de backups / hosts…

su -s /bin/bash backuppc -c "/usr/share/backuppc/bin/BackupPC_sendEmail

Linux Clients
Om ervoor te zorgen dat backuppc de backups kan nemen vanop afstand, moet je ervoor zorgen dat backuppc kan inloggen op de computers met een ssh-sessie. En dit allemaal zonder vragen te stellen zoals rsa-keys, wachtwoorden… Zorg ervoor dat je elke stap uitvoert, en met de juiste gebruiker!
Als gebruiker backuppc, op de backupserver:

ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/backuppc_id_rsa.pub
scp ~/.ssh/backuppc_id_rsa.pub USER@CLIENT:/home/USER/backuppc_id_rsa.pub

Als gebruiker root, op de client:

ssh USER@CLIENT
sudo su -
touch ~/.ssh/authorized_keys2
cat /home/USER/backuppc_id_rsa.pub >> ~/.ssh/authorized_keys2

CENTOS
Wijzig zo dat root kan inloggen (enkel als ssh lokaal te benaderen is aub) op de client:

vim /etc/ssh/sshd_config
PermitRootLogin yes
service sshd restart

Op de backuppc server, login als backuppc en kopieer de key, en controleer eventjes:

su backuppc
ssh-copy-id root@tinkelbel
ssh root@tinkelbel whoami

Test de connectie als gebruiker backuppc, op de backupserver. Let erop wat je gebruikt als CLIENT hostname. Dit moet overeenkomen met de naam die je gebruikt in backuppc, dus best niet het IP-adres. Eventueel de naam manueel in >/etc/hosts invoeren.
ssh -l root CLIENT whoami

Voor een linux mint client te backuppen vanaf een centos7, kon ik blijkbaar niet de pubkey kopieren.
Om dit te laten werken, moet je de /etc/ssh/sshd.conf upgraden met:

PubkeyAcceptedKeyTypes=+ssh-dss

Windows clients
Je kan backups nemen via samba (windows protocol), maar beter neem je backups via het protocol rsync. Daarvoor moet je wel op de windows machine een rsyncserver daemon (service) installeren. Volg hiervoor volgende stappen:
Download rsyncd via BackupPC - Browse /cygwin-rsyncd at SourceForge.net
Dit programma draait na installatie als service, en bevindt zich standaard in de folder c:/rsyncd folder.
Wijzig het bestandje rsyncd.secrets met jouw gebruikersnaam (uit backuppc) die je gebruikt voor de backups. Let er wel op dat deze gebruiker toegang heeft tot de windows bestanden (bv een administrator). Volgende regel is voldoende in dit bestandje:

beheerder:MijnWachtwoord

Wijzig het bestandje rsyncd.conf met hetgeen jij wenst te backuppen. Let er ook op dat je de toegelaten hosten wijzigt naar jouw backupserver. bv:

use chroot = false
max connections = 2
lock file = c:/rsyncd/rsyncd.lock

[cDrive]
path = /cygdrive/c/
comment = Entire C: Drive
auth users = beheerder
secrets file = c:/rsyncd/rsyncd.secrets
hosts allow = 192.168.2.5
strict modes = false
read only = true
list = false

[qDrive]
path = /cygdrive/Q/
comment = Entire Q: Drive
auth users = beheerder
secrets file = c:/rsyncd/rsyncd.secrets
hosts allow = 192.168.2.5
strict modes = false
read only = true
list = false

Volgende settings zijn van toepassing in backuppc:

Bestanden uitsluiten bij windows

Volledige backup
$Conf{BackupFilesExclude} = {
’ => [
‘/RECYCLER’,
‘/WINNT’,
‘/temp’,
‘/WUTemp’,
'/WINDOWS/
’,
‘/Windows/',
'/$Recycle.Bin/
’,
‘/System Volume Information’,
‘/Users//AppData/Local/Microsoft/Windows/Temporary Internet Files/’,
‘/Users//AppData/Local/Microsoft/Internet Explorer/Recovery/’,
‘/Users//AppData/Local/Mozilla/Firefox///Cache/’,
‘/Users//AppData/LocalLow/Microsoft/CryptnetUrlCache/’,
‘/Users//AppData/Local/Microsoft/BingBar/’,
‘/Users//AppData/Local/Temp/’,
‘/Users//AppData/Local/Microsoft/Media Player/’,
‘/Documents and Settings//Local Settings/Application Data/Mozilla/Firefox/Profiles//Cache/’,
‘/Documents and Settings//Local Settings/Application Data/Microsoft/Internet Explorer/Recovery/Active/',
'/Documents and Settings/
/Application Data//Log/',
'/Documents and Settings/
/Local Settings/Temporary Internet Files/',
'/Documents and Settings/
/Local Settings/History/',
'/Documents and Settings/
/Local Settings/Temp/',
'/Documents and Settings/
/Cookies/’,
‘/Documents and Settings//Favorites/',
'/Documents and Settings/
/IETldCache/’,
‘/Documents and Settings//IECompatCache/',
'/Documents and Settings/
/NetHood/’,
‘/Documents and Settings//PrivacIE/',
'/Documents and Settings/
/PrintHood/’,
‘/Documents and Settings//WINDOWS/',
'/Documents and Settings/
/Recent/’,
‘/Documents and Settings//Webex/',
'/Documents and Settings/
/temp/’,
‘/pagefile.sys’,
‘/hiberfil.sys’,
/NTUSER.DAT’,
'
/NTUSER.DAT.LOG’,
/ntuser.dat.LOG’,
'
/UsrClass.dat’,
‘*/UsrClass.dat.LOG’,
]
}

Data backup

$Conf{BackupFilesExclude} = {
’ => [
'
/AppData/Local/Microsoft/Windows/Temporary Internet Files/',
'
/AppData/Local/Microsoft/Internet Explorer/Recovery/',
'
/AppData/Local/Mozilla/Firefox///Cache/',
'
/AppData/LocalLow/Microsoft/CryptnetUrlCache/',
'
/AppData/Local/Microsoft/BingBar/',
'
/AppData/Local/Temp/',
'
/AppData/Local/Microsoft/Media Player/',
Application Data/Mozilla/Firefox/Profiles//Cache/’,
'
/Application Data/Microsoft/Internet Explorer/Recovery/Active/’,
/Application Data//Log/’,
/Local Settings/Temporary Internet Files/’,
/Local Settings/History/’,
/Local Settings/Temp/’,
/Cookies/',
'
/IETldCache/’,
/IECompatCache/',
'
/NetHood/’,
/PrivacIE/',
'
/PrintHood/’,
/WINDOWS/',
'
/Recent/’,
/Webex/',
'
/temp/’,
]
}

: Specifieke scripten
Voorbeeldje van lokale backup met rsync. Hier worden enkele folders niet gebackupped, reden is dat ze anders toch maar falen.

more /etc/backuppc/corius.pl
$Conf{XferMethod} = ‘rsync’;
$Conf{RsyncClientCmd} = ‘$sshPath -q -x -l root $host $rsyncPath $argList+’;
$Conf{RsyncShareName} = ‘/’;
$Conf{BackupFilesExclude} = [’/proc’, ‘/mnt’, ‘/var/lib/backuppc’, ‘/var/cache’,’/tmp’];

Voorbeeldje van bij dierenarts, waar de lokale server met ‘tar’ wordt gebackupped ipv rsync.

more /etc/backuppc/servertje.pl
$Conf{XferMethod} = ‘tar’;
$Conf{TarShareName} = [’/’];
$Conf{TarClientCmd} = ‘/usr/bin/sudo $tarPath -c -v -f - -C
$shareName --totals --ignore-failed-read’;
$Conf{TarFullArgs} = ‘$fileList’;
$Conf{TarIncrArgs} = ‘–newer=$incrDate $fileList’;
$Conf{BackupFilesExclude} = [’/proc’, ‘/mnt’, ‘/var/lib/backuppc’, ‘/var/cache’,’/tmp’,’/home/backups’, ‘/sys’, ‘/run’];

Remote backups plaatsen (NAS)
Met dit scriptje maak ik een remote backup (bv op NAS) van de data op de backupserver.

/scripts/backup_remote.sh
#!/bin/bash
CURRENT_DATE=$(date ‘+%d/%m/%Y-%H:%M:%S’)
MOUNT_DISK="mount -t smbfs -o username=***,password=*** //NAS/backups /mnt/storagirus"
BACKUP_REMOTE="du /mnt/storagirus/public/ -hs"
SEND_MAIL=“mail ben@oniria.be < /var/log/backup.log -s ‘Backup failed, check server!!!’ -F corius@oniria.be

if grep “/mnt/storagirus” "/proc/mounts"
then
rsync -thrv --delete --exclude-from ‘/scripts/backup_remote_exclude.txt’ /mnt/nfs/ /mnt/storagirus/nfs
echo “$CURRENT_DATE *** BACKUP *** Backup was OK *** $($BACKUP_SIZE)” >> /var/log/backup.log
else
#Storagirus is not mounted, let’s try to mount it…
$MOUNT_DISK
if grep “/mnt/storagirus” "/proc/mounts"
then
rsync -thrv --delete --exclude-from ‘/scripts/backup_remote_exclude.txt’ /mnt/nfs/ /mnt/storagirus/nfs
echo “$CURRENT_DATE *** BACKUP *** Backup was OK, after remount *** $($BACKUP_SIZE)” >> /var/log/backup.log
else
#Let’s stop trying, I’ll warn my administrator…
$SEND_MAIL
echo “$CURRENT_DATE *** BACKUP *** Backup was KO, nothing done” >> /var/log/backup.log
fi
fi

more /scripts/backup_remote_exclude.txt
public/data/videos
public/data/audio
backup/
user_3/data/documents/Backups/
user_3/data/documents/Software/
public/data/zoneminder/

Geen grafieken

I had the same issue and decided to investigate. My error log looked like this:

ERROR: opening ‘/var/lib/backuppc/log/pool.rrd’: Permission denied:
/usr/share/backuppc/cgi-bin/index.cgi, referer:
http://servername/backuppc/index.cgi

I found that I had to give execute permissions to the folders above and read permissions to “everyone” on the pool.rrd then the graph appeared. It would seem that the CGI script is executing as “everyone” vs “backuppc user”

Here are the minimal permission changes I made to get things to work.

Changed BackupPC directory permission from: 2750 to 2751 --> drwxr-s–x
backuppc backuppc
Changed BackupPC/log directory permission from: 750 to 751 -->
drwxr-x–x backuppc backuppc log
Changed BackupPC/log/pool.rrd directory permission from: 640 to 754 -->
-rwxr-xr-- backuppc backuppc pool.rrd

My server is blocked from public access, so I was comfortable making this change. I would be very happy to hear anyone’s comments regarding what type of security issue this may be -and if there is another way to better way to solve this.