1

マシンでアクティブな tcp/udp 接続を取得する方法に関する記事を見つけました。

http://www.codeproject.com/KB/IP/iphlpapi.aspx

ただし、私の問題は、アクティブな接続をリモートで判断できるようにする必要があることです-マシンを改ざんすることなく、特定のポートが実行されているかリッスンしているかどうかを確認します。

これは可能ですか?

そうしないと、セキュリティ上の問題が発生する可能性があります。別の方法は、ローカル マシンで必要な呼び出しを行うことができるリモーティング サービスにクエリを実行することです。

何かご意見は?

4

3 に答える 3

4

Nmapはあなたが探しているものです。

于 2008-09-24T00:03:24.243 に答える
3

リモート コンピュータが認識しない限り、どのポートが開いているかを知る方法はありません。しかし、ポート上で実行されているプログラムが認識しなくても (つまり、プログラムに干渉することなく) 情報を判別できます。

SYN スキャンを使用します。

接続を確立するために、TCP はスリーウェイ ハンドシェイクを使用します。これを悪用して、プログラムが知らないうちにポートが開いているかどうかを調べることができます。

ハンドシェイクは次のように機能します。

  1. クライアントは、SYN をサーバーに送信することにより、アクティブなオープンを実行します。
  2. サーバーは SYN-ACK で応答します。
  3. 通常、クライアントはサーバーに ACK を返します。しかし、このステップはスキップされます。

SYN スキャンは、TCP スキャンの最も一般的な形式です。ポート スキャナは、オペレーティング システムのネットワーク機能を使用するのではなく、生の IP パケット自体を生成し、応答を監視します。このスキャン タイプは、実際には完全な TCP 接続を開かないため、「ハーフ オープン スキャン」とも呼ばれます。ポート スキャナーは SYN パケットを生成します。ターゲット ポートが開いている場合は、SYN-ACK パケットで応答します。スキャナ ホストは RST パケットで応答し、ハンドシェイクが完了する前に接続を閉じます。

raw ネットワークの使用にはいくつかの利点があり、送信されたパケットと応答のタイムアウトをスキャナが完全に制御できるようになり、応答の詳細なレポートが可能になります。どちらのスキャンがターゲット ホストへの影響が少ないかについては議論があります。SYN スキャンには、個々のサービスが実際には接続を受信しないという利点がありますが、一部のサービスは接続スキャンでクラッシュする可能性があります。ただし、ハンドシェーク中の RST は、一部のネットワーク スタック、特にプリンターなどの単純なデバイスで問題を引き起こす可能性があります。どちらにしても決定的な議論はありません。

ソースウィキペディア

後述するように、 nmapは SYN スキャンを実行できると思います。

TCP ポート スキャンにソケットを使用する:

どのポートが開いているかを判断する 1 つの方法は、そのポートへのソケットを開くことです。または、あなたが言及したように、あなたのための情報を見つける別のポートに。

たとえば、コマンド プロンプトまたはターミナルから:

telnet google.com 80

UDP ポートのスキャン:

開いていないポートに UDP パケットが送信されると、システムは ICMP ポート到達不能メッセージで応答します。このメソッドを使用して、ポートが開いているか閉じているかを判断できます。しかし、受信プログラムは知っています。

于 2008-09-24T00:03:10.950 に答える
1

neouser99 (他) はNMAPを提案しました。リモート マシンで開いているポートを検出するだけであれば、NMAP は非常に優れています。

しかし、あなたの質問の音から、あなたは実際にどのポートが開いていて、リモートマシンに接続されているかを判断しようとしています. 接続されたポートを含む一般的な監視ソリューションを求めている場合は、リモート マシンに snmp サーバーをインストールできます。TCP-MIB ::tcpConnectionTable とUDP-MIB ::udpEndpointTable の2 つのMIBでポート ステータスを確認できます。

net-snmpで提供されるデーモン (サーバー) は、おそらくこれらの mib をサポートしています。

于 2008-09-28T05:49:29.000 に答える