Modello di Sicurezza a Livelli del Server RustDesk
Gentilmente scritto da @I-Am-Skoot.
Livelli
- RustDesk Strumento di Supporto Remoto
- NPM Strumento di Gestione Proxy
- Docker Strumento di Containerizzazione
- Strumento Firewall
Assunzioni
Questo esempio è un Tutto-in-Uno per ospitare solo servizi RustDesk. Questo può essere espanso a una soluzione più flessibile dividendo l’NPM nel proprio Docker Compose.
- Rete DMZ: 192.168.1.0/24
- NPM (Esterno): 192.168.1.250
- Rete LAN: 10.0.0.0/24
- Rete RSBackend: 192.168.254.0/29
- NPM (Interno): 192.168.254.1
- HBBS: 192.168.254.2
- HBBR: 192.168.254.3
- Host Docker: Linux
- Ogni applicazione ha una cartella dedicata in
/opt/
.
- Ogni applicazione ha una cartella dedicata in
- Nome host: uniquehostname (Cambia Questo)
- Nome DNS: rustdesk.example.com
Apporta modifiche agli esempi secondo necessità.
Preparare Docker
Devi avere Docker già installato, questa guida non entra nei dettagli specifici di questo.
Dovrai creare una rete per il Backend del Server RustDesk e la DMZ. Per ogni applicazione che usi con l’NPM (Nginx Proxy Manager) dovresti avere una rete backend dedicata per isolarla.
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
Configurare Firewall
Configura i seguenti inoltri porta/NAT porte dal tuo IP pubblico al Server NPM.
- 21114 => 8080 TCP
- 21115 => 21115 TCP
- 21116 => 21116 TCP/UDP
- 21117 => 21117 TCP
- 21118 => 21118 TCP
- 21119 => 21119 TCP
- 443 => 443 TCP # Se vuoi usare SSL
Configurare Docker Compose
Questo avvierà un container con NPM e le reti corrette.
Copia quanto segue in 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 # Cambia Questo
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
Configurare NPM
Configura Host Stream per le seguenti Porte:
- 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 # cattura traffico locale
Configura Host Proxy:
- Nome Dominio: rustdesk.example.com
- Schema: http
- Nome Host / IP di Inoltro: 192.168.254.2
- Porta di Inoltro: 21114
- Blocca Exploit Comuni: Spuntato
- Opzionale: Configura SSL (NON RICHIEDERE - Il client deve essere in grado di comunicare senza SSL.)
Configurare Server RustDesk
Collegati all’interfaccia server http://rustdesk.example.com o https://rustdesk.example.com se hai configurato SSL per l’interfaccia web.
Configurare Client RustDesk
Configura il client:
- Server ID: rustdesk.example.com
- Server Relay: rustdesk.example.com
- Server API: http://rustdesk.example.com (usa HTTPS se hai configurato SSL)
- Chiave: {Chiave Server Qui}
Risultato Finale
La tua soluzione sarà accessibile esternamente attraverso il gestory proxy. Avrai l’isolamento dei tuoi Server RustDesk da altri sistemi. Specialmente se usi un sistema di configurazione divisa e hai altre applicazioni / siti dietro un NPM comune.