RustDeskサーバー層化セキュリティモデル

@I-Am-Skootによって親切に作成されました。

レイヤー

  • RustDesk リモートサポートツール
  • NPM プロキシ管理ツール
  • Docker コンテナ化ツール
  • ファイアウォールツール

前提

この例は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 Proxy Manager)と使用する各アプリケーションには、それを分離するための専用バックエンドネットワークが必要です。

 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の設定

これは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の背後に他のアプリケーション/サイトがある場合に特に有効です。