web-dev-qa-db-ja.com

別のネットワークへの双方向リンクを追加せずにプライベートネットワークからデータを公開するにはどうすればよいですか

外部からアクセスすることが物理的に不可能であるにもかかわらず、リモートサーバーにデータを公開するオプションがまだあるプライベートネットワークを構築する方法を考えていたところです。例として、ある種の重要なインフラストラクチャを制御するデバイスのネットワークがあり、現場の人以外には誰もアクセスできないようにしたいとします。ただし、インターネットからアクセスできるリモートサーバーに、目立った遅延なく診断情報を送信するようにリンクします。

攻撃者に関する仮定:

  • インターネットに接続されているすべてのシステムに侵入できる
  • プライベートネットワークに物理的にアクセスできない

したがって、パブリックネットワークとプライベートネットワークの間にファイアウォールとして機能するサーバーを置くことはできません。すべてのソフトウェアに欠陥があり、攻撃者はファイアウォールが破られるとすぐにプライベートネットワークにアクセスできるようになるためです(ただし、ルールがハードウェアに埋め込まれているファイアウォール、または物理的なアクセスなしでは変更できないその他の理由でそのようなデバイスはありますか?)

問題を解決できるのは、一方向の通信のみを物理的に許可するデバイスです(この場合、プライベートネットワークからパブリックネットワークへ)。そのようなデバイスがあるかどうかはわかりませんが、いくつかのアイデアを思いつきました。

  • cD-ROMなど、書き込み専用のメディアを使用します。問題:待ち時間が長く、マシン間でCDを自動的に移動するための専用ハードウェアが必要です。
  • ペーパープリンター/スキャナーのセットアップ:プライベートネットワークにプリンターがあり、パブリックネットワークに接続されているスキャナーに直接フィードします。待ち時間は数秒に短縮されましたが、OCRによりエラーが発生しやすくなりました。
  • 光ファイバー通信:レシーバー側で、光トランスミッターを物理的に取り外します(または反対側のレシーバーを取り外します)。したがって、単一方向通信のみが可能です。おそらくイーサネットでは動作しません(単方向通信を適切に処理するネットワークプロトコルはありますか?)

明らかな解決策を見逃してしまったので自分をばかにし続ける前に、これに関するあなたのコメントを聞いてみたいです:)

23
Klamann

シリアルポートを使用できます。デフォルトでは、各方向に1本ずつの2本のデータ線と、アース線(ここでは関係ありません)があります。適切な回線を切断することにより、特定の方向の通信を防ぐことができます。

とても簡単に使用できます。非常に基本的なレベルでは、echo hello >> /dev/ttyS0のようなものを実行して、反対側でcat /dev/ttyS0を使用してそれを受け取ることができると思います。回避する複雑なネットワークスタックはなく(応答の欠如をパケット損失として扱うため、単方向通信が妨げられます)、ほとんどの言語では、ライブラリを使用してシリアルポートを介して簡単に通信できます。

Pythonの例は、JSONをシリアル経由で送信する方法を示しています。

import serial, json
s = serial.Serial('/dev/ttyUSB0')
data = json.dumps({"status": "OK", "uptime": 60}).encode("utf-8") # make UTF-8 encoded JSON
s.write(data + "\n") # send the JSON over serial with a newline at the end
37
André Borie

質問の投稿が完了するとすぐに検索パフォーマンスがどれだけ向上するかが気に入っています。D

ウィキペディアを救う:

  • スニーカーネット は、コンピュータネットワークを介して情報を送信するのではなく、コンピュータ間でメディア(...)を物理的に移動することによる電子情報の転送を表す非公式な用語です。」
  • 「A 単方向ネットワーク (単方向セキュリティゲートウェイまたはデータダイオードとも呼ばれます)は、情報セキュリティの保証に使用される、データが一方向にのみ移動できるようにするネットワークアプライアンスまたはデバイスです。」
  • エアギャップ 、エアウォールまたはエアギャップは、1つ以上のコンピューターで採用されているネットワークセキュリティ対策であり、安全なコンピューターネットワークが安全でないネットワークから物理的に隔離されていることを確認します。」
  • 参照: エアギャップマルウェア

そして実際には ハッキングされた光ファイバーネットワークリンクを販売する会社 があります。独自のネットワークプロトコルを開発する必要がありましたが、これまでのところ、仕様を見つけることはできませんでした...

16
Klamann

イーサネット

一般的な100mbitイーサネットは、数本のワイヤーを切断するだけで簡単に物理的に単一方向にすることができます。標準のネットワークプロトコルは双方向通信を必要とし、一方向ネットワークでは配信を確実に不可能にします(メッセージが受信または失われた場合、送信者は確認を取得できないため)が、小さなカスタムネットワークスタックを自分で書くことができます-アプリ一方の側では、生のイーサネットフレームとしてデータを送信します(おそらく各メッセージを複製し、エラー回復を可能にするチェックサムを含みます)。反対側のアプリからデータストリームを組み立てます。このようなデータを処理するために利用できる比較的高レベルのライブラリがあります。 http://www.secdev.org/projects/scapy/

