Fix SELinux backup execution context and probe source metadata before downtime

This commit is contained in:
admin committed 2026-09-10 15:11:10 +02:00
1 parent 5c8a7a30be
commit c0a24b63fc
9 files changed
+193 -14

No files matched your search

+34 -2
View File
@@ -54,6 +54,35 @@ flowchart TD
Dateikopien erhalten mit `rsync -aHAX --numeric-ids` Eigentümer, Modus, Symlinks, Hardlinks innerhalb einer Komponente, ACLs und Extended Attributes. Tar erhält diese Metadaten einschließlich SELinux. Plattform-/Dateisystemunterstützung ist Voraussetzung. Externe Symlink-Ziele werden nicht automatisch gesichert; absolute Symlinks als einzelne Einträge bleiben erhalten. Geräte, FIFOs und andere Spezialdateien werden von der Archivprüfung abgelehnt. Zusätzliche Pfade sind deshalb Datenverzeichnisse, kein Ersatz für ein vollständiges Systemimage.
Vor jedem Backup und bei `--check` prüft rsync das Auflisten der Quellwurzel sowie
das Übertragen ihrer Verzeichnisattribute in einen privaten temporären Prüfbereich
unter `STAGING_ROOT`. Alle Kindobjekte sind von der Attributprobe ausgeschlossen;
Datei-Inhalte werden nicht kopiert. Die Probe wird danach entfernt. Das erkennt
beispielsweise eine SELinux-Ablehnung von `opendir` oder `relabelfrom` vor dem
Wartungsmodus. Es belegt nicht den Zugriff auf jede untergeordnete Datei oder
jedes dort abweichende Attribut. Der echte Kopierlauf bleibt strikt fehlergeprüft.
Die rsync-Kindprozesse erhalten keine geerbten Update-/Backup-Sperrdeskriptoren;
der übergeordnete Prozess hält seine Sperren unverändert weiter.
Backup-Dienst und abgekoppelter Update-Auftrag starten über `/bin/bash` mit
`SELinuxContext=system_u:system_r:unconfined_service_t:s0`. Das erlaubt dem
privilegierten Backup, unterschiedliche Web-, Mail- und Home-Labels zu lesen
und Sicherheitsattribute zu erhalten. **Diese Prozesse und ihre Kindprozesse
sind damit bewusst nicht durch SELinux eingeschränkt**; die übrigen Dienste
bleiben ihrer bestehenden Policy unterworfen. Das ist keine eigens eingeschränkte
Backup-Policy. Es werden keine globalen rsync-Booleans, Quell-Labels oder
Dateizugriffsrechte geändert. Ein verweigerter Kontext wird nicht mit dem
systemd-Präfix `-` übergangen. Bei deaktiviertem SELinux ignoriert systemd die
Kontexteinstellung.
Auf Gemini wurde am 10.09.2026 unter Enforcing die Startkette Bash → rsync mit
diesem Kontext und erfolgreichem Auflisten von `/var/www/html` bestätigt. Der
direkte Start von rsync als Unit-Einstiegspunkt scheiterte dagegen mit 203/EXEC;
deshalb verwenden beide Units ausdrücklich Bash. Dieser Lesetest bestätigt
noch keine vollständige Attributübertragung oder Sicherung. Referenzen:
[systemd SELinuxContext](https://github.com/systemd/systemd/blob/v256/man/systemd.exec.xml),
[Fedora-SELinux-Domain und Einstiegspunkte](https://github.com/fedora-selinux/selinux-policy/blob/rawhide/policy/modules/system/unconfined.te).
Die Kompression schreibt direkt aus tar in `.partial`-Dateien. Erst erfolgreiche Pipelines werden umbenannt. zstd nutzt standardmäßig Stufe 6 und zwei Threads. `sync -f` vor Fortsetzung bzw. Retention fordert die Persistierung des lokalen Satzes an; Hardware-/Storagefehler bleiben eine eigene Ebene.
## Format und Komponenten
@@ -331,10 +360,13 @@ Die Entfernung der drei DB-Dateien aus dem aktuellen Baum löscht deren Historie
Reproduzierbar mit `tests/Dockerfile` und `tests/run.sh`. Der Container bekommt das Repository nur lesbar und benötigt während der Tests kein Netzwerk. Die MariaDB läuft ohne TCP-Port in einem temporären Verzeichnis. systemd/occ werden simuliert; alle eigentlichen Archive, Dateikopien, Dumps/Imports und Crypt-Operationen sind real.
Ergebnis des lokalen Abschlusslaufs am 10.09.2026: **41 Tests erfolgreich**, Shell-Syntax und ShellCheck ohne Befund. Testumgebung: Debian 13.6, MariaDB 11.8.6, rclone 1.60.1-DEV (Distributionspaket), ShellCheck 0.10.0. Diese Versionsangaben beschreiben die Testumgebung, keine Empfehlung für die Produktivversion.
Ergebnis des lokalen Abschlusslaufs am 10.09.2026: **44 Tests erfolgreich**, Shell-Syntax und ShellCheck ohne Befund. Testumgebung: Debian 13.6, MariaDB 11.8.6, rclone 1.60.1-DEV (Distributionspaket), ShellCheck 0.10.0. Diese Versionsangaben beschreiben die Testumgebung, keine Empfehlung für die Produktivversion.
Geprüfte Fälle umfassen:
- Verweigerter rsync-Quellzugriff bricht das Update vor Installation und Dienst-Stopp ab.
- Verweigerte Verzeichnisattribute werden vor Wartungsmodus erkannt; der private Prüfbereich wird entfernt.
- Attributprobe kopiert keine Kindobjekte; rsync erbt bei Prüfung, Backup und Restore keine Update-/Backup-Sperrdeskriptoren.
- Fehlendes globales `RELOAD` bei eingeschränktem Konto: Vorprüfungsabbruch ohne Installation/Writer-Stopp, anschließend erfolgreicher Paketlauf nach gezieltem Grant. Aktive verschachtelte MariaDB-Rollen werden anerkannt, inaktive Rollen abgewiesen.
- Fehlender Zugriff auf MariaDB-Routinen-Metadaten vor Wartungsmodus erkannt; nach gezielter Berechtigung tatsächlicher Dump mit gespeicherter Prozedur geprüft.
- Fehlender Mailstore ohne Live-Änderung, explizite Pfadkorrektur, Homes-only-Update samt tatsächlichem Maildatei-Restore und Ablehnung unvollständiger Home-Konfigurationen.
@@ -354,4 +386,4 @@ Geprüfte Fälle umfassen:
- Abgewiesene systemd-Übergabe, zurückgezogene Freigabe bei bereits eingereihtem Auftrag und persistente Fehlerprotokolle bei Sperr-Timeout; jeweils ohne Installationsänderung oder Timer-Stopp.
- Ausdrückliche Cron-Policy und Writer-Wartezeit/Timeout.
**Serverabnahme steht separat aus:** echte Rocky-Linux-10-Umgebung, SELinux-/ACL-Verhalten auf den verwendeten Dateisystemen, installierte Nextcloud-/Gitea-Versionen, vollständige Writer-/Pfadliste, Berechtigungen des echten DB-Backupaccounts, tatsächlicher OneDrive-Upload großer Archive, Laufzeit/Speicherbedarf und fachliche Restore-Probe. Es wurde kein Produktivbackup ausgeführt und keine Serverinstallation verändert.
**Serverabnahme steht separat aus:** SELinux-/ACL-Verhalten beim vollständigen Kopieren auf den verwendeten Dateisystemen, installierte Nextcloud-/Gitea-Versionen, vollständige Writer-/Pfadliste, tatsächlicher OneDrive-Upload großer Archive, Laufzeit/Speicherbedarf und fachliche Restore-Probe. Die Entwicklungstests verändern keinen Produktivserver. Vom Betreiber ausgeführte Paketläufe haben die Installation auf Gemini bereits aktualisiert; alle drei DB-Dumps waren erfolgreich. Eine vollständige erfolgreiche Sicherung und fachliche Wiederherstellung sind noch nicht bestätigt.