144 lines
6.6 KiB
Markdown
144 lines
6.6 KiB
Markdown
# External Operator Runbook
|
|
|
|
Stand: 2026-06-01
|
|
|
|
Dieses Runbook schliesst die Betreiber-Aufgaben, die nicht vollstaendig aus dem
|
|
Repo automatisierbar sind: Hetzner-Account-Hygiene, Borg-Append-Only und
|
|
FRITZ!Box-Servicefenster. Keine Secret-Werte ins Repo schreiben.
|
|
|
|
## 1. Vorher pruefen
|
|
|
|
Auf dem Unraid-Host:
|
|
|
|
```bash
|
|
bash /mnt/user/services/homelab-infra/ops/maintenance/check-external-operator.sh
|
|
```
|
|
|
|
Erwarteter Stand vom 2026-06-01:
|
|
|
|
- FRITZ!Box 7590 meldet FRITZ!OS `154.08.25`.
|
|
- FRITZ!Box IPv6-Firewall meldet `FirewallEnabled=1`; `InboundPinholeAllowed=1` bedeutet, dass IPv6-Freigaben technisch moeglich sind und in der UI gegengeprueft werden muessen.
|
|
- Public DNS fuer `*.kaleschke.info` liefert A-Records auf `217.249.115.154`, keine AAAA-Records.
|
|
- Host hat keine globale Provider-IPv6-Adresse; sichtbar ist nur Tailscale-IPv6 `fd7a:115c:a1e0::2c01:62b2`.
|
|
- WAN-Smoke gegen die Public-IP: `443/tcp` offen, `80/tcp` und `222/tcp` geschlossen.
|
|
- FRITZ!Box-UI-Gegencheck vom 2026-06-01: Remote-HTTPS auf die FRITZ!Box ist aus, FTP/FTPS auf Speichermedien ist aus, nur `443/tcp -> 192.168.178.58` ist als WAN-Freigabe sichtbar, keine aktive IPv6-Freigabe sichtbar, UPnP-Selbstfreigaben aus.
|
|
- FRITZ!Box-Konfig-Backup vom 2026-06-01 ist extern/off-system in Vaultwarden abgelegt; Datei und Kennwort nicht ins Repo schreiben.
|
|
- Borg UI nutzt `borg 1.4.x`; Repository `appdata-critical` liegt auf Hetzner Storage Box `ssh://...your-storagebox.de:23/./hetzner_borg_appdata_critical`.
|
|
- Hetzner-Account-Hygiene vom 2026-06-01: 2FA aktiv, Recovery Key offline gedruckt, Zahlung ok.
|
|
- Storage Box vom 2026-06-01: SSH aktiv, SMB/WebDAV aus, separater Maintenance-Key in Vaultwarden, produktiver Borg-UI-Key und Maintenance-Key nach Passwort-Recovery getestet.
|
|
- Restore-Freshness: `Critical 0`, `Warnings 0`.
|
|
|
|
## 2. Hetzner Account-Hygiene
|
|
|
|
Im Hetzner-/Storage-Box-Konto pruefen und extern/off-system dokumentieren:
|
|
|
|
| Punkt | Soll |
|
|
|---|---|
|
|
| Passwort | stark, eindeutig, im Passwortmanager |
|
|
| 2FA | aktiv, Recovery Key offline auffindbar |
|
|
| Kontakt-E-Mail | aktuell und ohne Homelab-Abhaengigkeit erreichbar |
|
|
| Zahlungsweg | gueltig, Fallback bekannt |
|
|
| Storage Box | Produkt, Benutzer und Rechnungsstatus sichtbar |
|
|
| SSH/SFTP/WebDAV/SMB | nur benoetigte Protokolle aktiv |
|
|
| Recovery | Kundennummer, Login-Pfad und Support-Pfad extern notiert |
|
|
|
|
Im Repo nur das Datum der Bestaetigung dokumentieren, nie Zugangsdaten.
|
|
|
|
## 3. Borg Append-Only
|
|
|
|
Status: **bewusst nicht umgesetzt**.
|
|
|
|
Ziel der Haertung waere gewesen: Der produktive Backup-Client darf neue Archive
|
|
schreiben, aber nicht normal prune/delete/compact als unbeschraenkter Client
|
|
ausfuehren.
|
|
|
|
Hetzner dokumentiert Borg-Zugriff auf Storage Boxen inklusive `--remote-path`
|
|
fuer Borg-Versionen; fuer Borg 1.4 wird `--remote-path=borg-1.4` empfohlen.
|
|
Hetzner bestaetigt auch, dass append-only moeglich ist. Borg selbst setzt
|
|
append-only pro SSH-Key typischerweise ueber einen forced command in
|
|
`authorized_keys` um.
|
|
|
|
Getestetes Zielmodell, aber **nicht auf der produktiven Storage Box aktiv**:
|
|
|
|
```text
|
|
command="borg-1.4 serve --append-only --restrict-to-repository /home/hetzner_borg_appdata_critical",restrict ssh-ed25519 <backup-public-key> borg-ui-append-only
|
|
ssh-ed25519 <maintenance-public-key> borg-maintenance
|
|
```
|
|
|
|
Hinweise:
|
|
|
|
- Stand 2026-06-01: Ein forced-command-Versuch auf der produktiven
|
|
Storage-Box-`authorized_keys` brach die Key-Authentifizierung. Recovery
|
|
erfolgte per Storage-Box-Passwort und Upload einer bereinigten
|
|
`authorized_keys` mit Borg-UI-Key und Maintenance-Key.
|
|
- Operator-Entscheidung 2026-06-01: Append-only wird fuer dieses Homelab nicht
|
|
umgesetzt. Der zusaetzliche Schutz steht hier nicht im Verhaeltnis zum
|
|
Betriebsrisiko und zur Komplexitaet.
|
|
- Pfad auf der Storage Box vor dem Eintragen pruefen. Bei Hetzner werden Pfade
|
|
im Borg-Repo haeufig relativ als `./repo-name` verwendet; in
|
|
`authorized_keys` muss der serverseitige Pfad zur Storage-Box-Home-Struktur
|
|
passen.
|
|
- Der produktive Borg-UI-Key bleibt bewusst uneingeschraenkt, damit die
|
|
produktiven Backups laufen.
|
|
- Ein separater Maintenance-Key bleibt fuer bewusste Retention/Prune/Compact
|
|
noetig und liegt in Vaultwarden; lokale temporare Key-Dateien wurden geloescht.
|
|
- Append-only verhindert nicht, dass ein kompromittierter Client Archive als
|
|
geloescht markiert; es verhindert die unmittelbare physische Entfernung.
|
|
Nach einem Vorfall keine unbeschraenkte Schreiboperation ausfuehren, bevor
|
|
die Borg-Transaktionen bewertet wurden.
|
|
|
|
Nach Aenderung:
|
|
|
|
1. Einen regulaeren Borg-Lauf abwarten oder manuell starten.
|
|
2. `check-external-operator.sh` ausfuehren.
|
|
3. In `docs/AUDIT_2026-05-25_TODO.md` nur das Ergebnis dokumentieren.
|
|
|
|
## 4. FRITZ!Box-Servicefenster
|
|
|
|
Vor dem Fenster:
|
|
|
|
1. Familie informieren: Internet/Telefonie koennen kurz weg sein.
|
|
2. Aktuellen Repo-Stand und Borg-Freshness pruefen.
|
|
3. FRITZ!Box-Konfig exportieren: `System -> Sicherung -> Sichern`.
|
|
4. Sicherungsdatei nicht ins Repo legen; im Passwortmanager/off-system ablegen.
|
|
|
|
In der FRITZ!Box:
|
|
|
|
| Bereich | Soll |
|
|
|---|---|
|
|
| `System -> Update` | FRITZ!OS aktuell; am 2026-06-01 per TR-064 `154.08.25` beobachtet |
|
|
| `Internet -> Freigaben -> Portfreigaben` | nur `443/tcp -> 192.168.178.58:443` |
|
|
| `Internet -> Freigaben -> FRITZ!Box-Dienste` | Remote-HTTPS auf FRITZ!Box-UI aus; FTP/FTPS auf Speichermedien aus |
|
|
| IPv6-Portfreigaben | keine aktiven Freigaben; insbesondere kein `222/tcp`, kein Admin-Port |
|
|
| Selbststaendige Portfreigaben/UPnP | fuer `Kallilabcore` aus; neue Geraete nur bewusst erlauben |
|
|
| Gastnetz | bleibt aus, solange keine Gastnetz-Policy gepflegt wird |
|
|
| Ausfallschutz | bewusst aus; nur neu bewerten, wenn ein Mobilfunk-Fallback gewuenscht ist |
|
|
|
|
Nach dem Fenster:
|
|
|
|
```bash
|
|
bash /mnt/user/services/homelab-infra/ops/maintenance/check-external-operator.sh
|
|
```
|
|
|
|
Dann in `docs/NETWORK_INVENTORY.md` aktualisieren:
|
|
|
|
- FRITZ!OS-Version
|
|
- IPv6-Status
|
|
- aktive Portfreigaben
|
|
- FRITZ!Box-Dienste aus dem Internet
|
|
- Datum der Konfig-Sicherung
|
|
|
|
## Quellen
|
|
|
|
- Hetzner Docs: Storage Box Zugriff mit SSH/rsync/BorgBackup, inklusive
|
|
Borg-Versionen, `--remote-path` und Append-Only-Hinweis:
|
|
<https://docs.hetzner.com/storage/storage-box/access/access-ssh-rsync-borg/>
|
|
- BorgBackup Docs: `borg serve --append-only` und forced commands in
|
|
`authorized_keys`:
|
|
<https://borgbackup.readthedocs.io/en/stable/deployment/pull-backup.html>
|
|
- AVM FRITZ!Box Hilfe: IPv6-Portfreigaben werden separat verwaltet; eingehende
|
|
Zugriffe sind standardmaessig nicht offen:
|
|
<https://help.avm.de/fritzbox.php?hardware=145&language=en&oem=avme&set=009&topic=hilfe_internet_freigabe_ipv6>
|
|
- AVM FRITZ!Box Hilfe: Sicherung der FRITZ!Box-Einstellungen:
|
|
<https://help.avm.de/fritzbox.php?hardware=145&language=en&oem=avme&set=009&topic=hilfe_system_export>
|