web-dev-qa-db-ja.com

経験豊富なユーザーはどのようにステートフルファイアウォールをテストしますか?

経験豊富なユーザーは、TCP/IPv6でステートフルファイアウォールをどのようにテストしますか?

私のテストケースには以下が含まれます:

  1. 要求なしのエコー応答
  2. synなしのTCP ACK

特にIPv6のテストケースは他にありますか?

6
deepsky

NATトラバーサル

接続が明示的に許可されている場合でも、NATで動作する別々のファイアウォールの背後でそれぞれ分離された2つのクライアントの方法は、相互に通信を確立できます。

UDPパケットには状態が含まれていません。最初のUDPパケットがNATを使用してファイアウォールを離れると、UDPトラフィックが同じ「セッション」を通じて返されるようになります。

クライアントがudpパケットを互いに大量に送信し始めると(同じ送信元/宛先ポートのタプル)、両方のファイアウォールがトラフィックを開始したと信じ、2つのクライアント間のトラフィックを許可し、それぞれがNATファイアウォール。

http://en.wikipedia.org/wiki/UDP_hole_punching

接続追跡

一部のファイアウォールは、tcp接続状態に基づいて接続を追跡するだけでなく、ircまたはftp経由でファイルを送信するというアプリケーションプロトコルの要求も追跡します。これは意図したとおりに機能する場合の機能ですが、意図しない接続に対してファイアウォールを開放するためにも使用できます。

この例は、XSS IRC DCC攻撃です。 http://encyclopediadramatica.ch/Firefox_XPS_IRC_Attack

3

一杯のコーヒー、スペックのコピー、およびlibpcapのマニュアルページを確認してください。

これらのパケットを作成して送信するプログラムを作成することはそれほど難しくありません。高レベルの流れは

  1. ユースケースを反復処理します(たとえば、エコー応答を使用しましょう)
  2. 適切な物理ヘッダーを含むデータ構造に適切なアドレスを入力します
  3. IPヘッダーのデータ構造に適切なアドレスとフラグを入力します
  4. ICMPデータ構造にエコー応答タイプコードと適切なペイロードを入力します
  5. これらすべてをchar *にコピーします
  6. RAWソケットを開き、char *パケットをネットワークに送信します

テストケースごとにこれを構築したら、アプリを実行し、ファイアウォールが正しい動作をすることを確認できます。もちろん、トラフィックをキャプチャして、wiresharkのようなものがテスト/ qaプロセスの一部として適切にそれを決定することを確認します。

2
Scott Pack