これまで誰もこの質問をしたことがないようです (ほとんどはホストベースのファイアウォールに関するものです)。
ポートスキャンツール(例:nmap)に詳しい人なら、SYNスキャン、FINスキャンなどを使ってホストマシンの開いているポートを特定する方法をよく知っています。しかし、問題は、ファイアウォール自体の開いているポートをどのように特定するかです(ファイアウォールの背後で接続しようとしているホストの特定のポートが開いているか閉じているかは関係ありません)。これは、ファイアウォールがIP接続をブロックしていることを前提としています。
例: 私たち全員が serverfault.com とポート 80 (Web トラフィック) 経由で通信しています。ホストをスキャンすると、ポート 80 が開いていることがわかります。serverfault.com がファイアウォールの背後にあり、このトラフィックの通過を許可している場合、ファイアウォールのポート 80 も開いていると想定できます。ここで、ファイアウォールがユーザーをブロックしていると仮定します (たとえば、ユーザーの IP アドレスが拒否リストに含まれているか、許可リストに含まれていない)。ポート 80 が開いている必要があることはわかっています (適切な IP アドレスに対して機能します) が、ユーザー (許可されていない IP) がスキャンを試みると、ファイアウォール上のすべてのポート スキャン試行でパケットがドロップされます (開いていることがわかっているポート 80 を含む)。では、許可されていない IP を使用しながら、ファイアウォール自体の開いている/閉じているポートを明らかにするために、直接ファイアウォール スキャンを実行するにはどうすればよいでしょうか。
答え1
違いはありません。パケット フィルタリングの観点からは、ホストが表示するものとファイアウォールが表示するものの間には違いはありません。ファイアウォールの IP アドレス自体をスキャンすると (ファイアウォールに IP アドレスがあると仮定した場合)、ファイアウォールの背後にあるホストにバインドされたトラフィックと同じルールが使用される可能性は低くなります。
ただし、構成によっては、ファイアウォールが許可している内容が誤って表示される場合があります。
リッスンしていないポートのトラフィックに拒否 (RST
パケット、これは通常の TCP の動作) で応答するホストと、トラフィックを黙ってドロップするファイアウォールの例を考えてみましょう。ホストは 80 のみをリッスンしますが、ファイアウォールは 80 と 25 を許可します。ファイアウォールは、ホストが拒否するポート 25 のトラフィックと、ホストが接続するポート 80 のトラフィックを通過させ、その他すべてをブロックします。
nmap は、そのホストのポート 80 が開いていて、ポート 25 が閉じていて、他のすべてのポートがフィルターされていると表示します。nmap は、このような違いが存在する場合にそれを表示するように構築されており、監視しているホストの動作を判断できるようにします。
答え2
Web サービスを使用してポート スキャンを実行したり、外部の場所から外部 IP アドレスに対してポート スキャンを実行したりすると、ファイアウォールで開いているポートが表示されます。
これは Google 検索で見つけた最初の Web サービスです。おそらく他にもあるでしょう:http://www.hackerwatch.org/probe/
答え3
ファイアウォールを所有していて、ファイアウォールの機能テストを実行したい場合は、スキャンの前に、DMZ インターフェイスに接続されたスイッチのスパン ポートにスニファーを設定できます。こうすることで、ターゲット ホストがダウンしていたり、特定のポートで応答しなかったりする場合でも、通過したパケットの発生をキャッチできます。これにより、スキャンを実行するツールよりも詳細な可視性が得られます。