どのアプリケーションがどのポートを使用しているかを知るにはどうすればよいですか?

どのアプリケーションがどのポートを使用しているかを知るにはどうすればよいですか?

私は MacBook の出力を見てきましたnetstat。一部のアプリケーションでは、使用するポートを指定できることに気付きました。たとえば、ではutorrentそれが可能です。ポート 55743 を選択して実行したところnetstat | grep 55743、出力は次のようになりました。

udp6       0      0  *.55743                *.*
udp4       0      0  *.55743                *.*

終了するとutorrentポートが解放されます。しかし、ポート番号がわからない場合、どのアプリケーションがどのポートを使用しているかをどのように確認すればよいでしょうか? また、一部のアプリケーションがポートを秘密裏に使用して外部サーバー デバイスと通信することは可能ですか?

答え1

David Houde が述べたように、lsof -i友人は現在のソケット接続/操作のスナップショットを提供します。残念ながら、OS X ではnetstatこの機能はサポートされていません。

その他のオプションは次のとおりです:

Activity Monitor.appアプリケーションによって開かれているファイルとポートを確認できます。これは、プロセスをダブルクリックして「開いているファイルとポート」タブを開くことで実行できます。

Dtrace - チェックアウトソコネクト終了するまで (control+c)、ネットワーク操作に関する継続的な情報を提供するスクリプト。出力例:

sudo /tmp/soconnect.d 
PID    PROCESS          FAM ADDRESS          PORT   LAT(us) RESULT
8211   X-Lite           2   192.168.1.109    5060        25 Success
4112   Google Chrome    2   173.194.34.134   443         53 In progress
8211   X-Lite           2   192.168.1.109    5060        30 Success

私が個人的に気に入っているアプリケーションの 1 つは little snitch ですが、これは商用ソフトウェアです。これはデスクトップ ファイアウォール ソフトウェアですが、興味深い機能がいくつかあります。

  • ネットワークモニター。どのアプリケーションがどこに接続しているかを示します(soconnect.d の出力に似ています)
  • アプリケーションごとにネットワーク トラフィックをキャプチャします (つまり、Wireshark と同様に、ネットワーク トラフィックを監視できますが、特定のアプリケーションのみに制限できます)

2 番目の質問にお答えします。はい、従来のオペレーティング システム (OS X、Windows など) では、アプリケーションはさまざまな方法でサード パーティ システムに接続し、あらゆる情報を送信できます。多くのデスクトップ ファイアウォールでは、各アプリケーションが接続できる場所を指定できるようにすることで、この問題に対処しようとしています。つまり、一種のホワイトリストを用意するのです。セキュリティの他の部分と同様に、このアプローチにも落とし穴がないわけではありません。

追伸:私はデスクトップ ファイアウォール ソフトウェア ベンダーとは一切関係がありません :)

答え2

これを実現するには、netstat 引数をいくつか追加するか、lsof を使用します。

netstat -lp
lsof -i udp:55743

関連情報