diff --git a/features/PROJ-66-backup-strategie.md b/features/PROJ-66-backup-strategie.md index d80f453..1cb289f 100644 --- a/features/PROJ-66-backup-strategie.md +++ b/features/PROJ-66-backup-strategie.md @@ -269,6 +269,17 @@ selbst nicht verfügbar oder kompromittiert ist. - Kein Blocker für die restlichen ACs — unabhängig von PBS/App-Backup umsetzbar, kleiner Zusatzschritt (Bitwarden-Eintrag anlegen, kein Code). +**Umgesetzt (2026-07-04):** `install.sh` gibt das frisch generierte Keyfile +direkt nach der Erzeugung einmalig auf der Konsole aus (`print_keyfile_escrow_warning()`, +beide Installationspfade — Docker- und Native-Modus), mit deutlichem Hinweis, +den Wert sofort in einen Passwort-Safe zu verschieben. Verhindert, dass der +Escrow-Schritt vom Bequemlichkeitsgrund "mach ich später" verschluckt wird — +der Wert steht sonst nirgends mehr sichtbar zur Verfügung, sobald die +Installations-Shell geschlossen ist (Keyfile-Datei selbst ist `chmod 400`, +nicht mehr casual auslesbar). Bereits bestehende Installationen (Keyfile +existiert schon) bekommen die Ausgabe NICHT erneut — dafür manuell +`cat /etc/archivmail/keyfile` einmalig ausführen und in Bitwarden nachtragen. + ## Aufbewahrungsdauer / Rotation - Vorschlag: Tägliche Backups, Rotation nach Generationen-Prinzip: diff --git a/install.sh b/install.sh index 2b2b0e0..6f03c9f 100755 --- a/install.sh +++ b/install.sh @@ -16,6 +16,23 @@ info() { echo -e "${BLUE}[..]${NC} $*"; } warn() { echo -e "${YELLOW}[!!]${NC} $*"; } die() { echo -e "${RED}[ERR]${NC} $*" >&2; exit 1; } +# PROJ-66: Ein Backup (App-Backup oder PBS/Snapshot) ist ohne dieses Keyfile +# wertlos — der Store bleibt Chiffretext. Der Inhalt wird EINMALIG bei der +# Generierung ausgegeben, damit er sofort in einen Passwort-Safe (z.B. +# Bitwarden Secure Note, siehe features/PROJ-66-backup-strategie.md) verschoben +# werden kann, statt sich später darauf zu verlassen, dass irgendein Backup +# das Keyfile schon mitgesichert hat. +print_keyfile_escrow_warning() { + local keyfile_path="$1" + echo + warn "WICHTIG — Keyfile jetzt sichern (Restore ist ohne dieses Keyfile unmöglich):" + echo -e "${YELLOW}$(cat "$keyfile_path")${NC}" + warn "Diesen Wert in einen separaten Passwort-Safe kopieren (z.B. Bitwarden Secure" + warn "Note, eigene Collection mit eingeschränktem Zugriff) — unabhängig von jedem" + warn "Server-Backup. Ohne Keyfile sind gesicherte Mail-Dateien nicht entschlüsselbar." + echo +} + [[ $EUID -eq 0 ]] || die "Bitte als root ausführen: sudo bash install.sh" # ── OS-Prüfung: nur Debian 13 (trixie) ────────────────────────────────────── @@ -143,6 +160,7 @@ https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_C openssl rand -base64 32 > "$CONFIG_DIR/keyfile" chmod 400 "$CONFIG_DIR/keyfile" log "Keyfile generiert: $CONFIG_DIR/keyfile" + print_keyfile_escrow_warning "$CONFIG_DIR/keyfile" else log "Keyfile existiert bereits – wird nicht überschrieben" fi @@ -451,6 +469,7 @@ install_native() { chmod 400 "$CONFIG_DIR/keyfile" chown "$AM_USER:$AM_USER" "$CONFIG_DIR/keyfile" log "Keyfile generiert: $CONFIG_DIR/keyfile" + print_keyfile_escrow_warning "$CONFIG_DIR/keyfile" else log "Keyfile existiert bereits – wird nicht überschrieben" fi