RustDesk 伺服器分層安全模型
由 @I-Am-Skoot 精心編寫。
層級
假設
這個範例是一個僅用於代管 RustDesk 服務的一體化解決方案。可以通過將 NPM 拆分為獨立的 Docker Compose 來擴展為更靈活的解決方案。
- DMZ 網路:192.168.1.0/24
- NPM(外部):192.168.1.250
- LAN 網路:10.0.0.0/24
- RSBackend 網路:192.168.254.0/29
- NPM(內部):192.168.254.1
- HBBS:192.168.254.2
- HBBR:192.168.254.3
- Docker 主機:Linux
- 每個應用程式在
/opt/
中都有一個專用資料夾。
- 每個應用程式在
- 主機名:uniquehostname(請更改此值)
- DNS 名稱:rustdesk.example.com
請根據需要修改範例。
準備 Docker
您必須已安裝 Docker,本指南不涉及具體安裝細節。
您需要為 RustDesk 伺服器後端和 DMZ 建立一個網路。 對於與 NPM(Nginx 代理管理器)一起使用的每個應用程式,您應該擁有一個專用的後端網路來隔離它。
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
設置防火牆
配置以下連接埠轉發/NAT 連接埠,從您的公共 IP 到 NPM 伺服器。
- 21114 => 8080 TCP
- 21115 => 21115 TCP
- 21116 => 21116 TCP/UDP
- 21117 => 21117 TCP
- 21118 => 21118 TCP
- 21119 => 21119 TCP
- 443 => 443 TCP # 如果您想使用 SSL
設置 Docker Compose
這將啟動一個包含 NPM 和正確網路的容器。
將以下內容複製到 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 # 請更改此值
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
為以下連接埠配置串流主機:
- 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 # 捕獲本地流量
配置代理主機:
- 域名:rustdesk.example.com
- 方案:http
- 轉發主機名 / IP:192.168.254.2
- 轉發連接埠:21114
- 阻止常見漏洞:已勾選
- 可選:配置 SSL (不要強制 - 客戶端需要能夠在不使用 SSL 的情況下通信。)
設置 RustDesk 伺服器
連接到伺服器界面 http://rustdesk.example.com 或 https://rustdesk.example.com(如果您已為 Web 界面配置了 SSL)。
設置 RustDesk 客戶端
配置客戶端:
- ID 伺服器:rustdesk.example.com
- 中繼伺服器:rustdesk.example.com
- API 伺服器:http://rustdesk.example.com(如果您已配置 SSL,請使用 HTTPS)
- 密鑰:{伺服器密鑰在此處}
最終結果
您的解決方案將可通過代理管理器在外部訪問。您將實現 RustDesk 伺服器與其他系統的隔離。特別是如果您使用分離配置系統並在公共 NPM 後面有其他應用程式/站點。