RustDesk服务器分层安全模型包括使用Nginx代理管理器(NPM)作为堡垒机制,并通过Docker容器化工具和防火墙规则来增强安全性。本示例假定仅用于托管RustDesk服务,但也可以通过将NPM拆分为独立的Docker Compose文件来扩展为更灵活的解决方案。
一、网络布局
1、DMZ 网络: 192.168.1.0/24
2、NPM(外部): 192.168.1.250
3、局域网: 10.0.0.0/24
4、RSBackend 网络: 192.168.254.0/29
5、NPM(内部): 192.168.254.1
6、HBBS: 192.168.254.2
7、HBBR: 192.168.254.3
8、Docker 主机: Linux
二、准备Docker
需要确保已经安装了Docker。接下来,创建两个网络:一个用于RustDesk服务器后端,另一个用于DMZ。
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
三、设置防火墙
配置从公共IP到NPM服务器的端口转发/NAT规则:
- 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
创建一个”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
五、配置NPM
为以下端口配置流代理:
- 21115 => 192.168.254.2:21115 (技术协作计划)
- 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 (技术协作计划)
- 80 => 127.0.0.1:8080 (TCP, 捕获本地流量)
配置代理主机:
- 域名:rustdesk.example.com
- 方案:http
- 转发主机名/IP:192.168.254.2
- 转发端口:21114
- 阻止常见漏洞:已勾选
- 可选:配置SSL(不需要,客户端需要在没有SSL的情况下进行通信)
六、RustDesk服务器及客户端
1、设置RustDesk服务器
- 访问服务器界面 http://rustdesk.example.com 或 https://rustdesk.example.com(如果为Web界面配置了SSL)。
配置客户端:
- ID 服务器:rustdesk.example.com
- 中继服务器:rustdesk.example.com
- API 服务器:http://rustdesk.example.com(如果已配置SSL,请使用HTTPS)
- 密钥:{服务器密钥在这里}
七、最终结果
解决方案将可通过代理管理器从外部访问。将RustDesk服务器与其他系统隔离,特别是如果使用拆分配置系统并且在公共NPM后面有其他应用程序/站点。