設定

設定

設定

中小企業 (ターミナル サービス ゲートウェイを導入するには規模が小さすぎる) では、特定のユーザーが自宅から Windows 10 デスクトップにアクセスできるようにしたいと考えています。

この目的のためにWindowsリモートデスクトップが役に立ったが、ベストプラクティスではRDPポートを直接公開しないことが推奨されている。VPN経由でRDPを保護することを推奨ただし、これまで私はこの目的のために SSH トンネルを設定してきました。SSH トンネルの方が使い慣れていたからです。

クライアントには SSH サーバーを実行できるコンピューターがあると想定し、それを と呼びますSSH_SERVER。私の場合、通常、オンプレミスに Linux または BSD コンピューターがファイル サーバーとして、またはファイアウォールとして機能しています (例: FreeNAS、pfSense)。そうでない場合は、通常、このジョブを処理するために特別に再構築された PC を導入します。

SSH ポート転送バージョン

このセクションでは、Windows リモート デスクトップ アクセスを必要とするクライアントのために SSH ポート転送を設定する方法について詳しく説明します。

  1. SSHのキーのみの認証を設定しSSH_SERVER、ファイアウォールを開いてこれを非標準ポートで公開します。<EXT_SSH_PORT>注:これはのみ今までに開いた外部ポート全てネットワークへの通信は、SSH 経由のポート転送を介して行われます。
  2. SSH_SERVERリモートで接続するクライアントごとに、シェルを に設定したユーザーを に生成します/bin/false
  3. SSH 制限を追加して、ユーザーが接続したいポートとデバイスに対してのみポート転送できるようにします。たとえば、ファイルに次のコードを追加します/etc/sshd_conf
Match User <USERNAME>
  AllowAgentForwarding no
  PermitOpen <USER'S_WINDOWS_DESKTOP_IP>:3389
  ForceCommand echo 'This account is restricted.'

(より詳しい議論ここ)。

  1. それぞれデバイスユーザーが接続したいデバイスに、私が提供するパスワードで暗号化されたキー ペアを生成します。次に、(a) 公開キーをユーザーの~/.ssh/authorized_keysファイルに追加し、(b) 秘密キーをユーザーのデバイスに安全に転送します。
  2. SSHトンネルを簡単に設定する方法をいくつか作成しました。実行するだけの簡単なスクリプトかssh -L 10000:<USER'S_WINDOWS_DESKTOP_IP>:3389 <OFFICE_EXTERNAL_IP> -p <EXT_SSH_PORT>、ヘルパーソフトウェア(例:マックOS、 のためにウィンドウズ)。
  3. RDP セッションへのショートカットを追加しますlocalhost:10000

この方法は十分に機能していましたが、私は常にそれが十分に「プロフェッショナル」ではないと感じており、いつかこれらの SSH トンネルを VPN に変換する必要があると考えていました。

VPN の制限

私はこれを L2TP/IPSEC で調査していました (UniFi Dream Machine 上で、ただしここでの制限はルーターに固有のものではないと思います) が、すぐにいくつかの制限に遭遇しました。

  1. オフィス ネットワークには、クライアント サブネットとは異なる IP サブネットが必要です。これはちょっとした面倒ですが、もしこれができるとしたらどうでしょう。一方で、クライアントが使用するサブネットを選択することを期待しているだけというのは、かなり不満です。一度もない顧客が他の会社を訪問してその会社の Wi-Fi を使用していて、そこからたまたま IT ベンダーと同じサブネットを選択した場合はどうなるでしょうか?
  2. ユーザーごとに、1 台の PC の 1 つのポートへの通信を制限する方法が明確ではありません。VPNユーザーを別のVLANに配置し、そのVLANから特定のRDPデスクトップのポート3389への接続を制限するファイアウォールルールを追加できるように設定できることはわかっていますが、それでもUSER_AがUSER_Bのデスクトップに接続しようとするのを阻止することはできません。何らかの理由でRDP以外のポートも開いている場合、すべてのVPNユーザーがこれらのポートにもアクセスできるようになります。各ユーザー彼らの自分のVLAN は、基本的に SSH ですでに「無料で」利用できる機能に対する追加の管理オーバーヘッドのように思えます。
  3. デバイスごとの明確なセキュリティはありません。上で述べた SSH アプローチでは、USER_A のラップトップが盗まれたとしても、特に心配する必要はありません。まず、秘密キーは暗号化されているため、ユーザーがアクティブに接続している間にラップトップが盗まれたのでなければ、オフィス ネットワークにアクセスすることはできません。さらに、セキュリティを強化するために、盗まれたラップトップに関連付けられたキーを から削除するだけで~/.ssh/authorized_keys、クライアントが所有する他のすべてのデバイス (個人用デスクトップなど) は、追加の構成なしで引き続き動作します。

TL;DR: SSH ポート転送よりも VPN を使用する方が好まれるのはなぜでしょうか?

VPNが望ましいのは、次のような場合のみのようです。全て通信はオフィス ネットワーク経由で行われ、リモート ネットワークをある程度認識/制御できます。(サイト間 VPN はこのカテゴリに該当します。)

何か見落としているのでしょうか? VPN は SSH ポート転送よりも優れたパフォーマンスやセキュリティを提供しますか?

答え1

あなたが提案した SSH ソリューションは、現在の問題に対して複雑すぎるように思われます。

2つの提案:

  1. Duo などの 2FA/MFA ソリューションと組み合わせて VPN を使用します。

  2. VPN に問題がある場合は、Teamviewer、AnyDesk などの別のリモート アクセス ソリューションを Duo などの 2FA/MFA プロバイダーと組み合わせて使用​​します。

最大 10 人のユーザーが使用できる無料の Duo アカウントを作成できます。

関連情報