feat(PROJ-66): Keyfile-Escrow-Hinweis bei Installation ausgeben
install.sh gibt das frisch generierte Keyfile nach der Erzeugung einmalig aus (beide Installationspfade), mit Aufforderung es sofort in einen Passwort-Safe (Bitwarden) zu verschieben. Backup ist ohne dieses Keyfile wertlos — der Hinweis darf nicht vom "mach ich später" verschluckt werden, da der Wert danach nirgends mehr sichtbar abrufbar ist.
This commit is contained in:
@@ -269,6 +269,17 @@ selbst nicht verfügbar oder kompromittiert ist.
|
|||||||
- Kein Blocker für die restlichen ACs — unabhängig von PBS/App-Backup
|
- Kein Blocker für die restlichen ACs — unabhängig von PBS/App-Backup
|
||||||
umsetzbar, kleiner Zusatzschritt (Bitwarden-Eintrag anlegen, kein Code).
|
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
|
## Aufbewahrungsdauer / Rotation
|
||||||
|
|
||||||
- Vorschlag: Tägliche Backups, Rotation nach Generationen-Prinzip:
|
- Vorschlag: Tägliche Backups, Rotation nach Generationen-Prinzip:
|
||||||
|
|||||||
+19
@@ -16,6 +16,23 @@ info() { echo -e "${BLUE}[..]${NC} $*"; }
|
|||||||
warn() { echo -e "${YELLOW}[!!]${NC} $*"; }
|
warn() { echo -e "${YELLOW}[!!]${NC} $*"; }
|
||||||
die() { echo -e "${RED}[ERR]${NC} $*" >&2; exit 1; }
|
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"
|
[[ $EUID -eq 0 ]] || die "Bitte als root ausführen: sudo bash install.sh"
|
||||||
|
|
||||||
# ── OS-Prüfung: nur Debian 13 (trixie) ──────────────────────────────────────
|
# ── 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"
|
openssl rand -base64 32 > "$CONFIG_DIR/keyfile"
|
||||||
chmod 400 "$CONFIG_DIR/keyfile"
|
chmod 400 "$CONFIG_DIR/keyfile"
|
||||||
log "Keyfile generiert: $CONFIG_DIR/keyfile"
|
log "Keyfile generiert: $CONFIG_DIR/keyfile"
|
||||||
|
print_keyfile_escrow_warning "$CONFIG_DIR/keyfile"
|
||||||
else
|
else
|
||||||
log "Keyfile existiert bereits – wird nicht überschrieben"
|
log "Keyfile existiert bereits – wird nicht überschrieben"
|
||||||
fi
|
fi
|
||||||
@@ -451,6 +469,7 @@ install_native() {
|
|||||||
chmod 400 "$CONFIG_DIR/keyfile"
|
chmod 400 "$CONFIG_DIR/keyfile"
|
||||||
chown "$AM_USER:$AM_USER" "$CONFIG_DIR/keyfile"
|
chown "$AM_USER:$AM_USER" "$CONFIG_DIR/keyfile"
|
||||||
log "Keyfile generiert: $CONFIG_DIR/keyfile"
|
log "Keyfile generiert: $CONFIG_DIR/keyfile"
|
||||||
|
print_keyfile_escrow_warning "$CONFIG_DIR/keyfile"
|
||||||
else
|
else
|
||||||
log "Keyfile existiert bereits – wird nicht überschrieben"
|
log "Keyfile existiert bereits – wird nicht überschrieben"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user