web-dev-qa-db-ja.com

ポートがサービスにバインドされていない場合でも、リモートホストからのポートの到達可能性をテストしますか?

リモートホストが特定のポートに到達できるかどうかを確認する必要があります。テスト時に、そのポートにバインドされているサービスはダウンします。

テストで対処できる可能性のある問題は次のとおりです。

  • ネットワークにより、リモートホストがポートに到達できます。
  • ホスト(レシーバー)のファイアウォールにより、リモートホストはそのポートに接続できます。

Telnetを試しました。ただし、サービスがそのポートにバインドされていない場合、telnetはゼロ以外の終了コードを返します。可能なオプションは何でしょうか?

[〜#〜]更新[〜#〜]

これを行うためのnmapの方法はありませんか?フィルタリングされた状態の出力はすべて、危険信号を意味するはずです。

サンプルコマンド:$ nmap -v 120.114.24.56 -P0 -p 8080

参照: http://nmap.org/book/man-port-scanning-basics.html

Nmap –(赤でマークされたものは理想的には私たちにとって赤い旗であるはずです)によって認識される6つのポート状態

開いた

アプリケーションは、このポートでTCP接続、UDPデータグラム、またはSCTPアソシエーションを積極的に受け入れています。これらを見つけることがポートスキャンの主な目標であることがよくあります。セキュリティを重視する人々は、開いている各ポートが攻撃者とペンテスターは開いているポートを悪用したいのに対し、管理者は正当なユーザーを妨害することなくファイアウォールでポートを閉じたり保護したりしようとします。開いているポートは、ネットワークで使用できるサービスを表示するため、セキュリティ以外のスキャンにも役立ちます。

閉まっている

閉じたポートにアクセスできます(Nmapプローブパケットを受信して​​応答します)が、それをリッスンしているアプリケーションはありません。ホストがIPアドレスで稼働していることを示すのに役立ちます(ホスト検出、またはpingスキャン)、およびOS検出の一部として。閉じたポートに到達できるため、一部が開いた場合に備えて、後でスキャンする価値がある場合があります。管理者は、そのようなポートをファイアウォールでブロックすることを検討することをお勧めします。次に説明するフィルタリングされた状態。

フィルタリング

パケットフィルタリングによりプローブがポートに到達できないため、Nmapはポートが開いているかどうかを判断できません。フィルタリングは、専用のファイアウォールデバイス、ルータールール、またはホストベースのファイアウォールソフトウェアから行うことができます。これらのポートは、提供する情報が非常に少ないため、攻撃者を苛立たせます。タイプ3コード13(宛先に到達できない:通信は管理上禁止されています)などのICMPエラーメッセージで応答する場合がありますが、応答せずにプローブを単にドロップするフィルターの方がはるかに一般的です。これにより、フィルタリングではなくネットワークの輻輳が原因でプローブがドロップされた場合に備えて、Nmapが数回再試行されます。これにより、スキャンが大幅に遅くなります。

フィルタリングされていない

フィルタリングされていない状態は、ポートにアクセスできることを意味しますが、Nmapは、ポートが開いているか閉じているかを判別できません。ファイアウォールルールセットのマッピングに使用されるACKスキャンのみが、ポートをこの状態に分類します。 。ウィンドウスキャン、SYNスキャン、FINスキャンなどの他のスキャンタイプでフィルタリングされていないポートをスキャンすると、ポートが開いているかどうかを解決できる場合があります。

open | filtered

Nmapは、ポートが開いているかフィルタリングされているかを判別できない場合、ポートをこの状態にします。これは、開いているポートが応答しないスキャンタイプで発生します。応答の欠如は、パケットフィルタがプローブまたはプローブが引き出した応答をドロップしたことを意味する場合もあります。したがって、Nmapは、ポートが開いているかフィルタリングされているかを確認できません。UDP、IPプロトコル、FIN、NULL、およびXmasスキャンは、この方法でポートを分類します。

クローズ|フィルタリング

この状態は、Nmapがポートが閉じているかフィルタリングされているかを判別できない場合に使用されます。これは、IPIDアイドルスキャンにのみ使用されます。

1
SHOUBHIK BOSE

リソースへのアクセスによっては、これを行うのは(不可能ではないにしても)困難です。

Unixベースのサーバーの場合は、サーバー上でtcpdumpを実行し(目的のポートのトラフィックのみをリッスンするように)、Telnet経由で接続してみます。もちろん、Telnetは失敗しますが、少なくとも、[応答するものがないため、着信トラフィックのみであるにもかかわらず] tcpdumpを介した着信サーバーの試行を確認する必要があります。これは、トラフィックがボックスに到達していることを意味します。プログラムが正常に動作するのを妨げるファイアウォールがボックスにないことを意味するわけではありません。

2
davidgo

サーバーで何もリッスンしていない場合は、通常、ポートでサービスを開始します。ただし、最近のファイアウォールはパケットインスペクションを使用する場合があるため、ポートでリッスンすることを目的としているものが機能するという保証はありません。

これは、次のようなncで実行できます(たとえば、ポート6667のTCP)

nc -l 6667

次に、送信側でtelnetまたはncを試してください。 ncがない場合は、プラットフォームに応じて、PerlとIO :: Socket :: Inet、またはpythonまたはpowershell)を使用して単純なソケットリスナーを作成できます。

UDPの場合、-uフラグを指定してncを使用できますが、これはtelnetで確認できませんが、ncは送信側でも機能します。

0
Petter H