web-dev-qa-db-ja.com

フィルタリングされたポート-正確に何をフィルタリングしますか?

NMAPの定義では、パケットフィルタリングによってプローブがポートに到達できないため、フィルタリングされていないポートは開いているか閉じているかを判別できません。 (ISBN 9780979958717ページ77)

  • つまり、ポートに到達できたすべてのプローブは常にSYN/ACKまたはRSTによって適切に応答されるという私の仮定は正しいですか?
  • ポートに到達したり、ポートからの応答を取得したりできないのは、セキュリティデバイス(ファイアウォールなど)だけです-それは正しいですか?
  • アプリケーション自体が私のプローブを無視することはできませんか?
11
user69377

通常、ユーザーとターゲットの間には複数のデバイスがあります。ファイアウォール、ルーター、スイッチ、およびその他のネットワークデバイスが、パケットが実際にターゲットに到達するのを制限できる方法に沿って。また、ホストベースのファイアウォールまたはアプリケーションアクセス制御により、フィルタリングされた応答が発生する可能性があります。

ICMPエラーメッセージの応答でフィルタリングデバイスから応答が返される場合がありますが、ほとんどの場合、ルートのどこかでパケットがドロップされます。

あなたの仮定:

  • いいえ。Iptablesは、承認済みのリストにない限り、まったく応答しないように構成できます。または、iptablesにホスト/ネットワークのリストを設定して、まったく応答しないようにすることもできます。
  • セキュリティデバイスの定義方法によって異なります。ルーターのACLのようなものになる可能性があるため、より適切な用語はアクセス制御デバイスです。
  • アプリケーションとそのネットワークスタックによっては可能です。ユーザーランドネットワークスタックを備えたアプリケーションは、OSの代わりにリクエストをどう処理するかを選択できます。
8
dmay

ほとんどのオペレーティングシステムでは、TCPスリーウェイハンドシェイクの処理は、オペレーティングシステムのネットワークコードの責任です。アプリケーションは、listen()を使用して特定のポートで接続を受信することにのみ関心があると宣言できます。システムコール。ポートでリッスンしているアプリケーションがある場合、オペレーティングシステムはSYN/ACKでSYNに応答し、そうでない場合はRSTで応答します。

これがデフォルトの動作です。これは、ホスト上のパケットフィルタリングメカニズムなど、さまざまな方法で変更できます。さらに、TCP/IPの特別な実装は、意図的に動作が異なる場合があります。

NMAPがSYNパケットに応答してSYN/ACKもRSTも受信しない場合、NMAPはそのポートを「フィルタリング済み」として報告します。応答がなかった理由を判別する方法はありません。逆に、介在するファイアウォールがRSTで応答してポートをブロックすると、プローブパケットが実際に宛先に到達しなかったとしても、NMAPはポートが閉じていると報告します。

要するに、あなたの見積もりは少なくとも不正確です。また、NMAPは、パケットフィルタリング以外の理由で、ポートが開いているか閉じているかをotherの理由で判別できない場合、ポートをフィルタリング済みとして報告します。パケットフィルタリングは、最も一般的な原因であるため、その結果の代名詞となっています。さらに、パケットフィルターが介在しているためにポートが開いているか閉じているかを判別できない場合、NMAPはポートをclosedとして報告することさえあります。

9
Tilman Schmidt

最も単純な形式のtargetネットワークに入ろうとすると:

インターネット---ファイアウォール---ターゲット

少なくとも3つのレベルのフィルタリングを通過します。

  1. ファイアウォール
  2. ターゲットのOSレベル
  3. ターゲットのアプリケーションレベル

これらのレベルのeachで、最初のIPパケット(およびESPまたはAHパケット)としての他のプロトコルパケット)は、4種類の処理を受け取る可能性があります。

  1. パケットは単にドロップされます(どのような形式の応答でもありません)。
  2. パケットはドロップされ、ICMPタイプ3、コード9または10が返されます。
  3. TCP RSTパケットを受信する
  4. TCP ACKパケットを受信します

実際のネットワークは、この基本的なレンガで構成されています。

3
dan

ここにいくつかの質問があります。私はそれらを言い換えて、適切な応答を与えることができるようにしましょう。

質問1トラフィックがホストに到達した場合、システムはSYN/ACKまたはRSTで応答しますか?

短い回答-必ずしもそうではありませんが、ICMP宛先到達不能(ポート到達不能)を取得する可能性があります。これは、そのポートで待機しているプロセスがない場合に受け入れ可能な応答と見なされます( RFC 1122 、40ページと RFC 792 、5ページ)。また、まったく返信がない場合もあります。残念ながら、誰もがRFC仕様に準拠しているわけではありません。残念ながら、SYNにFINで応答する実装を見てきました。はい、それはそれほど悪いことかもしれません。

質問2。ポートに到達するために管理するすべてのプローブは適切に応答されますか?

短い答え-必ずしもそうではありませんが、TCPオペレーティングシステム全体のスタック実装は異なります。たとえば、リスナプロセスがスワップアウトされた限られたリソースを備えた組み込みシステムが、プロセスによってがメモリに戻され、返信の可能性が閉じられました。これは規則というよりは例外ですが、誰もが標準に準拠するわけではないことに注意してください。一部にはSYNフラッド保護メカニズムが組み込まれている場合がありますDoSの試みとして、同じホストからのSYNセグメントが多すぎる可能性があります。

質問3。アプリケーションはプローブを無視できますか?

通常、それを行うのはアプリケーションの責任ではなく、これらの処理を行うのはOSスタックです。独自のプロトコルハンドラーを実装できないと言っているのではありませんが、まれなケースです。しかし、TCPハンドシェイクの通信の一部に発言権があるアプリケーションはほとんどありません。

これらの回答がお役に立てば幸いです:-)

0
Milen