RustDeskについて
RustDeskはオープンソースとして公開されているRustで書かれたリモート環境構築ツールです。
主に操作元と操作先にインストールするクライアント用ツールと
クライアント用ツールが接続する中継サーバを構成するサーバ用ツールの2つで構成されています。
中継サーバはオプションとなり、クライアント用ツールだけでリモート環境を構成できますが
デフォルトはパブリック中継サーバとなるため、専用の中継サーバを用意することで安全性が高まります。
詳細については下記の公式サイトをご参照ください。
https://rustdesk.com/ja/
今回は専用の中継サーバをAzure上に構成するためのポイントを記載して、
セルフホスト経由の安全性が高いリモート環境を構成します。
Azure上で構築するポイント
サーバ用ツールは以下の2つのサービスで出来ており、OSにインストール後
それぞれ起動させる必要があります。
- hbbs
- hbbr
インストールは公式ドキュメントにLinux向けの手順がありますので、そちらをご参照ください。
https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/install/
ネットワーク
作成したVMに対して、グローバルIPを割り当てます。
このグローバルIPに対してクライアント用ツールを接続することになります。
また、サーバ用ツールは下記ポートを使用しますので、必要に応じてOSのFirewallや
作成したVMに紐づくNSG等に対して受信接続を許可します。
- TCP Port 21114 (API)※オプション
- TCP Port 21115 (hbbs用) 必須
- TCP/UDP Port 21116 (hbbs用) 必須
- TCP Port 21117 (hbbr用) 必須
- TCP Port 21118 (hbbs web socket)※オプション
- TCP Port 21119 (hbbr web socket)※オプション
必須以外は基本的に設定不要です。
サービス起動設定
サーバ用ツールをインストール後、サービス起動させる上でよりセキュリティを高める方法としてUnitファイルに対して以下を設定します。
# sudo systemctl edit --full <サービス名>
~~~~~~~~~~~~~~~~~[Service]~~~省略~~~ExecStart=/usr/bin/hbbr -k _##-kの後ろに半角スペースを空けてから_を記入##
User=<起動専用ユーザ>Group=<起動専用ユーザ>~~~省略~~~~~~~~~~~~~~~~~~~~
公式サイトのインストール方法を参照した場合、登録されるデーモンはオプションの「-k _」が付いていないため修正します。
最新の公式サイトではオプションの説明が無くなっていますが、
「-k _」はツールインストール時に生成される暗号鍵を接続先のクライアント用ツールに対して必須とするオプションです。
暗号鍵の設定の有無によって、接続先を制限できるためセキュリティが向上します。
また、サービス起動用のユーザを作成しておき、通常ユーザと起動専用ユーザを分けることでサービス安全性を高めます。
hbbrに対して修正したら、hbbsについても同様に修正します。
その他
設定を終えたら、以下のコマンドでテストが可能です。
# sudo rustdesk-utils doctor <グローバルIP>

(←参考になった場合はハートマークを押して評価お願いします)