Explorer
/opt/struktur/VPS-SECURITY.md
← Zurück ↓ Download
# 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.