Rdiff-backup

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
(Előnyök)
(Biztonsági mentés fogalma, célja)
6. sor: 6. sor:
 
** Emberi hibák ellen is véd (pl. a RAID-el ellentétben)!
 
** Emberi hibák ellen is véd (pl. a RAID-el ellentétben)!
 
* Célja az adatok tárolása, naplózása és helyreállítás lehetőségének biztosítása
 
* Célja az adatok tárolása, naplózása és helyreállítás lehetőségének biztosítása
(Forrás: https://unixlinux.tmit.bme.hu/Backup)
+
Forrás: [[Backup]]
   
 
== Backup megoldások ==
 
== Backup megoldások ==

A lap 2009. december 11., 22:40-kori változata

Tartalomjegyzék

1 Bevezető

1.1 Biztonsági mentés fogalma, célja

  • A backup-megoldás elsődleges célja biztonsági mentés készítése a rendszer adott állapotáról
  • A biztonsági mentés alapvető védelmet jelent bizonyos hardver- és szoftverhibák ellen
    • Emberi hibák ellen is véd (pl. a RAID-el ellentétben)!
  • Célja az adatok tárolása, naplózása és helyreállítás lehetőségének biztosítása

Forrás: Backup

1.2 Backup megoldások

  • Teljes mentés
  • Inkrementális mentés
    • Kumulatív mentés
    • Differenciális mentés

(Forrás: https://unixlinux.tmit.bme.hu/Backup#Backup_megold.C3.A1sok)

1.3 Rdiff-backup

Az rdiff-backup differenciális mentést hajt végre, a hagyományostól kissé eltérő formában. Hagyományosan, egy "régen" készült teljes mentéshez képest lennének a különbségi mentések, ahol csak az előző különbséghez képesti változásokat tartalmazza a következő mentés. Jelen esetben ez kicsit máshogy történik, mert a teljes mentés, mindig egy tükrözése az aktuális állapotnak, és a korábbi állapotok visszaállíthatósága az azokhoz képesti különbségek tárolásával biztosított. Ennek a megoldásnak az az előnye, hogy a legutolsó mentés nagyon gyorsan visszaállítható, gyakorlatilag egy visszamásolással. Minél régebbi mentést szeretnék visszaállítani, annál tovább fog tartani a különbségek összefűzése, így a backupból való visszaállítás. Az első mentés egy teljes mentés, ez hosszú ideig tart, de az differenciák ettől kezdve nagyjából azonos idő alatt készülnek el és jelentősen gyorsabban, mint a teljes mentés.

1.3.1 Előnyök

  • A teljes backup tükrözés formájában áll rendelkezésre, ezért nagyon gyorsan visszállítható belőle bármi.
  • A különbségek mindig az előző mentéshez képest készülnek, így gyorsan megtörténik a biztonsági mentés
  • Az különbségek tömörített formában vannak, így kis helyet foglalnak
  • Rsync-re épül, így nincs egy teljesen új megoldás alapokról megvalósítva az összes gyermekbetegségével együtt
  • Ssh-t használ a biztonságos kapcsolathoz, ami szintén nincs benne feleslegesen és hibásan újraimplementálva
  • Már létezik natív windowsos kliens is hozzá

1.3.2 Hátrányok

  • Nem folyamatos a backup, hanem eseti.
  • A teljes mentés tömörítés nélkül, tükrözés formájában van jelen, így sok helyet foglal.
  • Nem tudja kódolt formában tárolni a biztonsági mentést (mint pl. duplicity)

2 A backup szerver telepítése

Ez a leírás alapértelmezett beállításokkal telepített Debian Lenny 5.0 rendszert feltételez, úgy szerver, mint kliens oldalon.

Csomagok telepítése:

# apt-get update
# apt-get install rdiff-backup sudo openssh-server fail2ban
# apt-get install hddtemp smartmontools munin-node munin-plugins-extra
rdiff-backup
A backup program.
sudo
Ahhoz szükséges, hogy az rdiff-backup-ot szerver módban futtathassuk a célrendszeren. Mivel a backup szerverről önmagáról is akarunk biztonsági másolatot készíteni, ezért ezen a rendszeren is szükség van erre.
openssh-server
A távoli bejelentkezéshez.
fail2ban
A bejelentkezési próbálkozások letiltására.
hddtemp, smartmontools, munin-node, munin-plugins-extra
A rendszer állapotának megfigyelésére.

2.1 SSH szerver beállítása

# nano /etc/ssh/sshd_config
  PermitRootLogin no
  TCPKeepAlive yes
  AllowUsers <saját felhasználó> lhbackup
PermitRootLogin
Letiltjuk a root bejelentkezést SSH-n keresztül
TCPKeepAlive
Megbízhatóbban felismerjük a TCP kapcsolat hibáját
AllowUsers
Ezzel a direktívával korlátozzuk az SSH-n keresztül csatlakozó felhasználókat. Itt csak a saját felhasználónkat - amivel a szerver irányítását távolról végezzük - és a backupgép saját mentésének felhasználóját engedélyezzük!

2.2 iptables alapkonfig

# nano /etc/init.d/iptablesbuild
#!/bin/bash

# SETUP DEFAULT POLICIES
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT

# FLUSH TABLES
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# ALLOW LOOPBACK INTERFACE
iptables -I INPUT  -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT

# ALLOW SSH
iptables -I INPUT  -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

# ALLOW OUTGOING CONNECTIONS
iptables -I INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# LOG TRIALS
iptables -I INPUT -m limit --limit 1/s -j LOG

# RESTART FAIL2BAN
/etc/init.d/fail2ban restart

Létrehozzuk a symlinket az Init részére:

# ln -s /etc/init.d/iptablesbuild /etc/rc2.d/S20iptablesbuild

2.3 Egy gép felvétele a backupolandó kliensek közé

Felhasználó felvétele:

# adduser --gid 65534 --disabled-password <szervernév>

RSA kulcspár generálása (4096 bites, RSA kulcspár):

# su <szervernév>
$ cd ~
$ ssh-keygen -t rsa -b 4096

Backup felhasználó profiljának szerkesztése

nano /home/<szervernév>/.ssh/config
  host <szervernév>-backup
     hostname <szerverelérés, domain vagy IP>
     user lhbackup
     identityfile /home/<szervernév>/.ssh/id_rsa
     compression yes
     cipher blowfish
     protocol 2
     port 22
hostname
Ezzel a beállítással adhatjuk meg a távoli szerver elérhetőségét. Amivel megcímezhetjük.
user
A távoli szerveren lévő backup felhasználó neve. Lásd: A kliens telepítése
compression
Ezt a helyi gép backup beállításánál kikapcsolhatjuk. Hálózaton keresztül hasznos lehet.

2.4 Backup scriptek

A backup scriptek az rdiff-backup paraméterezésének megfelelően egyszerűen elkészíthetőek. Ezeket aztán cronból futtathatjuk.

2.4.1 Példa a backup scriptekre

gep01:

#!/bin/bash

EXCLUDES="--exclude /dev --exclude /proc --exclude /tmp --exclude /sys"

echo "Removing increments older than 30 days..."
/bin/su <szervernév> -m -c "/usr/bin/rdiff-backup --force --remove-older-than 30D /home/<szervernév>/backup"

echo "Backing up <szervernév>..."
/bin/su <szervernév> -m -c "/usr/bin/rdiff-backup $EXCLUDES <szervernév>-backup::/ /home/<szervernév>/backup"

gep02:

#!/bin/bash

EXCLUDES="--exclude /dev --exclude /proc --exclude /tmp --exclude /sys --exclude /opt"

echo "Removing increments older than 30 days..."
/bin/su <szervernév2> -m -c "/usr/bin/rdiff-backup --force --remove-older-than 30D /home/<szervernév2>/backup"

echo "Backing up <szervernév2>..."
/bin/su <szervernév2> -m -c "/usr/bin/rdiff-backup $EXCLUDES <szervernév2>-backup::/ /home/<szervernév2>/backup"

Ezt követően a cronból egy gyűjtőscriptet használhatunk:

#!/bin/bash

date
time /root/gep01
date
time /root/gep02
date

A gyűjtőscript használata azért célszerű, mert így a gépeket sorban menthetjük, folyamatosan és egyenletesen van terhelve a backup szerver. A date és time parancsok segítségével láthatjuk az egyes backupok kezdési és befejezési idejét, valamint, hogy mennyi ideig tartott a procedúra.

3 A kliensek telepítése

Ez a leírás alapértelmezett beállításokkal telepített Debian Lenny 5.0 rendszert feltételez, úgy szerver, mint kliens oldalon.

Csomagok telepítése:

# apt-get update
# apt-get install rdiff-backup sudo openssh-server

Backup felhasználó felvétele:

# adduser --gid 65534 --disabled-password lhbackup
# chmod 0700 /home/lhbackup

Ha a backupoldandó gépen van AllowUsers direktíva használva az openssh-server beállításánál, akkor ott fel kell tüntetni az lhbackup felhasználót. Ha más módon korlátozva van a felhasználók bejelentkezése, akkor ott engedélyezni kell az SSH logint ennek a felhasználónak.

3.1 Sudo beállítása

nano /etc/sudoers
lhbackup ALL=NOPASSWD:/usr/bin/rdiff-backup --server

3.2 További beállítások

A backup szerveren elkészített kulcspár nyilvános kulcsát át kell hozni a backupolandó szerverre. Ez a backup szerveren a jelenlegi leírás szerint a
/home/<szervernév>/.ssh/id_rsa.pub
helyen és néven található. Az áthozott nyilvános kulcsot a backupolandó kliensen a
/home/lhbackup/.ssh/authorized_keys2
fileba kell helyezni. Ennek a filenak lhbackup tulajdonában kell lennie.

Ez után a filet a következő módon kell szerkeszteni:

# nano /home/lhbackup/.ssh/authorized_keys2
command="sudo /usr/bin/rdiff-backup --server",from="<BACKUPSZERVER IPCIME>" <RSA PUBLIKUS KULCS>

Ezzel engedélyezzük a backup szervert, hogy csatlakozzon a klienshez és futtassa a "sudo /usr/bin/rdiff-backup --server" parancsot.

Személyes eszközök