外部からアクセスすることが物理的に不可能であるにもかかわらず、リモートサーバーにデータを公開するオプションがまだあるプライベートネットワークを構築する方法を考えていたところです。例として、ある種の重要なインフラストラクチャを制御するデバイスのネットワークがあり、現場の人以外には誰もアクセスできないようにしたいとします。ただし、インターネットからアクセスできるリモートサーバーに、目立った遅延なく診断情報を送信するようにリンクします。
攻撃者に関する仮定:
したがって、パブリックネットワークとプライベートネットワークの間にファイアウォールとして機能するサーバーを置くことはできません。すべてのソフトウェアに欠陥があり、攻撃者はファイアウォールが破られるとすぐにプライベートネットワークにアクセスできるようになるためです(ただし、ルールがハードウェアに埋め込まれているファイアウォール、または物理的なアクセスなしでは変更できないその他の理由でそのようなデバイスはありますか?)
問題を解決できるのは、一方向の通信のみを物理的に許可するデバイスです(この場合、プライベートネットワークからパブリックネットワークへ)。そのようなデバイスがあるかどうかはわかりませんが、いくつかのアイデアを思いつきました。
明らかな解決策を見逃してしまったので自分をばかにし続ける前に、これに関するあなたのコメントを聞いてみたいです:)
シリアルポートを使用できます。デフォルトでは、各方向に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
質問の投稿が完了するとすぐに検索パフォーマンスがどれだけ向上するかが気に入っています。D
ウィキペディアを救う:
そして実際には ハッキングされた光ファイバーネットワークリンクを販売する会社 があります。独自のネットワークプロトコルを開発する必要がありましたが、これまでのところ、仕様を見つけることはできませんでした...
一般的な100mbitイーサネットは、数本のワイヤーを切断するだけで簡単に物理的に単一方向にすることができます。標準のネットワークプロトコルは双方向通信を必要とし、一方向ネットワークでは配信を確実に不可能にします(メッセージが受信または失われた場合、送信者は確認を取得できないため)が、小さなカスタムネットワークスタックを自分で書くことができます-アプリ一方の側では、生のイーサネットフレームとしてデータを送信します(おそらく各メッセージを複製し、エラー回復を可能にするチェックサムを含みます)。反対側のアプリからデータストリームを組み立てます。このようなデータを処理するために利用できる比較的高レベルのライブラリがあります。 http://www.secdev.org/projects/scapy/ 。
すぐに使えるものではありませんが、大学の宿題プロジェクトの範囲内である可能性もあります。
いくつかのアイデア:
https://electricimp.com/aboutus/faq/
通信には小さなオプトダイオードを使用しているようです。
https://github.com/borismus/sonicnet.js
明らかに、Google Chromecastはこれの一部を使用しています。そのため、閲覧するのに有益なコードスタックになる可能性があります。セキュリティアプリケーションのためではありませんが、まだ関連があるかもしれません。
https://play.google.com/store/apps/details?id=com.yamaha.Android.infosoundbrowser&hl=en
もちろん、最終的にはすべて、必要な帯域幅に依存しますか?
保証された配信を必要とするすべてのプロトコルには、双方向通信が必要です。
単方向通信チャネルは、次のいずれかである必要があります。
3.5mmオーディオジャックを使用すると、単方向配信を簡単に実装できます。ソフトウェア変調器を使用して、オクテットデータをサウンドファイルに変換し、オーディオ出力ポートでサウンドを再生します。このオーディオ出力ポートを male-to-male TRSオーディオジャック を使用して別のコンピューターのオーディオ入力に接続します。他のマシンでは、ソフトウェア復調器を使用して、サウンドをオクテットデータに変換します。この時点で、 基本的なソフトウェアモデム があります。
信頼できる配信が必要ない場合は、これで十分です。
信頼性の高い配信が必要な場合は、単純なTCPのようなスタックで配信確認(ACK)を送信するためのリターンパスを追加する必要があります。送信者はデータパケットを送信し、次のデータパケットを送信する前にACKを待機する必要があります。所定の時間内にそのようなACKが受信されない場合、送信者はデータを再送信する必要があります。リターンパスは、別のオーディオラインでの単純なビープ音にすることができます。
高スループットが必要ない場合は、これで十分です。
高スループットが必要な場合は、送信ウィンドウを追加する必要があります。この時点で、TCPスタックのソフトウェア実装を変更することを検討する必要があるでしょう。
開発(または本番)ネットワークに本当にエアギャップがある場合、ホスティングサービスとの通信に使用できる犠牲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にマウントします。
それは本当に一方向です。
以下は、QRコードストリームの表示/受信による、データダイオード/単方向ネットワークの特定のソフトウェア実装です。