move docker to install

This commit is contained in:
rustdesk
2023-09-10 22:47:21 +08:00
parent 78e8939474
commit 3769ff8880
4 changed files with 0 additions and 0 deletions

View File

@ -0,0 +1,138 @@
---
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.

View File

@ -0,0 +1,138 @@
---
title: RustDesk Server Layered Security Model
weight: 100
---
Kindly written up by [@I-Am-Skoot](https://github.com/I-Am-Skoot/RustDeskNPMDocker/commits?author=I-Am-Skoot).
## Layers
- [RustDesk](https://github.com/rustdesk/rustdesk) Remote Support Tool
- [NPM](https://nginxproxymanager.com/) Proxy Manager Tool
- [Docker](https://www.docker.com) Containerization Tool
- Firewall Tool
#### Assumptions
This example is an All in One for hosting just RustDesk services only. This can be expanded to a more flexible solution by splitting the NPM into it's own Docker Compose.
- DMZ Network: 192.168.1.0/24
- NPM (External): 192.168.1.250
- LAN Network: 10.0.0.0/24
- RSBackend Network: 192.168.254.0/29
- NPM (Internal): 192.168.254.1
- HBBS: 192.168.254.2
- HBBR: 192.168.254.3
- Docker Host: Linux
- Each application has a dedicated folder in `/opt/`.
- Hostname: uniquehostname (Change This)
- DNS Name: rustdesk.example.com
Make modifications to the examples as needed.
### Prepare Docker
You must have Docker already installed this guide does not go into the specifics of that.
You will need to create a network for the RustDesk Server Backend and the DMZ.
For each application you use with the NPM (Nginx Proxy Manager) you should have a dedicated backend network to isolate it.
```
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
```
### Setup Firewall
Configure the following Port forwarding/NAT ports from your public IP to the NPM Server.
- 21114 => 8080 TCP
- 21115 => 21115 TCP
- 21116 => 21116 TCP/UDP
- 21117 => 21117 TCP
- 21118 => 21118 TCP
- 21119 => 21119 TCP
- 443 => 443 TCP # If you want to use SSL
### Setup Docker Compose
This will start a container with NPM and the correct networks.
Copy the below into 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 # Change This
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
```
### Setup NPM
Configure Stream Hosts for the following Ports:
- 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 # catches local traffic
Configure Proxy Host:
- Domain Name: rustdesk.example.com
- Scheme: http
- Forward Hostname / IP: 192.168.254.2
- Forward Port: 21114
- Block Common Exploits: Checked
- Optional: Configure SSL **(DO NOT REQUIRE - Client needs to be able to communicate without SSL.)**
### Setup RustDesk Server
Connect to Server interface http://rustdesk.example.com or https://rustdesk.example.com if you have configured SSL for web interface.
### Setup RustDesk Client
Configure the client:
- ID Server: rustdesk.example.com
- Relay Server: rustdesk.example.com
- API Server: http://rustdesk.example.com (use HTTPS if you have configured SSL)
- Key: {Server Key Here}
## End Result
Your solution will be accessible externally through the Proxy manager. You will have isolation of your RustDesk Servers from other systems. Especially if you use a split configuration system and have other applications / sites behind a common NPM.