SECSTACK
SECSTACK

GNU/Linux ve Siber Güvenlik üzerine dökümanlar.

SECSTACK
Author

Share


Tags


.gz text aramak arkime arkime kurulumu bitwarden bitwarden kurulum bitwarden ubuntu canonical livepatch canonical livepatch yapılandırma centos grub rescue centos nfs yapılandırma centos samba yapılandırma chronograf chrony chrony ntp chrony ntp server chrony ntp server kurulumu chrony nts chrony nts yapılandırma dns over tls dns server kurulumu dnssec ed25519 ed25519 openssh ed25519 ssh full packet capture grafana grafana ile prometheus izleme grub rescue grub troubleshooting grub yeniden kurulumu influxdb iptables nftables geçişi iptables nftables kural geçişi irc server kapacitor kernelcare uchecker knot resolver knot resolver dns kurulumu knot resolver kurulumu linux nts server kurulum lvm lvm disk genişletme lvm genişletme lvm ikincil disk genişletme lvm ikincil genişletme lvm var olan disk genişletme lvm var olan genişletme moloch moloch kurulumu network time security nfs nfs yapılandırma nftables ngircd ngircd server ngircd ubuntu ntp server kurulumu nts nts server kurulum openvpn openvpn hardening ossec ossec hids ossec kurulumu outdated shared libraries prometheus restic restic kullanımı rsync rsync dosya transfer rsync kullanımı rsyslog rsyslog log yönlendirme rsyslog uygulama log yönlendirme samba samba yapılandırma scp scp dosya transfer scp kullanımı selks selks kurulumu setperms setugids sftp sftp kullanımı smbclient smbclient kullanımı ssh anahtar oluşturma ssh key oluşturma sshfs sshfs kullanımı sshfs nasıl kullanılır sshuttle stubby stubby kurulumu stubby yapılandırması suricata suricata kurulumu systemd systemd service hardening systemd-resolved systemd-resolved dns over tls systemd-resolved dnssec telegraf tick stack tick stack kurulumu ubuntu nfs yapılandırma ubuntu samba yapılandırma uchecker unbound unbound dns unbound dns kurulumu unbound forwarding dns vpn over ssh vuls vuls vulnerability scanner vuls vulnerability scanner kurulumu zcat zgrep zmore

Restic ile Verimli Yedekleme

restic

Restic, Go ile geliştirilmiş bir yedekleme aracıdır. *nix ve Windows platformlarda kullanılabilmektedir. Terminoloji olarak repository ve snapshot kavramlarını kullanmaktadır.

Yedeklerin tutulduğu alan repository olarak tanımlanmıştır. Snapshot ise alınan her bir yedek için oluşturulan anlık görüntü diyebiliriz. Oluşturulan her repository için öntanımlı olarak AES-256 encryption uygulanmaktadır. Amazon Simple Storage Service (Amazon S3), OpenStack Swift, BackBlaze B2, Google Cloud Storage, Microsoft Azure Blob Storage vb. object storage servisleri ile entegrasyon desteği bulunmaktadır.

BSD 2-Clause altında yayınlamaktadır. Anlatım Ubuntu Server 20.04.1 LTS üzerinde yapılmaktadır.

Kurulum

Paket yöneticisinden restic paketini yüklüyoruz.

# apt install restic

Kullanım

/mnt/storage dizinine mount ettiğim bir storage alanım bulunmaktadır. Yedekleri storage alanında tutmak istiyorum. Storage tarafında backup adlı repository oluşturarak parolasını belirliyorum. Repository parolasını unutmamanız gerekmektedir.

# restic init -r /mnt/storage/backup
enter password for new repository: 
enter password again: 
created restic repository e0653081a3 at /mnt/storage/backup

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

Repository oluşturduğumuza göre yedeklemeyi başlatabiliriz. Yedekleyeceğiniz alanları aralarında birer boşluk bırakarak yazabilirsiniz.

# restic -r /mnt/storage/backup backup /var/www
enter password for repository: 
repository e0653081 opened successfully, password is correct
created new cache in /lab/.cache/restic

Files:        3019 new,     0 changed,     0 unmodified
Dirs:            1 new,     0 changed,     0 unmodified
Added to the repo: 441.375 MiB

processed 3019 files, 602.921 MiB in 0:03
snapshot b6a60899 saved

Yedeklemeyi tekrar başlatıyoruz. Gördüğünüz üzere ilgili dizinde herhangi bir yeni veya değiştirilmiş dosya/dizin olmadığından sadece snapshot alındı. Herhangi bir dosya/dizin yazılmadı. Bu sayede storage alanında tasarruf edildi.

# restic -r /mnt/storage/backup backup /var/www
enter password for repository: 
repository e0653081 opened successfully, password is correct

