[HIGH] RDP-Tunnel bindet 0.0.0.0:0 — auf public Hosts internetexponiert (internal bind erzwingen) #180

Closed
opened 2026-06-26 11:26:46 +00:00 by chinux · 2 comments
Owner

Teil des Public-Readiness-Epics. HIGH fuer public Hosts.
Node-Agent/src/rdp_tunnel.rs:33 bindet den Tunnel-Listener auf 0.0.0.0:0 — ein zufaelliger Port auf allen Interfaces. Auf einem Host ohne VPN mit oeffentlicher IP ist dieser Port waehrend der Tunnel-Session im Internet erreichbar (RDP-Relay → potentiell Zugang zu internen VMs).

Fix

  • Listener an die interne/Control-Adresse binden statt 0.0.0.0 — analog zur vm_listener_bind-Logik (config.rs: VM_LISTENER_BIND / AGENT_INTERNAL_NETWORKfind_host_ip_in_network). Denselben aufgeloesten Bind wiederverwenden.
  • Fallback wenn keine interne Adresse bestimmbar: 127.0.0.1 (loopback), nie 0.0.0.0 auf einem Host, der nicht explizit als "intern" markiert ist.
  • Der Backend→Agent-Tunnel laeuft ohnehin ueber die bestehende WS-Verbindung; der lokale Listener muss nur fuer den Gegenpart auf dem internen Netz erreichbar sein.

Akzeptanz

  • Tunnel-Listener bindet nie auf alle Interfaces; auf public Hosts nicht oeffentlich erreichbar.
  • Funktion (RDP-Tunnel zu internen VMs) ueber das interne Netz unveraendert.

Branch

fix/rdp-tunnel-internal-bind

Teil des Public-Readiness-Epics. **HIGH fuer public Hosts.** `Node-Agent/src/rdp_tunnel.rs:33` bindet den Tunnel-Listener auf `0.0.0.0:0` — ein zufaelliger Port auf **allen** Interfaces. Auf einem Host **ohne VPN mit oeffentlicher IP** ist dieser Port waehrend der Tunnel-Session **im Internet erreichbar** (RDP-Relay → potentiell Zugang zu internen VMs). ## Fix - Listener an die **interne/Control-Adresse** binden statt `0.0.0.0` — analog zur `vm_listener_bind`-Logik (`config.rs`: `VM_LISTENER_BIND` / `AGENT_INTERNAL_NETWORK` → `find_host_ip_in_network`). Denselben aufgeloesten Bind wiederverwenden. - Fallback wenn keine interne Adresse bestimmbar: `127.0.0.1` (loopback), **nie** `0.0.0.0` auf einem Host, der nicht explizit als "intern" markiert ist. - Der Backend→Agent-Tunnel laeuft ohnehin ueber die bestehende WS-Verbindung; der lokale Listener muss nur fuer den Gegenpart auf dem internen Netz erreichbar sein. ## Akzeptanz - Tunnel-Listener bindet nie auf alle Interfaces; auf public Hosts nicht oeffentlich erreichbar. - Funktion (RDP-Tunnel zu internen VMs) ueber das interne Netz unveraendert. ## Branch `fix/rdp-tunnel-internal-bind`
Author
Owner

#180 umgesetzt · Commit e3ebae9 (Node-Agent 2.14.0→2.15.0). Issue bleibt offen.

RdpManager::start (rdp_tunnel.rs) band auf 0.0.0.0:0 (ALLE Interfaces). Jetzt Bind auf cfg.vm_listener_bind (gleiche aufgeloeste interne Adresse wie der VM-Listener aus #117), Port weiter random (:0). Bind-Wert via commands_async rdp.start_tunnel durchgereicht. Tunnel-Listener bindet nie auf alle Interfaces; RDP ueber internes Netz unveraendert.

⚠️ Binary lokal neu bauen.

**#180 umgesetzt** · Commit `e3ebae9` (Node-Agent 2.14.0→2.15.0). Issue bleibt offen. `RdpManager::start` (`rdp_tunnel.rs`) band auf `0.0.0.0:0` (ALLE Interfaces). Jetzt Bind auf `cfg.vm_listener_bind` (gleiche aufgeloeste interne Adresse wie der VM-Listener aus #117), Port weiter random (`:0`). Bind-Wert via `commands_async` `rdp.start_tunnel` durchgereicht. ✅ Tunnel-Listener bindet nie auf alle Interfaces; RDP ueber internes Netz unveraendert. ⚠️ Binary lokal neu bauen.
Author
Owner

Verifiziert @ e3ebae9 → erfüllt, wird geschlossen.

RDP-Tunnel bindet {bind_ip}:0 = aufgelöste interne Adresse (rdp_tunnel.rs:36, nie 0.0.0.0); Port weiter random ✓

**Verifiziert @ e3ebae9 → erfüllt, wird geschlossen.** RDP-Tunnel bindet `{bind_ip}:0` = aufgelöste interne Adresse (rdp_tunnel.rs:36, nie 0.0.0.0); Port weiter random ✓
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
chinux/theProx#180
No description provided.