Ugrás a tartalomhoz

Sütibeállítások

Típusonként válassza ki, mely sütiket engedélyezi. Választását bármikor módosíthatja a Sütibeállítások linken, amely minden oldal alján megtalálható. Adatvédelmi nyilatkozat

Szükséges

Mindig bekapcsolva

A bejelentkezéshez, a kosár megőrzéséhez és a választásai megjegyzéséhez szükségesek. Ezek mindig be vannak kapcsolva.

Milyen sütik?
  • weboke_sessie, weboke_klant, weboke_remember: a munkamenet és a bejelentkezve maradás
  • weboke_basket: a kosár
  • wkBtwIncl: az árak megjelenítése ÁFÁ-val vagy anélkül
  • wok_cookies: a sütiválasztás, 12 hónap

Méri, melyik hirdetés vezet látogatáshoz vagy rendeléshez, hogy ne fizessünk hatástalan hirdetésekért.

Milyen sütik?
  • Google Ads a Google Tag Manageren keresztül (_gcl_au, _gcl_aw), legfeljebb 90 napig
  • OpenAI Ads, hirdetések a ChatGPT-ben
  • wok_aff: melyik partnerünk ajánlására érkezett (partnerprogram), 60 nap

4,6

Ország és nyelv

Minden országnak saját oldala van, az adott ország áraival és ÁFA-jával.

Megtekintés

Biztonsági mentések a restic segítségével

Modul 8: Biztonsági mentések és felügyelet · Olvasási idő: 12 perc

Tanulási cél: A lecke végére Ön képes lesz a restic segítségével titkosított biztonsági mentéseket készíteni a szerverén kívüli tárhelyre, a régi verziókat egy megőrzési séma szerint eltávolítani, a mentést ellenőrizni és fájlokat visszaállítani, valamint az egészet automatikusan futtatni.

Kulcsfogalmak: restic, repository, init, jelszó(fájl), backend (sftp, S3, rest-server), backup, snapshots, forget, --keep-daily/--keep-weekly/--keep-monthly, prune, check, restore, mount, deduplikáció, append-only, systemd-időzítő

Miért a restic?

Számos biztonsági mentő program létezik. A restic jó választás egy saját szerverhez, mert:

  • mindent titkosít, mielőtt az adatok elhagynák a szervert; a tárhely csak olvashatatlan blokkokat lát;
  • deduplikál: a meg nem változott fájlokat nem tárolja újra, így a napi mentések kevés helyet foglalnak;
  • sokféle tárhelyet ismer: egy mappát, egy másik szervert SFTP-n keresztül, S3-kompatibilis tárhelyet, saját rest-servert;
  • egyetlen program, amely megtalálható a Debian és az Ubuntu csomagforrásában (apt install restic).

Hasonló tulajdonságokkal rendelkező alternatíva a BorgBackup. Az ebben a leckében bemutatott elvek ott is érvényesek.

A fogalmak

  • Repository: az a hely, ahol a restic a mentéseket tárolja. Mindig a mentett szerveren kívül legyen.
  • Snapshot: egyetlen mentés egy adott időpontban. (Figyelem: ez nem azonos a szolgáltatója által készített snapshottal, amelyről a 8.1. leckében volt szó.)
  • Jelszó: minden repositoryhoz tartozik egy jelszó, amellyel minden titkosítva van. A restic dokumentációja ezt egyértelműen kimondja: aki elveszíti a jelszót, az visszavonhatatlanul elveszíti az adatokat.

Repository létrehozása

Tegyük fel, hogy van egy backup.example.net tárolószervere, amelyhez SFTP-n keresztül, kulccsal fér hozzá web1 felhasználóként. Először hozzon létre egy jelszófájlt a szerveren (és ugyanezt a jelszót tárolja el a jelszókezelőjében is, lásd a 8.1. leckét):

root@web1:~# install -m 600 /dev/null /root/.restic-wachtwoord
root@web1:~# openssl rand -base64 32 > /root/.restic-wachtwoord
root@web1:~# export RESTIC_REPOSITORY=sftp:web1@backup.example.net:/srv/restic/web1
root@web1:~# export RESTIC_PASSWORD_FILE=/root/.restic-wachtwoord
root@web1:~# restic init
created restic repository 5f1a9c2e3b at sftp:web1@backup.example.net:/srv/restic/web1

Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.

A RESTIC_REPOSITORY és RESTIC_PASSWORD_FILE környezeti változók használatával nem kell minden alkalommal begépelnie a -r és --password-file opciókat.

Biztonsági mentés készítése

Először az adatbázis-dump (8.1. lecke), utána a mentés:

