1

モバイルデバイス上のリソースにアクセスできるようにする必要があります。モバイルデバイスはサーバーとして機能する必要があります。電話がどのように接続されていても(wifi、3g、ファイアウォールの背後など)利用可能である必要があります。これは、電話からクラウドアクセス可能なサーバーに転送するsshリバースポートを開始することで実現できることを理解しています。これで、電話のリソースにアクセスしたいクライアントは、ランダムなポートでクラウドサーバーに接続し、接続をモバイルデバイスにトンネリングすることができます。大丈夫。

私の質問は、スケーラブルで堅牢で安全なソリューションとしてのこのアイデアの実現可能性に関するものです。このスキームを使用して数万のデバイスに展開されたモバイルアプリケーションは、デバイスローカルリソースにアクセスできるようにします。デバイスローカルリソースは超高セキュリティではありません。sshが提案されたのは、主にトンネルのセットアップが簡単になるためです。

ここに私の懸念のいくつかがあります、

  1. ポートの割り当て。すべてのトンネルには、クラウドサーバー上に一意のポートが必要です。これには、トンネルを開始する前にデバイスとクラウドサーバーがIPをネゴシエートする必要があると思います。これは確かに可能ですが、ポートの可用性を判断するために常にポートをプローブしている、やや複雑なサービスがどこかにあることを意味します。

  2. ポートリソース。サーバーには有限数のポートがあります。物事が複数のサーバーにまたがってスケーリングされる場合、おそらく問題ではありません。

  3. トンネル管理。トンネルは常にうまくダウンするとは限らないため、予期せずダウンするトンネルを「クリーンアップ」するという問題があります(#1を参照)。

  4. 安全。各デバイスは、クラウドサーバー上の秘密と一致する公開鍵を必要とします。デバイス上にある場合は、デバイスから取得できます。現在、アカウントがロックダウンされている限り、発生する可能性はほとんどありませんが、別の攻撃ベクトルが開かれます。

また、サーバーのすべての一意のポートを開くだけでも、別の攻撃経路になります。

  1. スケーラビリティ。おそらく何千ものSSHトンネルを開くのにどれくらいの費用がかかりますか(リソースに関して)?それは現実的ですか?

  2. ファイアウォール。クラウドサーバーのポートは「80」または「8080」ではなく、乱数になります。これは、標準ポートへのアウトバウンド接続を制限する可能性のある一部のファイアウォールの問題ですか?

ご覧のとおり、セキュリティは私の得意ではないので、子供用手袋で扱ってください。ご想像のとおり、私はこのアプローチについて非常に留保しているので、一般的な問題を解決するための他の解決策を検討するための証拠を探しています。

4

1 に答える 1

1

ここでは、いくつかのカスタムコード、またはその概念専用のプロトコルを介したトンネリングセッションが必要になります。IPSECoverUDPが適切な候補になる可能性があります。可能であれば、モバイルデバイスを通常のサーバーのようにリッスンし、アドレスを変更するたびにpingを送信することで、多くの問題を回避できます。これは、電話の動作と、キャリアが着信TCP接続のフィルタリングなどの迷惑なことを行うかどうかによって異なります。とにかく、特定の質問に対処するには:

1)いいえ、接続ごとに固有のソケットが必要です。これは、ポート番号とIPアドレスの組み合わせです。同じNATの背後に2台の電話がある場合でも、NATデバイスは接続に異なるポートを割り当てます。サーバーマシンの1つのポートで1つのサービスを実行できます。

2)上記を参照

3)それは例外ではなく原則として起こります。それらはタイムアウトして閉じます。これは実際にはあなたが期待するよりも難しいことではないかもしれません。

4)これにどのように対処するかは、セキュリティのニーズに基づきます。電話の基になるIDを特定して、物事をより困難にしたり、2要素にするためにユーザーパスワードの入力を要求したりすることができます。もちろん、それは使いやすさと競合するため、トレードオフの考慮事項はあなたに任されています。


1a)手がかりはありません...しかし、それは不可能ではありません。

2a)いくつかの場所で、そしてどこで予測するのが難しいかでそれに遭遇するでしょう。そうは言っても、HTTPSを介してこれらの機能を実行することもできます。

于 2011-02-15T16:49:33.183 に答える