# Plan: flow.wvits.de intern erreichbar machen ## Ziel `flow.wvits.de` soll aus ausgewählten internen Netzen voll erreichbar sein (inkl. Formulare, Signup). Externe Zugriffe bleiben auf Webhooks beschränkt. | Netz | Subnet | Zugriff | |------|--------|---------| | Admin-Netz | 10.10.254.0/24 | Voller Zugriff | | Bodega Client | 10.20.20.0/24 | Voller Zugriff | | Admin-VPN | 10.250.0.0/24 | Voller Zugriff | | WuV VPN | 10.250.1.0/24 | Voller Zugriff | | gw-web02 | 10.10.81.12 | Voller Zugriff | | Extern | alles andere | Nur Webhooks | ## Verifizierte Diagnose ### Problem 1: Firewall gw-nu-dmz02 blockiert **Getestet:** - srv-docker01 (10.10.10.24) → DMZ: **durchkommt** (EasyRule für diesen einzelnen Host) - srv-docker02 (10.10.10.81) → DMZ: **TIMEOUT** (kein Firewall-Eintrag für Subnet) **Aktuelle Firewall-Regeln zu srv-revproxy01 (10.10.81.4):** | Quelle | Alias | Port | Status | |--------|-------|------|--------| | 10.10.254.0/24 | NET_NU_ADMIN | SSH, 80, 81, 443, 8443 | ✅ vorhanden | | 10.250.1.0/24 | WuV_VPN_Client | 443 | ✅ vorhanden | | 10.250.0.0/24 | WuV_VPN_Admin | 443 | ✅ vorhanden | | 10.20.20.0/24 | NET_BD_CLIENT | 443 | ✅ vorhanden | | 10.10.10.24 | (EasyRule) | alle | ✅ nur einzelner Host | | 10.10.10.0/24 | — | — | Nicht benötigt | | 10.10.0.0/24 | LAN__NETWORK | — | Nicht benötigt | | 10.20.0.0/24 | — | — | Nicht benötigt | **Existierende Aliases (relevant):** - `WebGatewayNets`: 10.10.10.0/24, 10.10.12.0/27, 10.10.20.0/24, 10.10.40.0/24, 10.10.254.0/24 - `LAN__NETWORK`: 10.10.0.0/24 - `WebGateways`: 10.10.81.10, 10.10.81.11, 10.10.81.12 ### Problem 2: nginx allow/deny blockiert **Getestet:** - srv-docker01 (10.10.10.24) → Webhook-Pfad: **funktioniert** (n8n antwortet) - srv-docker01 (10.10.10.24) → Signup-Pfad: **403 Forbidden** - nginx-Log bestätigt: `client: 10.10.10.24, access forbidden by rule` **Aktuelle allow/deny im non-webhook Location-Block:** ```nginx allow 10.10.81.12; # gw-web02 deny all; # Auskommentiert: 10.10.254.0/24, 10.20.20.0/24, 10.250.1.0/24 ``` --- ## Lösung ### Schritt 1: Firewall gw-nu-dmz02 — Regeln hinzufügen (User macht das) Auf pfsense Web-UI von gw-nu-dmz02: Firewall-Regeln auf **em1 (LAN)** prüfen/ergänzen. **Benötigte Regeln zu srv_revproxy01 (10.10.81.4) Port 443:** | Quelle | Alias vorhanden? | Regel vorhanden? | Aktion | |--------|-------------------|------------------|--------| | 10.10.254.0/24 | `NET_NU_ADMIN` ✅ | ✅ HTTPS erlaubt | Keine Änderung | | 10.20.20.0/24 | `NET_BD_CLIENT` ✅ | ✅ HTTPS erlaubt | Keine Änderung | | 10.250.0.0/24 | `WuV_VPN_Admin` ✅ | ✅ HTTPS erlaubt | Keine Änderung | | 10.250.1.0/24 | `WuV_VPN_Client` ✅ | ✅ HTTPS erlaubt | Keine Änderung | Alle benötigten Netze haben bereits Firewall-Regeln. **Keine Firewall-Änderung nötig.** Die EasyRule für 10.10.10.24 (srv-docker01) bleibt bestehen (wird für NPM → DMZ benötigt). ### Schritt 2: nginx.conf anpassen **Datei:** `/home/vinosadmin/n8n-reverse-proxy/nginx.conf` auf srv-revproxy01 **Zugang:** `ssh -J sshtest@10.10.254.201 vinosadmin@srv-revproxy01` **Änderung im Location-Block `location /77ba0b14e9ccd5521a0ec1867332378c/`:** Ersetze: ```nginx #allow 10.10.254.0/24; # Admin-Netz #allow 10.20.20.0/24; # Bodega Client Netz #allow 10.250.1.0/24; # VPN Client Netz allow 10.10.81.12; # gw-web02 deny all; ``` Durch: ```nginx allow 10.10.254.0/24; # Admin-Netz allow 10.20.20.0/24; # Bodega Client Netz allow 10.250.0.0/24; # Admin-VPN allow 10.250.1.0/24; # WuV VPN Client Netz allow 10.10.81.12; # gw-web02 deny all; ``` Nur Bodega-Clients + Admin/VPN. Keine breiten Netz-Freigaben (10.10.0.0/24, 10.20.0.0/24, 10.10.10.0/24). **Container neu starten:** ```bash cd /home/vinosadmin/n8n-reverse-proxy && docker compose restart ``` ### Schritt 3: Testen ```bash # Von srv-docker02 (10.10.10.81) — derzeit geblockt durch Firewall: ssh vinosadmin@srv-docker02 "curl -sk --connect-timeout 5 -w 'HTTP %{http_code}\n' \ 'https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/signup'" # Erwartet: HTTP 200 oder 302 (statt Timeout) # Von srv-docker01 (10.10.10.24) — derzeit geblockt durch nginx: ssh vinosadmin@srv-docker01 "curl -sk --connect-timeout 5 -w 'HTTP %{http_code}\n' \ 'https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/signup'" # Erwartet: HTTP 200 oder 302 (statt 403) # Webhook weiterhin funktionsfähig: ssh vinosadmin@srv-docker01 "curl -sk --connect-timeout 5 -w 'HTTP %{http_code}\n' \ 'https://flow.wvits.de/77ba0b14e9ccd5521a0ec1867332378c/webhook-test/test'" # Erwartet: HTTP 404 (n8n: webhook nicht aktiv — ok) ``` --- ## Betroffene Systeme | System | Zugang | Änderung | |--------|--------|----------| | gw-nu-dmz02 | pfsense Web-UI | Keine Änderung nötig (Regeln existieren bereits) | | srv-revproxy01 | SSH via cli-rwe02 | nginx.conf: allow-Regeln erweitern | ## Verifiziert (keine Änderung nötig) | Prüfpunkt | Status | |-----------|--------| | DNS Split (flow.wvits.de → 10.10.81.4) | ✅ funktioniert (srv-docker01, srv-docker02) | | real_ip Modul (nginx sieht echte Client-IP) | ✅ bestätigt in nginx-Logs | | Webhook-Pfade (allow all) | ✅ funktioniert von srv-docker01 | | NPM-Routing zu nginx Container | ✅ funktioniert | | Route vom Servernetz zur DMZ | ✅ Route existiert (via 10.10.10.1 → 10.10.0.81) |