RustDesk Servers mehrschichtiges Sicherheitsmodell

Freundlicherweise aufgeschrieben von @I-Am-Skoot.

Schichten

  • RustDesk Werkzeug zur Fernunterstützung
  • NPM Proxy-Manager-Werkzeug
  • Docker Werkzeug zur Containerisierung
  • Firewall Tool

Voraussetzungen

Bei diesem Beispiel handelt es sich um eine All-in-one-Lösung, die nur die RustDesk-Dienste hostet. Dies kann zu einer flexibleren Lösung erweitert werden, indem der NPM in eine eigene Docker Compose aufgeteilt wird.

  • DMZ-Netzwerk: 192.168.1.0/24
    • NPM (extern): 192.168.1.250
  • LAN-Netzwerk: 10.0.0.0/24
  • RSBackend-Netzwerk: 192.168.254.0/29
    • NPM (intern): 192.168.254.1
    • HBBS: 192.168.254.2
    • HBBR: 192.168.254.3
  • Docker-Host: Linux
    • Jede Anwendung hat einen eigenen Ordner in /opt/.
  • Hostname: uniquehostname (dies ändern)
  • DNS-Name: rustdesk.example.com

Ändern Sie die Beispiele nach Bedarf ab.

Docker vorbereiten

Sie müssen Docker bereits installiert haben. Diese Anleitung geht nicht auf die Einzelheiten ein.

Sie müssen ein Netzwerk für das RustDesk Server-Backend und die DMZ erstellen. Für jede Anwendung, die Sie mit dem NPM (Nginx Proxy Manager) verwenden, sollten Sie ein eigenes Backend-Netzwerk haben, um sie zu isolieren.

 docker network create \
   --driver=bridge  \
   --subnet=192.168.254.0/29 RSBackend

 docker network create \
   --driver=ipvlan --subnet=192.168.1.0/24 \
   --gateway=192.168.1.1 \
   -o ipvlan_mode=l2 \
   -o parent=eth0 DMZ

Firewall einrichten

Konfigurieren Sie die folgenden Portweiterleitungen/NAT-Ports von Ihrer öffentlichen IP-Adresse zum NPM-Server.

  • 21114 → 8080 TCP
  • 21115 → 21115 TCP
  • 21116 → 21116 TCP/UDP
  • 21117 → 21117 TCP
  • 21118 → 21118 TCP
  • 21119 → 21119 TCP
  • 443 → 443 TCP # Wenn Sie SSL verwenden möchten

Docker Compose einrichten

Dadurch wird ein Container mit NPM und den richtigen Netzwerken gestartet.

Kopieren Sie den folgenden Text in die Datei docker-compose.yaml.

version: '3.5'
services:
  NPM:
    image: jlesage/nginx-proxy-manager:latest
    container_name: proxy-manager
    volumes:
      - /opt/proxy-manager/config:/config
    restart: 'unless-stopped'
    networks:
      DMZ:
        ipv4_address: 192.168.1.250
      RSBackend:
        ipv4_address: 192.168.254.1

  hbbs:
    container_name: rustdesk_hbbs
    image: rustdesk/rustdesk-server-pro:latest
    command: hbbs -k _
    hostname: uniquehostname   # dies ändern
    volumes:
      - /opt/rustdeskserver:/root
    networks:
      RSBackend:
        ipv4_address: 192.168.254.2
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: rustdesk_hbbr
    image: rustdesk/rustdesk-server-pro:latest
    command: hbbr -k _
    volumes:
      - /opt/rustdeskserver:/root
    networks:
      RSBackend:
        ipv4_address: 192.168.254.3
    restart: unless-stopped

networks:
  DMZ:
    external: true
  RSBackend:
    external: true

NPM einrichten

Stream Hosts für die folgenden Ports konfigurieren:

  • 21115 → 192.168.254.2:21115 TCP
  • 21116 → 192.168.254.2:21116 TCP / UDP
  • 21117 → 192.168.254.3:21117 TCP
  • 21118 → 192.168.254.2:21118 TCP
  • 21119 → 192.168.254.3:21119 TCP
  • 80 → 127.0.0.1:8080 TCP # erfasst den lokalen Verkehr

Proxy-Host konfigurieren:

  • Domainname: rustdesk.example.com
  • Schema: http
  • Weiterleitung des Hostnamens / IP: 192.168.254.2
  • Weiterleitungsport: 21114
  • Verbreitete Exploits blockieren: überprüft
  • Optional: SSL konfigurieren (NICHT ERFORDERLICH - Der Client muss in der Lage sein, ohne SSL zu kommunizieren.)

RustDesk Server einrichten

Verbinden Sie sich mit der Server-Schnittstelle http://rustdesk.example.com oder https://rustdesk.example.com, wenn Sie SSL für die Web-Schnittstelle konfiguriert haben.

RustDesk-Client einrichten

Den Client konfigurieren:

  • ID-Server: rustdesk.example.com
  • Relay-Server: rustdesk.example.com
  • API-Server: http://rustdesk.example.com (HTTPS verwenden, wenn Sie SSL konfiguriert haben)
  • Key: {Serverschlüssel hier}

Endergebnis

Ihre Lösung wird von außen über den Proxy-Manager erreichbar sein. Sie können Ihre RustDesk-Server von anderen Systemen isolieren. Insbesondere, wenn Sie ein geteiltes Konfigurationssystem verwenden und andere Anwendungen bzw. Sites hinter einem gemeinsamen NPM haben.