Files:           0 new,     0 changed,  3019 unmodified
Dirs:            0 new,     0 changed,     1 unmodified
Added to the repo: 0 B  

processed 3019 files, 602.921 MiB in 0:00
snapshot 2ce5a5b5 saved

Snapshot'ları listeliyoruz. Snapshot ID'leri restore için bize gerekli olacaktır.

# restic -r /mnt/storage/backup snapshots
enter password for repository: 
repository e0653081 opened successfully, password is correct
ID        Time                 Host        Tags        Paths
---------------------------------------------------------------
b6a60899  2021-02-02 19:21:03  lab                     /var/www
2ce5a5b5  2021-02-02 19:24:28  lab                     /var/www
---------------------------------------------------------------
2 snapshots

19:24:28 zamanında aldığımız yedeği restore etmek istiyoruz. Target yani yedeğin çıkarılacağı alan olarak /home/backup/www dizinini belirledik. Restore işlemini başlatıyoruz.

# restic -r /mnt/storage/backup restore 2ce5a5b5 --target /home/backup/www
enter password for repository: 
repository e0653081 opened successfully, password is correct
restoring <Snapshot 2ce5a5b5 of [/var/www] at 2021-02-02 19:24:28.779924262 +0000 UTC by lab@ubuntu> to /home/backup/www

Alınan son yedeğe dönmek için Snapshot ID kullanmak yerine latest kullanabilirsiniz.

# restic -r /mnt/storage/backup restore latest --target /home/lab/www

Snapshot kaldırmak için forget ve prune kullanabilirsiniz. forget sadece snapshot silinmesini sağlayacak fakat snapshot tarafından tutulan veriyi silmeyecektir. Verinin ayrıca silinmesini istiyorsanız prune kullanmanız gerekmektedir. 19:24:28 zamanında aldığımız snapshot ve varsa snapshot tarafından tutulan verileri siliyoruz.

# restic -r /mnt/storage/backup forget 2ce5a5b5
enter password for repository: 
repository e0653081 opened successfully, password is correct
removed snapshot 2ce5a5b5
# restic -r /mnt/storage/backup prune
enter password for repository: 
repository e0653081 opened successfully, password is correct
counting files in repo
building new index for repo
[0:00] 100.00%  92 / 92 packs
repository contains 92 packs (3029 blobs) with 442.657 MiB
processed 3029 blobs: 0 duplicate blobs, 0 B duplicate
load all snapshots
find data that is still in use for 1 snapshots
[0:00] 100.00%  1 / 1 snapshots
found 3029 of 3029 data blobs still in use, removing 0 blobs
will remove 0 invalid files
will delete 0 packs and rewrite 0 packs, this frees 0 B
counting files in repo
[0:00] 100.00%  92 / 92 packs
finding old index files
saved new indexes as [459ba41d]
remove 1 old index files
done

Repository bütünlüğünü bozacak bir müdahale olup olmadığını kontrol etmek için belirli aralıklarla bütünlük kontrolü yapabilirsiniz.

# restic check -r /mnt/storage/backup
using temporary cache in /tmp/restic-check-cache-211951237
enter password for repository: 
repository e0653081 opened successfully, password is correct
created new cache in /tmp/restic-check-cache-211951237
create exclusive lock for repository
load indexes
check all packs
check snapshots, trees and blobs
no errors were found

SFTP (SSH üzerinden) ile farklı bir sunucu üzerinde repository oluşturarak yedeklerinizi bu sunucuya aktarabilirsiniz.

# restic -r sftp:lab@192.168.1.102:/home/storage/backup init
enter password for new repository: 
enter password again: 
created restic repository 927ac686ae at sftp:lab@192.168.1.102:/home/storage/backup

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

/var/www dizini yedeğini alarak SFTP (SSH üzerinden) ile sunucuya aktarıyoruz.

# restic -r sftp:lab@192.168.1.102:/home/storage/backup backup /var/www
enter password for repository: 
repository 927ac686 opened successfully, password is correct
created new cache in /lab/.cache/restic

Files:        3022 new,     0 changed,     0 unmodified
Dirs:            1 new,     0 changed,     0 unmodified
Added to the repo: 473.565 MiB

processed 3022 files, 1.620 GiB in 0:05
snapshot 400bb9ba saved

Passwordless yaratabileceğiniz birçok yedekleme senaryosu var. Bunun için Restic Documentation size yardımcı olacaktır. Konunun içerisine environment variables, object storage servislerinin entegrasyonları, cron expressions, SSH key-based authentication vb. yedekleme senaryonuza göre gereksinimler değişeceği için yazıyı daha uzun tutmuyorum.

Author

SECSTACK

View Comments