root@web1:~# restic backup /etc /var/www /opt /var/backups/db \
    --exclude /var/www/*/cache --tag dagelijks
repository 5f1a9c2e opened (version 2, compression level auto)
...
Files:        8421 new,     0 changed,     0 unmodified
Dirs:         1203 new,     0 changed,     0 unmodified
Added to the repository: 612.338 MiB (402.117 MiB stored)

processed 8421 files, 1.204 GiB in 0:41
snapshot 3c7e91d4 saved

Másnap már sokkal gyorsabb: csak az kerül bele, ami megváltozott.

root@web1:~# restic snapshots
ID        Time                 Host  Tags       Paths
-----------------------------------------------------------------------
3c7e91d4  2026-11-08 03:10:02  web1  dagelijks  /etc /opt /var/backups/db /var/www
a18f0b77  2026-11-09 03:10:05  web1  dagelijks  /etc /opt /var/backups/db /var/www
-----------------------------------------------------------------------
2 snapshots

Takarítás: forget és prune

Ha minden nap egy újabb snapshot keletkezik, egy év múlva 365 snapshot lesz. A forget paranccsal egy megőrzési séma alapján határozza meg, melyeket tartja meg:

root@web1:~# restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

A séma így működik:

  • --keep-daily 7: az utolsó hét olyan napot veszi figyelembe, amelyen van snapshot, és naponként a legújabbat tartja meg;
  • --keep-weekly 4: ugyanez az utolsó négy hétre (hétfőtől vasárnapig);
  • --keep-monthly 6: ugyanez az utolsó hat hónapra.

Egy snapshot akkor marad meg, ha a szabályok közül legalább egynek megfelel. Ami egyetlen szabálynak sem felel meg, azt a restic elfelejti. Egy új sémát először a --dry-run opcióval próbáljon ki: így látja, mi kerülne törlésre, anélkül hogy bármi megváltozna.

Fontos különbség: a forget csak a snapshotra mutató hivatkozást távolítja el. Az adatok a repositoryban maradnak, amíg a prune el nem takarítja azokat a blokkokat, amelyeket már egyetlen snapshot sem használ. A forget parancs --prune opciója ezt egy lépésben elvégzi. A prune időigényes és zárolja a repositoryt, ezért ne ütemezze a mentéssel egy időre.

Ellenőrzés: check

Egy csendben megsérült mentést csak a visszaállításkor vesz észre az ember. Ezért a restic rendszeresen ellenőrizze a repositoryt:

root@web1:~# restic check
...
no errors were found
root@web1:~# restic check --read-data-subset=5%

Az egyszerű check a szerkezetet ellenőrzi. A --read-data-subset opcióval ténylegesen vissza is olvassa az adatok egy részét, és ellenőrzi a tartalmat. Végezze ezt például hetente, néhány százalékkal; így egy idő után minden adat egyszer beolvasásra kerül.

Visszaállítás: restore és mount

Mindig egy külön mappába állítson vissza, soha ne közvetlenül az eredeti fölé:

root@web1:~# restic restore latest --target /tmp/terug --include /etc/nginx
restoring snapshot a18f0b77 of [/etc /opt /var/backups/db /var/www] at 2026-11-09 03:10:05 ...
Summary: Restored 41 files/dirs (88.104 KiB) in 0:00
root@web1:~# diff -r /tmp/terug/etc/nginx /etc/nginx && echo gelijk
gelijk

A latest a legújabb snapshotot jelenti; azonosítót is használhat (restic restore 3c7e91d4 ...). A restic mount /mnt/restic paranccsal (FUSE szükséges) az összes snapshot mappaként jelenik meg, így körülnézhet és egyes fájlokat kimásolhat. Kilépés: Ctrl+C.

Egy adatbázist úgy állít vissza, hogy visszahozza a dumpot és importálja, például: gunzip < alles.sql.gz | mariadb.

Automatikusan, minden éjjel

Készítsen egy szkriptet és egy systemd-időzítőt (6.3. lecke). A szkript:

#!/bin/sh
# /usr/local/sbin/backup.sh
set -eu
export RESTIC_REPOSITORY=sftp:web1@backup.example.net:/srv/restic/web1
export RESTIC_PASSWORD_FILE=/root/.restic-wachtwoord
mariadb-dump --single-transaction --all-databases | gzip > /var/backups/db/alles.sql.gz
restic backup /etc /var/www /opt /var/backups/db --tag dagelijks
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

Ehhez egy .service kell Type=oneshot és ExecStart=/usr/local/sbin/backup.sh beállítással, valamint egy .timer OnCalendar=*-*-* 03:10:00 és Persistent=true beállítással. A set -eu gondoskodik arról, hogy a szkript az első hibánál leálljon, így a systemd sikertelennek látja a futást. Kapcsoljon hozzá értesítést (8.3. lecke), különben nem veszi észre a sikertelen mentést.

Zsarolóvírusok ellen: append-only

A fenti szkriptben a szerver maga is törölheti a mentést (forget és prune). Ha egy támadó átveszi a szervert, akkor ő is megteheti ezt. Kétféleképpen előzheti meg:

  • rest-server append-only módban: a tárolószerveren a restic saját rest-serverét futtatja a --append-only opcióval. A webszerver ekkor hozzá tud adni mentéseket, de törölni semmit sem tud. A takarítást (forget --prune) egy másik, jól védett, teljes jogosultsággal rendelkező gépről végzi.
  • Verziókezeléssel vagy objektumzárolással ellátott tárhely egy S3-szolgáltatónál, így a törölt objektumok még egy ideig visszaállíthatók.

Figyeljen egy alattomos csapdára is, amelyet maga a restic dokumentációja említ: egy támadó, aki hamis snapshotokat ad hozzá, egy --keep-weekly típusú sémát rávehet arra, hogy valódi snapshotokat felejtsen el. A --keep-within opcióval (például --keep-within 30d) az adott időszakból minden megmarad, akár hamis, akár valódi.

Összefoglalás

  • A restic titkosít, deduplikál, és sokféle, a szerveren kívüli tárhelyre tud menteni; a jelszó elvesztése mindennek az elvesztését jelenti.
  • A init létrehozza a repositoryt, a backup snapshotot készít, a snapshots megjeleníti őket.
  • A forget a --keep-* opciókkal meghatározza, mit őriz meg; az adatokat csak a prune (vagy a --prune) takarítja el ténylegesen. Próbálja ki a --dry-run opcióval.
  • A check (a --read-data-subset opcióval) ellenőriz, a restore --target egy külön mappába állít vissza, a mount segítségével körülnézhet.
  • Automatizáljon időzítővel és értesítéssel, és legalább egy repositoryt tartson a szerver hatókörén kívül (append-only).

Kvíz

1. Mi történik, ha a restic forget --keep-daily 7 parancsot a --prune opció nélkül futtatja?



2. A restic-repository jelszava csak a szerveren lévő /root/.restic-wachtwoord fájlban van meg. A szerver elveszett. Mi a teendő?



3. Miért a /tmp/terug mappába állít vissza egy mentést, és miért nem közvetlenül az eredeti helyére?



4. Mit ad hozzá a restic check --read-data-subset=5% egy egyszerű restic check parancshoz képest?



5. Egy támadó, aki átveszi a webszerverét, a mentőszkripten keresztül a restic forget --prune parancsot is futtathatja. Mi véd ez ellen?



Feladat

Feladat Z8.2: Mi marad meg a forget után? A restic-snapshots.txt mintafájlban egy snapshotlista és egy megőrzési séma található. Határozza meg, mely snapshotok maradnak meg a restic forget futtatása után ezzel a sémával. A program a rögzített megoldókulccsal veti össze a válaszát.

Z8.2. feladat: Mi marad meg a forget után?

A feladathoz tartozó fájl: restic-snapshots.txt





Amit beír, és amit találunk, azt nem tároljuk. A böngészője megjegyzi a válaszait és azt, hogy teljesítette e a feladatot. Ha bejelentkezett, a Fiókomban csak azt tároljuk, hogy a feladat (majdnem) helyes volt; ott ezt is törölheti.

Feladat O8.2: Visszaállítási teszt. Hozzon létre a saját szerverén egy restic-repositoryt a szerveren kívül, készítsen mentést a /etc könyvtárról és az adatairól, majd állítson vissza egy mappát a /tmp/terug helyre. Hasonlítsa össze a diff paranccsal, jegyezze fel, mennyi ideig tartott, és válaszolja meg, hol tárolja a jelszavát és a tárhely hozzáférési adatait a szerveren kívül.

O8.2. feladat: Visszaállítási teszt

Ezt a feladatot saját maga végzi el, senki nem ellenőrzi. Pipálja ki, amit elvégzett, és jelölje meg a feladatot elvégzettként.




A pipái és jegyzetei csak ebben a böngészőben maradnak meg, sehova nem küldjük el őket. Ha bejelentkezett, a Fiókomban csak azt tároljuk, hogy elvégezte a feladatot.

További olvasnivaló

Egy pillanat…

Domainek beállítása

Állítsa be domainenként a névszervereket, a tárhelyhez való kapcsolást és azt, hogy ki legyen a tulajdonos.

Domainek betöltése…