Skip to content

Restic - Rootserver als Datenablage nutzen

Restic
2 1 812
  • Wir nehmen hier in diesem Beispiel an, wir nutzen irgendwo im Netz einen Server und wollen unser Homeverzeichnis sichern. Restic funktioniert, der Server ist eingerichtet.

    Mit Restic können wir die Daten beruhigt auf den Server schieben, die Daten werden AES-256 verschlüsselt abgelegt.

    Was brauchen wir?

    • Datei /root/excludes.txt
    • Datei /root/passwd
    • Datei ~/.ssh/config

    /root/excludes.txt

    Die Datei excludes.txt beinhaltet eine Liste der Dateien, die wir nicht sichern wollen.

    .cache
    Bilder
    Downloads
    Musik
    Videos
    

    Je nach Vorlieben kann das dann entsprechend eingestellt werden. Die nächste Datei ist ~/.ssh/config

    ~/.ssh/config

    Host <ip address>
            User <user name>
            Port <port>
    

    Hintergrund für diese Datei. Man kann Restic keinen Port mit übergeben. Wenn man nun, was sinnvoll ist, den Standardport für SSH verlegt habt, dann benötigt man diese Datei damit Restic richtig funktioniert. Das könnt Ihr hier nachlesen.

    /root/passwd

    Hier kommt das Paswort rein, was wir dem Script mit übergeben. So mit taucht das Passwort auch nicht z.B. in htop auf!!

     Passwd12345678
    

    Wir starten mit der Erstellung.

    Restic Init

     root@frank-MS-7A34:~# restic -r sftp:<ip address>:/<user>/backup/home init
     enter password for new repository: 
     enter password again: 
     created restic repository fffffffffffffa at sftp:<ip address>:/<user>/backup/home
     
     Please note that knowledge of your password is required to access
     the repository. Losing your password means that your data is
     irrecoverably lost.
    

    Erledigt. Die Einrichtung ist abgeschlossen.

    Restic Backup

    root@frank-MS-7A34:~# restic --password-file /root/passwd -r sftp:<ip address>:/root/backup/home backup --verbose /home/frank --exclude-file=excludes.txt
    open repository
    repository fffffffffff opened successfully, password is correct
    created new cache in /root/.cache/restic
    lock repository
    load index files
    start scan on [/home/frank]
    start backup on [/home/frank]
    scan finished in 3.888s: 52480 files, 9.811 GiB
    <gekürzt!>
    

    Das oben ist nur der Anfang, danach sichert Restic die ganzen Daten auf dem Rootserver. Das Ganze als kleines Script.

    Script

    #!/bin/bash
    # Script um mit Restic Daten automatisiert zu sichern!
    
    #Was soll gesichert werden?
    backup_pfad=/home/frank
    
    #Programm Start
    restic --password-file /root/passwd -r sftp:<ip address>:/root/backup/home backup --verbose $backup_pfad --exclude-file=excludes.txt
    

    Nix besonderes, aber funktioniert. Das Script dann mittels

    crontab -e
    

    als User root eintragen und fertig!

    Für Anwender, die das nicht als User Root laufen lassen wollen, gibt es hier eine Erklärung wie man es macht. (Ganz unten)

  • Ok, das erste Backup dauert immer was länger 😉 In meinem Fall 5 Std. 16 Minuten.

    Files:       33408 new,     0 changed,     0 unmodified
    Dirs:            1 new,     0 changed,     0 unmodified
    Data Blobs:  20849 new
    Tree Blobs:      2 new
    Added to the repo: 6.278 GiB
    
    processed 33408 files, 8.604 GiB in 5:16:03
    snapshot 5beg1cb3 saved
    

    Aber, das Schöne ist, das die Backups inkrementell angelegt werden. Das nächste geht schneller 🙂

    open repository
    repository 3gg202a2 opened successfully, password is correct
    lock repository
    load index files
    using parent snapshot 5beg1cb3
    start scan on [/home/frank]
    start backup on [/home/frank]
    scan finished in 3.791s: 33788 files, 8.611 GiB
    
    Files:         496 new,    74 changed, 33218 unmodified
    Dirs:            0 new,     1 changed,     0 unmodified
    Data Blobs:    292 new
    Tree Blobs:      2 new
    Added to the repo: 43.661 MiB
    
    processed 33788 files, 8.611 GiB in 2:15
    snapshot fag41bf7 saved
    

    Eine tägliche Sicherung sollte dann wohl reichen.

  • 0 Stimmen
    1 Beiträge
    1 Aufrufe
    Niemand hat geantwortet
  • AI Bots aussperren

    Linux linux block-ai nginx
    2
    0 Stimmen
    2 Beiträge
    210 Aufrufe
    FrankMF
    Wir können das noch für eine sanfte Methode erweitern, das ist die Datei robots.txt, wo man sich in alten Zeiten mal dran hielt. Einige Bots machen das, andere nicht. Praktisch, das o.g. Projekt bietet diese Datei auch an. Dann werden wir das kurz mal mit einbauen. ai-block.sh #!/bin/bash # Script um AI-Bots zu blocken # https://github.com/ai-robots-txt/ai.robots.txt/tree/main mkdir /root/AI-test cd /root/AI-test ## Daten holen curl -O https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/master/nginx-block-ai-bots.conf curl -O https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/master/robots.txt ## Daten in nginx einbauen mv nginx-block-ai-bots.conf /etc/nginx/blocklists/ mv robots.txt /var/www/html ## NGINX neustarten systemctl restart nginx.service Damit das in nginx funktioniert. Den Server Block um folgendes erweitern. # Serve robots.txt directly from Nginx location = /robots.txt { root /var/www/html; try_files $uri =404; } Kurzer Test https://<DOMAIN>/robots.txt Ergebnis User-agent: AI2Bot User-agent: Ai2Bot-Dolma User-agent: Amazonbot User-agent: anthropic-ai User-agent: Applebot User-agent: Applebot-Extended User-agent: Brightbot 1.0 User-agent: Bytespider User-agent: CCBot User-agent: ChatGPT-User User-agent: Claude-Web User-agent: ClaudeBot User-agent: cohere-ai User-agent: cohere-training-data-crawler User-agent: Crawlspace User-agent: Diffbot User-agent: DuckAssistBot User-agent: FacebookBot User-agent: FriendlyCrawler User-agent: Google-Extended User-agent: GoogleOther User-agent: GoogleOther-Image User-agent: GoogleOther-Video User-agent: GPTBot User-agent: iaskspider/2.0 User-agent: ICC-Crawler User-agent: ImagesiftBot User-agent: img2dataset User-agent: imgproxy User-agent: ISSCyberRiskCrawler User-agent: Kangaroo Bot User-agent: Meta-ExternalAgent User-agent: Meta-ExternalFetcher User-agent: OAI-SearchBot User-agent: omgili User-agent: omgilibot User-agent: PanguBot User-agent: Perplexity-User User-agent: PerplexityBot User-agent: PetalBot User-agent: Scrapy User-agent: SemrushBot-OCOB User-agent: SemrushBot-SWA User-agent: Sidetrade indexer bot User-agent: Timpibot User-agent: VelenPublicWebCrawler User-agent: Webzio-Extended User-agent: YouBot Disallow: /
  • Crowdsec - Ein fail2ban Ersatz?

    Linux crowdsec linux fail2ban
    2
    1
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    FrankMF
    Ich kann jetzt hier von meiner ersten Erfahrung berichten und wie CrowdSec mich gebannt hat Was war passiert? Ich war gestern sehr intensiv mit der Konfiguration von Nextcloud <-> Collabora Online beschäftigt. Nachdem ich irgendwie nicht weiterkam habe ich mich der Erstellung eines Dokumentes gewidmet. Nach einiger Zeit war die Nextcloud nicht mehr erreichbar. Ok, hatte ich bei der Konfiguration auch schon mal, den Server einmal neugestartet und fertig. Doch jetzt kam es, Server neugestartet - hilft nicht. Gut, schauen wir mal nach, Der SSH Login ging auch nicht Jetzt war guter Rat gefragt. Zu diesem Zeitpunkt ging ich noch davon aus, das auf diesem Server kein CrowdSec installiert war, sondern fail2ban. Und fail2ban hatte eine sehr kurze Bantime vom 10M. Also blieb wohl nur noch das Rescue System von Hetzner. [image: 1694411392066-488866bc-3dcf-4abc-9e98-6107d65aa4c7-grafik.png] Da hatte ich ja so gut wie gar keine Erfahrung mit. Also mal kurz den Nico angetriggert und es kam folgender Link. https://docs.hetzner.com/de/robot/dedicated-server/troubleshooting/hetzner-rescue-system/ Das Laufwerk war schnell bestimmt und schnell nach /tmp gemountet. Danach musste man sich noch mit chroot in diese Umgebung anmelden. chroot-prepare /mnt chroot /mnt Nachdem das klappte, habe ich eben fail2ban disabled. sysmctl disable fail2ban Danach das Rescue beendet. Der Server startete wieder und ich kam wieder per SSH drauf. Puuh. Bei meiner ersten Kontrolle fiel mir was auf root@:~# pstree systemd─┬─2*[agetty] ├─atd ├─cron ├─crowdsec─┬─journalctl │ └─8*[{crowdsec}] ├─crowdsec-firewa───9*[{crowdsec-firewa}] Wie? Da läuft CrowdSec? Da ich dabei bin die Server auf CrowdSec umzustellen, war das wohl hier schon gemacht, aber leider nicht vernünftig. fail2ban hätte mindestens disabled werden müssen und in meiner Dokumentation war das auch nicht enthalten. 6 setzen! CrowdSec besteht ja aus zwei Diensten, CrowdSec und dem Firewall-Bouncer. Der CrowdSec Dienst lief aber nicht, der war irgendwie failed. Ok, starten wir ihn und schauen was passiert. Nachdem er gestarte war mal die Banliste angeschaut. cscli decisions list ergab diesen Eintrag. 2551501 │ crowdsec │ Ip:5.146.xxx.xxx │ crowdsecurity/http-crawl-non_statics │ ban │ │ │ 53 │ 1h5m55.391864693s │ 1671 Meine IP war gebannt. Dann wissen wir ja , woher die Probleme kamen. cscli decisions delete --id 2551501 Nach Eingabe war der Ban entfernt. Na gut, aber da ich aktuell immer noch an der richtigen Konfiguration von NC <-> CODE bastel, könnte das ja wieder passieren. Was machen? Kurz gegoogelt. Es gibt eine Whitelist. Aha! /etc/crowdsec/parsers/s02-enrich/whitelists.yaml name: crowdsecurity/whitelists description: "Whitelist events from private ipv4 addresses" whitelist: reason: "private ipv4/ipv6 ip/ranges" ip: - "127.0.0.1" - "::1" - "5.146.XXX.XXX" cidr: - "192.168.0.0/16" - "10.0.0.0/8" - "172.16.0.0/12" # expression: # - "'foo.com' in evt.Meta.source_ip.reverse" Danach den Dienst neustarten. Jetzt hoffen wir mal, das es hilft. Zum Schluss noch was, was mir aufgefallen war und was mich auch sehr verwirrt hatte. CrowdSec hatte wegen einem crowdsecurity/http-crawl-non_statics gebannt. Dadurch konnte ich meine subdomain.<DOMAIN> nicht erreichen. Ok, logisch, wenn der Ban von da ausgeht. Ich konnte aber gleichzeitig eine andere subdomain mit derselben <DOMAIN> auch nicht erreichen. Komplett verwirrte es mich dann, als ich eine andere <DOMAIN> auf dem selben Server erreichen konnte. Und zum Schluss ging auch der SSH nicht. Also, wieder viel gelernt..
  • Debian Bookworm 12 - Firefox

    Linux debian firefox linux
    1
    1
    0 Stimmen
    1 Beiträge
    480 Aufrufe
    Niemand hat geantwortet
  • 2,5G

    Linux linux
    2
    1
    0 Stimmen
    2 Beiträge
    239 Aufrufe
    FrankMF
    Gutes Video zum Zyxel Switch, was ich vorher gar nicht kannte. Hätte meine Entscheidung aber auch nicht verändert. https://www.youtube.com/watch?v=59I-RlliRms
  • Debian 10 - Terminal wechseln

    Linux linux
    2
    0 Stimmen
    2 Beiträge
    709 Aufrufe
    FrankMF
    Das eigentliche Problem scheint zu sein, das bei der Installation folgendes fehlte. root@debian:~# apt install gnome-terminal Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Die folgenden zusätzlichen Pakete werden installiert: gnome-terminal-data nautilus-extension-gnome-terminal Die folgenden NEUEN Pakete werden installiert: gnome-terminal gnome-terminal-data nautilus-extension-gnome-terminal 0 aktualisiert, 3 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen 2.867 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 9.971 kB Plattenplatz zusätzlich benutzt. Möchten Sie fortfahren? [J/n] Nach der Deinstallation von tilix ist jetzt alles wieder so, wie ich es gewohnt bin
  • Bananian 16.04 auf einer HDD installieren incl. WLan

    BananaPi bananapi linux
    1
    4
    0 Stimmen
    1 Beiträge
    847 Aufrufe
    Niemand hat geantwortet
  • Redis Datenbank sichern

    Verschoben Redis linux redis
    1
    0 Stimmen
    1 Beiträge
    814 Aufrufe
    Niemand hat geantwortet