web-dev-qa-db-ja.com

プログラムでローカルホストTCP / IP通信を使用する-常に安全ですか?

ローカルホストで事前定義されたポートを使用して、TCP/IPを介して通信するいくつかの部分(プロセス)に分割されたアプリケーションがあります。

これは常に安全ですか?ある種のファイアウォール(企業、ローカルにインストールされた、Windowsファイアウォールなど)がこのトラフィックをブロックできますか?または、OSの一部のユーザー設定でこのトラフィックをブロックできますか?

私が興味を持っているOSは、Windows(XPから7)とLinux(Ubuntu、Red Hat Linux、およびSUSE)です。

4
Eli Bendersky
  • _127.0.0.0/8_および_::1/128_へのトラフィックは、TCP/IPスタックによって内部的に処理されます。物理ネットワークカードに到達せず、コンピューターから離れることもないため、企業のファイアウォールによってブロックされることはありません。

  • ループバックソケットはIPCで非常に一般的であるため、優れたファイアウォールがそれをブロックすることはありません。 (Windowsファイアウォールはそうではありません。)しかし、いくつかの過度に妄想的なものがあります...しかし、そのような場合、私はあなたのソフトウェアではなくファイアウォールを非難します。

  • Unixでは、(偶然に)ループバックインターフェイス(通常はlo)を停止することができます。繰り返しますが、これは非常に珍しいことです。

  • ポートの衝突を回避するために、ハードコードされたポートの代わりに、該当する場合はsocketpair()を使用する必要があります。

  • LinuxではUnixソケットを使用し、Windowsでは名前付きパイプを使用するのがさらに良いでしょう。

8
user1686

これらのOSはすべて、ファイアウォールソフトウェアの実行をサポートしています。これらはローカルホスト接続をブロックする可能性がありますが、それは(私の経験では)あまり一般的ではありません。

これを行うアプリケーション/サービスはたくさんあります。ボックスでnetstat -anを実行してみてください。127.0.0.1でリスニングソケットが開いているアプリケーションがかなりの数表示される可能性があります。

これがLinuxで機能するのを妨げる可能性のあるユーザー設定を知りません。 Windowsについてはわかりません。しかし、繰り返しますが、これは一般的な手法です。

2
Mat