# VPS Sicherheitsstatus — agentsolutions-mallorca.com **Server:** 31.70.68.228 (IONOS) **Zuletzt aktualisiert:** 2026-05-21 --- ## Öffentlich erreichbare Ports | Port | Dienst | Auth | Anmerkung | |------|--------|------|-----------| | 80 | Nginx | — | HTTP → Redirect zu HTTPS | | 443 | Nginx | SSL | Alle Subdomains über Nginx | | 9000 | Portainer | JA (eigener Login) | Docker Management | | 5678 | n8n | JA (API-Key + UI-Login) | Workflow-Automatisierung | --- ## Interne Ports (nur localhost / Docker-intern) | Port | Dienst | Binding | Nginx-Subdomain | |------|--------|---------|-----------------| | 5052 | Portal (Startseite) | 127.0.0.1 | agentsolutions-mallorca.com | | 5050 | Workspace Dashboard | 127.0.0.1 | workspace.agentsolutions-mallorca.com | | 5053 | Carlo Workspace | 127.0.0.1 | carlo.workspace.agentsolutions-mallorca.com | | 5054 | Mari Workspace | 127.0.0.1 | mari.workspace.agentsolutions-mallorca.com | | 5051 | Projects Dashboard | 127.0.0.1 | projects.agentsolutions-mallorca.com | | 5055 | Personas Service | 127.0.0.1 | — | | 3010 | Hermes Carlo | 127.0.0.1 | hermes-carlo.agentsolutions-mallorca.com | | 3011 | Hermes Mari Workspace | 127.0.0.1 | hermes-mari.agentsolutions-mallorca.com | | 8643 | Hermes Mari Gateway | 127.0.0.1 | — | | 8644 | Graphiti Service | 127.0.0.1 | graphiti.agentsolutions-mallorca.com | | 8650 | Vento | 127.0.0.1 | vento.agentsolutions-mallorca.com | | 3103 | Obsidian | 127.0.0.1 | notes.agentsolutions-mallorca.com | | 5984 | CouchDB | 127.0.0.1 | — | | 7687 | Neo4j Bolt | 127.0.0.1 | — | | 3300 | Lead Engine | 127.0.0.1 | leads.agentsolutions-mallorca.com | | 3200 | SMA-v2 | 127.0.0.1 | social.agentsolutions-mallorca.com | | 8000 | YouTube Research | 127.0.0.1 | youtube.agentsolutions-mallorca.com | | 9099 | Hermes Jobs Reset | 127.0.0.1 | — | --- ## Phase 1 Sicherheitsbereinigung — 2026-05-21 Folgende Ports waren direkt öffentlich erreichbar und wurden auf localhost begrenzt: | Port | Dienst | Problem | Maßnahme | |------|--------|---------|----------| | 5057 | Explorer | Kein Auth, alle VPS-Dateien lesbar | 127.0.0.1 in app.py | | 7474 | Mirofish Neo4j Browser | Schwaches Passwort, direkt public | 127.0.0.1 in docker-compose.yml | | 4000 | LiteLLM Admin UI | Direkt public | 127.0.0.1 in docker-compose.yml | | 5001 | Mirofish Backend | Direkt public | 127.0.0.1 in docker-compose.yml | | 3100 | Paperclip | Direkt public | 127.0.0.1 in docker-compose.yml | | 8642 | Hermes Agent (Legacy) | Direkt public | Container nicht mehr gebunden | --- ## Offene Punkte - Phase 2: Altlasten prüfen (alter Hermes Workspace, Router Container) - Phase 3: Port-Schema 5000/6000/7000/8000/9000 (nach Abstimmung mit Tore) --- ## Nachtrag 2026-07-07 – Security-Fix G1–G5 **Hinweis:** Alle Abschnitte oberhalb dieses Nachtrags sind **historisch (Stand 2026-05-21, vor Fix)**. Die dortigen Aussagen zu oeffentlichen/internen Ports waren am 2026-07-06 teilweise nicht mehr zutreffend (u. a. 5053/8651/5060/8652/3050/7687/7688 direkt oeffentlich, ufw inactive). **Aktueller Stand nach Fix (Details: /opt/struktur/reports/security-fix-g1-g5-20260707.md):** | Punkt | Stand 2026-07-07 | |---|---| | Firewall | ufw **active**: deny incoming; erlaubt 22/80/443/tcp + tailscale0 | | Oeffentlich erreichbar | nur 22, 80, 443 | | 8651 case-intake / 5053 carlo-dashboard / 8652 SMA v1 | Bind auf 127.0.0.1 | | 5060 filebrowser | 127.0.0.1 via systemd-Drop-in | | 3050 ingest-service | gestoppt (Altlast, Code unter /opt/ingest-service) | | 7687 Neo4j Bolt (nginx-stream → mirofish-neo4j) | nur noch Tailscale-IP 100.112.250.41 | | 7688 stunnel | Prozess gestoppt (Unit war failed/disabled; Config unveraendert) | | Portainer 9000 / n8n 5678 | bereits vor Fix auf 127.0.0.1 hinter nginx (Doku oben veraltet) | | Backups | /root/backups/security-fix-20260706_172733/ + .bak-Dateien je Aenderung | **Offen (Folgeaufgaben):** Hoster-Snapshot/Backup-Strategie (Backup-Cron seit 13.06. deaktiviert!), Auth fuer Subdomains ohne Basic Auth, Watchtower-Autoupdates, SMA v1/v2, filebrowser-Root `/`, tote Subdomains (litellm u. a.). --- ## Nachtrag 2026-07-07 – Auth-Security H2a–H2d **Aufbauend auf dem Nachtrag „Security-Fix G1–G5".** Details: `/opt/struktur/reports/auth-security-h2a-h2d-20260707.md` Nach Schliessen der Direkt-Binds (G1–G5) wurden die oeffentlich ueber nginx erreichbaren Subdomains abgesichert: | Gruppe | Subdomains | Massnahme | |---|---|---| | H2a | vpshost, vpsverwaltung, ki-automation | Basic Auth ganze Site (root-Apps mit /api/action) | | H2b | cockpit-carlo, cockpit-mari, carlo.agent, hermes-root | Basic Auth server-Kontext (inkl. Sonderlocations) | | H2c | youtube, leads, social (SMA v2), sma (SMA v1) | Basic Auth ganze Site | | H2d | portainer, graphiti, paperclip | Basic Auth ganze Site | | H2d | case | route-scoped: /cases, /api/cases*, /api/stats geschuetzt; / + /submit offen | | H2d | notes | route-scoped: /_utils geschuetzt; CouchDB-Daten-API offen (hermes-mari-Abhaengigkeit) | | — | n8n | unveraendert (App-Login + Webhook-Risiko) | Auth-Datei: `/etc/nginx/.htpasswd` (keine Inhalte hier). Backups: `.bak_2026070*` je Site + `/root/backups/`. Rollback: Backup zurueck, `nginx -t`, `reload`. **Weiterhin offen:** Hoster-Snapshot/Backup-Strategie, Watchtower-Autoupdates, n8n-Webhook/Auth-Konzept, tote Subdomains (litellm/werkstandard), filebrowser-Root, SMA v1/v2.