# Sicherheitsmodell ## Grundsatz Das lokale Modell erhält nur die Werkzeuge, die es für den aktuellen Modus benötigt. Lokalität allein ersetzt keine Zugriffskontrolle. ## MCP-Profile Empfohlene Trennung: | Modus | Werkzeuge | |---|---| | Standard | Websuche, harmlose lokale Hilfsfunktionen | | Home Assistant | HA-Administration plus Websuche | | ARR | Sonarr/Radarr plus Websuche | | Unraid Read-only | Diagnose, Logs, Status | | Unraid Write | nur bewusst aktiviert, mit Vorschau und Approval Ticket | ## Nicht im Standardprofil - allgemeine Shell - `python3`, `ssh`, `scp` oder beliebiges `curl` - Container erstellen, verändern oder löschen - Registry-/Storage-Direktzugriff - uneingeschränkte Dateisuche ## Secrets - Keine Secrets in Git, Prompts, MCP-Schemas oder Logs. - Konfiguration referenziert nur Namen lokaler Environment-Dateien. - Dateien mit Secrets: Eigentümer root oder Dienstbenutzer, Modus `0600`. - Tokens werden pro Dienst getrennt und minimal berechtigt. - Ein Secret Broker oder Wrapper stellt Verbindungen her, ohne Tokens an das Modell zurückzugeben. ## Netzwerk - Port 8080 nur localhost oder administratives VLAN. - Clients verwenden Port 8081. - Whisper, XTTS, TinySearch und SearXNG nur localhost. - Firewall erlaubt nur bekannte Quellnetze. - Externe Suche erhält nur die tatsächliche Suchanfrage, keine Chat-Historie. ## Router-Grenze - Alle fachlichen Endpunkte verlangen einen mindestens 32 Zeichen langen, zufälligen Router-Key. Der Dienst startet ohne gültigen Key nicht. - `/health` und `/ready` sind die einzigen anonymen Endpunkte und geben nur groben Betriebszustand aus. - Authentifizierungsheader werden niemals an llama.cpp weitergereicht. - Remote-Bild-URLs sind standardmäßig gesperrt. Data-URLs werden auf MIME-Typ, Base64-Gültigkeit und 20 MiB Maximalgröße geprüft. - Die Zahl gleichzeitiger Requests ist begrenzt; große Uploads sind global begrenzt und generierte Bilder werden nach Alter, Anzahl und Größe bereinigt. - Crash-Recovery beendet keine PID nur aufgrund einer Zahl, sondern verlangt zusätzlich einen erwarteten Prozessmarker in `/proc//cmdline`. ## Schreibaktionen Jede destruktive oder persistente Aktion verwendet: 1. read-only Bestandsaufnahme, 2. exakte Vorschau, 3. an diese Vorschau gebundenes Approval Ticket, 4. unveränderte Ausführung, 5. anschließende Verifikation. ## Repository-Prüfung vor jedem Push - Suche nach Token-, Passwort- und Private-Key-Mustern. - Keine `.env`, Zertifikate, Logs, Bilder, Audio oder Modellartefakte. - Keine echten internen API-Schlüssel in Beispielen.