---
title: RustDesk Servers mehrschichtiges Sicherheitsmodell
weight: 100
---

Freundlicherweise aufgeschrieben von [@I-Am-Skoot](https://github.com/I-Am-Skoot/RustDeskNPMDocker/commits?author=I-Am-Skoot).

## Schichten
- [RustDesk](https://github.com/rustdesk/rustdesk) Werkzeug zur Fernunterstützung
- [NPM](https://nginxproxymanager.com/) Proxy-Manager-Werkzeug
- [Docker](https://www.docker.com) 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.