すぐに使えるものではありませんが、大学の宿題プロジェクトの範囲内である可能性もあります。

6
Peteris

いくつかのアイデア:

  • 電気インプのようなものはどうですか?

https://electricimp.com/aboutus/faq/

通信には小さなオプトダイオードを使用しているようです。

  • または、スピーカーから発せられる超音波音を使用するこのJavaScriptライブラリについてはどうでしょう。受信機にマイクはあるがスピーカーはありませんか?

https://github.com/borismus/sonicnet.js

  • これは、単方向で通信するためのオフチャネル方法のライブ実装です。

https://youtu.be/w6lRq5spQmc

明らかに、Google Chromecastはこれの一部を使用しています。そのため、閲覧するのに有益なコードスタックになる可能性があります。セキュリティアプリケーションのためではありませんが、まだ関連があるかもしれません。

  • ヤマハのInfosoundプラットフォームの背後にあるテクノロジーをご覧ください。これも、ノイズの多いチャネルを介した単方向通信のようです。

https://play.google.com/store/apps/details?id=com.yamaha.Android.infosoundbrowser&hl=en

もちろん、最終的にはすべて、必要な帯域幅に依存しますか?

2
curious_cat

保証された配信を必要とするすべてのプロトコルには、双方向通信が必要です。

単方向通信チャネルは、次のいずれかである必要があります。

  1. 信頼できる配信を犠牲にする、または
  2. 確認応答を返すための戻りパスがあります。

3.5mmオーディオジャックを使用すると、単方向配信を簡単に実装できます。ソフトウェア変調器を使用して、オクテットデータをサウンドファイルに変換し、オーディオ出力ポートでサウンドを再生します。このオーディオ出力ポートを male-to-male TRSオーディオジャック を使用して別のコンピューターのオーディオ入力に接続します。他のマシンでは、ソフトウェア復調器を使用して、サウンドをオクテットデータに変換します。この時点で、 基本的なソフトウェアモデム があります。

信頼できる配信が必要ない場合は、これで十分です。

信頼性の高い配信が必要な場合は、単純なTCPのようなスタックで配信確認(ACK)を送信するためのリターンパスを追加する必要があります。送信者はデータパケットを送信し、次のデータパケットを送信する前にACKを待機する必要があります。所定の時間内にそのようなACKが受信されない場合、送信者はデータを再送信する必要があります。リターンパスは、別のオーディオラインでの単純なビープ音にすることができます。

高スループットが必要ない場合は、これで十分です。

高スループットが必要な場合は、送信ウィンドウを追加する必要があります。この時点で、TCPスタックのソフトウェア実装を変更することを検討する必要があるでしょう。

2
Lie Ryan

開発(または本番)ネットワークに本当にエアギャップがある場合、ホスティングサービスとの通信に使用できる犠牲PCをインターネット上に配置するというオプションがあります。

スニーカーネットを使用してアップロードが必要なファイルを移動し、FileZillaまたは同等のものを使用してホストにSSHで接続できます。

犠牲PCは、インターネットに接続する前に(MacriumまたはAcronisまたは同等のものを使用して)イメージングする必要があります。これにより、いつでも既知の良好な状態に戻すことができます。

インターネットに接続してから数分以内にプローブやハッキングが発生するコンピューターの話があります。そのため、適切なNATルーターを使用すると、少なくとも1段階の保護が得られます。必ず確認してください。もちろん、uPnPを無効にします。

本当に偏執的である場合は、ファイルを移動するたびに、そのPCの既知の適切なイメージを復元できます。一部のマルウェアはUSBメモリを介して内部に移動する可能性があり、そのPCが侵害されると、切断されたネットワークに感染する可能性があります。

格言の1つは、最も高い木が最初に伐採されることです。したがって、高度な攻撃者がいる高価値のターゲットである場合、攻撃を受ける可能性があります。

そうは言っても、あなたのPCは文字通りそのコンテンツを内部に招待するので、外部への電子メールはおそらくあなたの最大の露出です。コンピュータがメールサーバーとの接続を開始するという意味では、依然として単方向です。したがって、ワームを防ぐことができますが、スピアフィッシング攻撃はできません。

-編集:@Gilshamは、LiveCDを使用して転送を行うことを推奨しています。それはいい考えです。

私はKali Sana(Debianベース)を使用していた場合、「永続的」モードでLiveCDを許可しました。そのため、これを使用してファイルをCDに保存し、犠牲PCで起動し、アップロードしてから、 CD。

永続モードを使用していない場合は、任意のLiveCD(読み取り専用)のみを使用して、ファイルを別のCD-ROMにマウントします。

それは本当に一方向です。

1
SDsolar
0
nealmcb