restic-backup-suite: Sicherheit
Sicherheit bei restic-backup-suite: wo Repository-Passwort, SSH-Schlüssel und Datenbank-Passwörter liegen, Dateirechte, temporäre Dumps und was beim Verlust des Passworts passiert.
Sicherheit
Wo Zugangsdaten liegen
| Geheimnis | Ablage | Rechte |
|---|---|---|
| Repository-Passwort | Datei aus RESTIC_PASSWORD_FILE (Vorlage: /etc/restic/password.txt) |
von Dir gesetzt, empfohlen 400 oder 600 |
| SSH-Schlüssel für SFTP | Datei aus SSH_KEY_FILE, das Script setzt chmod 600 |
600 |
| Datenbank-Passwörter | Im Container (Umgebungsvariable). In config.sh steht nur der Name der Variable |
|
| S3/B2-Zugangsdaten | Falls verwendet, in der Umgebung, zum Beispiel per export in config.sh |
600 |
Die Scripts speichern keine Passwörter in Log-Dateien oder im Repository-Verzeichnis des Klons.
Dateirechte durch den Installer
| Pfad | Rechte |
|---|---|
/etc/restic/ |
700 |
/etc/restic/config.sh |
600 |
/etc/restic/config.example.sh |
640 |
/var/log/restic/ |
750 |
| Marker-Datei | 600 |
| Temporäre Dump- und Restore-Verzeichnisse | 700 |
config.sh wird als Bash-Code ausgeführt. Wer sie schreiben kann, führt Code als root aus. Halte sie für andere Benutzer unlesbar und unbeschreibbar. Im Klon-Verzeichnis ist config.sh per .gitignore vom Commit ausgeschlossen.
Das Repository-Passwort
- restic verschlüsselt das Repository. Ohne das Passwort sind die Backups unbrauchbar, es gibt keine Wiederherstellung.
- Liegt
/etcinBACKUP_PATHS(so in der Vorlage), landet auch/etc/restic/password.txtim Backup. Das hilft Dir nicht, denn ohne Passwort kommst Du nicht an das Backup. Bewahre das Passwort zusätzlich getrennt vom Server auf. install.sh --uninstalllöscht auf Nachfrage/etc/restic. Liegt die Passwort-Datei dort, ist sie danach weg.
SSH-Konfiguration
Bei SFTP-Repositories schreibt backup.sh einen Host-Eintrag mit IdentitiesOnly yes, PreferredAuthentications publickey, PasswordAuthentication no, ServerAliveInterval 60, ServerAliveCountMax 3 und ConnectTimeout 30. Es gibt keine Passwort-Anmeldung. Die Host-Key-Prüfung bleibt die Standardeinstellung von SSH, der Verbindungstest läuft mit BatchMode=yes und scheitert bei unbekanntem Host-Key.
Datenbank-Dumps
- Dumps liegen kurzzeitig unverschlüsselt in
/tmp/restic-db-dump-XXXXXX(Rechte 700) und werden beim Beenden gelöscht. Im Repository sind sie verschlüsselt. - Bei Docker-MariaDB/MySQL übergibt das Script das Passwort als
-p-Argument anmariadb-dumpim Container. Es ist dort für die Dauer des Dumps in der Prozessliste sichtbar. - Beim nativen Dump nutzt das Script den Zugang des aufrufenden root-Benutzers ohne Passwort.
Restore
Wiederhergestellte Dateien liegen im Restore-Verzeichnis (Rechte 700) und bleiben dort, bis Du es löschst. Entferne es nach Gebrauch, wenn es sensible Daten enthält.