Szerverek és munkaállomások mentése

A rendszerek üzemeltetése során az egyik legfontosabb feladat azok rendszeres, a szervezetek vezetőivel egyeztetett gyakoriságú mentésének biztosítása. Az alábbiakban egy mentési módszert valósítunk meg, mely egy esetleges kriptovírus támadás esetén is biztosítja az adatok mentésből történő helyreállíthatóságát. A mentendő szerver a fájlszerver és egy Windows munkaállomás lesz.

Tapasztalataim szerint arra, hogy a mentésből helyreállítsunk valamit, leginkább a felhasználó által elkövetett hibák miatt van szükség. Véletlenül, néha szándékosan felülírnak vagy törölnek fájlokat, könyvtárakat és ezek utolsó, esetleg még korábban mentett állapotának helyreállítását kérik.

A hatékony megoldás érdekében szabályzati úton érdemes megtiltani az adatok munkaállomásokon történő tárolását. A folyamatos üzem fenntartása érdekében a munkaállomásoknak célszerű előre telepített tartalékait fenntartani, és arra törekedni, hogy egy kiesett számítógép esetén a munkafolyamatok azonnal folytathatók legyenek. Ez a felépítés nehezen valósítható meg, ha a munkaállomásokon is adatok vannak.

A szerver mentésének megoldásában egy már tanult, fájlok szinkronizálását végző parancsra alapozunk, ez az rsync. Ez képes egy helyi vagy távoli szerveren elérhető könyvtár tartalmának átmásolására úgy, hogy kihagyja azokat a fájlokat, amelyek az utolsó mentés óta nem változtak. Emellett képes a mentésben szereplő, de a forrásban időközben módosított fájlok különböző verzióinak tárolására is. A rsync alkalmazásával tehát egyetlen, bár eléggé összetett Linux parancssorban teljes mentést készíthetünk egy másik gépről.

Húzni vagy tolni?

Egy mentési startégia kidolgozása során alapvető kérdés, hogy egy gép „magát menti”, azaz egy azon elinduló alkalmazás végzi el a mentést, és azt kitolja valamilyen külső meghajtóra vagy szerverre, vagy egy külső, mentő szerver jelentkezik be a gépre és kihúzza a mentendő fájlokat. Mindkét megoldásnak vannak előnyei és hátrányai is. Ha a mentést tolják, akkor a mentendő gép jó eséllyel hozzáfér a saját korábbi mentéseihez is. Ez azt jelenti, hogy egy kriptovírus támadás esetén a kártevő képes lehet a mentések elpusztítására is. Ha a mentés külső forrásból történik, akkor pedig külső hozzáférést kell biztosítani, amelynek szintén van koczkázata. A kérdésre nem adható minden helyzetben érvényes válasz, és mivel gyakorlati tapasztalataim alapján a külső szerverre alapozott „húzott” mentést preferálom, ezt a megoldást tekintjük át. Ez számos esetben húzott ki a slamasztikából, olyan esetekben is, amikor egy felhasználó egy levél mellékleteként érkező kriptovírust indított a gépén és az nem csak azt, hanem a fájlszerveren elérhető mappák tartalmát is titkosította.

Első lépésben importálj egy Linux szervert backupServer néven! A szerver IP címe legyen 192.168.100.11! Az IP beállításáról gondoskodhatsz a DHCP szerveren, és ne felejtsd el a DNS-ben összerendelni ezt a címet a backup.ekke.local névvel!

A szerver hostneve legyen backup! Ezt a hostnamectl paranccsal állítjuk be:

hostnamectl set-hostname backupServer

Bejelentkezés jelszó nélkül

A mentőszerver működésének alapvető szempontja lesz, hogy a mentést ő maga kezdeményezi, tehát nem az adatokat tároló szerver végzi el a saját mentését. Rendszeres időközönként „belép” a mentendő gépbe, és átmásolja azokat a fájlokat, amelyek az utolsó mentés óta megváltoztak (tehát szinkronizál). Mivel a mentéseket általában éjjelente végezzük, amikor nem, vagy csak kevesen dolgoznak, a mentő szervernek képesnek kell automatikusan bejelentkezni a mentetndő gépbe. A gyakorlatban ilyenkor nem jelszót használunk, a távoli gép a publikus kulcsával azonosítja magát. Így nem kell a mentés megkezdésekor begépelni a mentendő gép rendszergazdai jelszavát.

Fontos!

Ha egy user ./ssh/authorized_keys fájljában szerepel egy felhasználó nyilvános kulcsa, akkor a felhasználó jelszó megadása nélkül be tud jelentkezni az adott felhasználói fiókba. Ez azért lehetséges, mert a cél gép gép erre alapozva képes olyan üzenetet küldeni a belépést kezdeményezőnek, amelyet csak az képes visszafejteni, így a belépni kívánó gép egyértelműen azonosítható. Erről bővebben az Nyilvános kulcsú azonosítás fejezetben olvashatsz.

A kulcsról, annak generálásáról és a célgépre történő másolásáról a Nyilvános kulcsú titkosítás c. fejezetben már korábban tanultunk.

A mentés

A mentést tehát az rsync parancsra alapozzuk, melynek több paraméterét is alkalmazzuk:

BACKUPFROM="192.168.100.2"
rsync -av --delete \
  --exclude="/sys/" \
  --exclude="/proc/" \
  --backup --backup-dir=$(date '+%a') \
  root@${BACKUPFROM}:/ /var/serverSync/${BACKUPFROM} \
  >/var/log/rsync-${BACKUPFROM}.log \
  2>/var/log/rsync-${BACKUPFROM}.err

Na jó, ez így elsőre valóban elég durván hangzik, nézzük az egyes paraméterek jelentését:

rsync:

az rsync parancs fájlokat és könyvtárakat szinkronizál helyi vagy akár távoli gépről is.

-a:

Archiválási mód.

-v:

„Bőbeszédű mód, a parancs folyamatosan megjeleníti, mit csinál.”

–exclude:

A paraméterként megadott könyvtárak vagy fájlok nem kerülnek szinkronizálásra. Mivel több ilyen könyvtár is van a rendszerben, ezt a paramétert többször is használjuk.

–backup:

backup mód, a megváltozott és törölt fájlok a felülírás előtt egy másik könyvtárba lesznek áthelyezve.

–backup-dir:

a backup mód során megváltozott vagy törölt fájlok az itt meghatározott könyvtárba kerülnek.