web-dev-qa-db-ja.com

なぜステートフルおよびステートレスのファイアウォールと呼ばれるのですか?

これらのファイアウォールの動作の名前について疑問に思っています。私の基本的な理解は、ステートフルフィルタリングでは、ルールを明示的に指定せずにインバウンドトラフィックがアウトバウンドレスポンスを返すことができるのに対し、ステートレスではアウトバウンドルールを指定する必要があるということです。

わかりません。ステートレスと呼ばれる明示的なルールとステートフルと呼ばれる他のルールが必要なのはなぜですか?

20
kickpuncher11

あなたはほぼ正しいです。ただし、ステートフルインスペクションを使用すると、ファイアウォールを通過するデータストリームをより詳細に制御できます。

A Cybrary記事 は言う:

ステートレスファイアウォールはネットワークトラフィックを監視し、送信元アドレスと宛先アドレス、またはその他の静的な値に基づいてパケットを制限またはブロックします。トラフィックパターンやデータフローを「認識」していません。ステートレスファイアウォールは単純なルールセットを使用しますが、パケットがファイアウォールによって受信された可能性を考慮に入れていないため、要求どおりのふりをしません。

ステートレスファイアウォールフィルターは、アクセスコントロールリスト(ACL)とも呼ばれ、ステートフルにトラフィックを検査しません。代わりに、パケットの内容を静的に評価し、ネットワーク接続の状態を追跡しません。

ステートフルファイアウォールは、トラフィックストリームをエンドツーエンドで監視できます。彼らは通信経路を認識しており、トンネルや暗号化などのさまざまなIPセキュリティ(IPsec)機能を実装できます。技術的には、これはステートフルファイアウォールがTCP接続がどの段階にあるか(オープン、オープンセンテッド、同期、同期確認、または確立)を通知できることを意味します。MTUが変更されたかどうかを通知できます。パケットがフラグメント化されているかどうかなど.


彼らは実際に名前が意味することをしているのでそれらはそのように名付けられました。

Stateless:状態を覚えておらず、通過する現在のパケットをルールリストに従ってフィルタリングするだけです。

Stateful:通過したデータストリームの状態(以前のすべてのパケットで起こったこと)を記憶し、ステートレスの場合と同じリストに基づいてフィルターします。ただし、状態情報に基づいてフィルタリングすることもできます。

ファイアウォールのメモリに保存されている状態情報を使用すると、以前に要求した内容を正確に実行できます。


新しい着信TCP接続(SYNフラグでマークされたTCPパケット))およびすべての確立された/関連するトラフィックの内部/外部への通過を許可するルールを追加できます。

TCPの場合、クライアント(SRC IP/SRC PORT)はSYNパケットをサーバー(DST IP/DST PORT)に送信してTCP接続を開きます。ファイアウォールには、このパケットができるルールがありますパス(新しいTCPそのサーバーへの接続のみ)。ファイアウォールは、接続を開く要求がサーバーに送信されたことを記憶します(src IP、srcポート、dst IP、dstポート、接続の状態-この場合はCONNECT)であり、サーバー側からのSYN/ACKパケットのみを予期します。この具体的な他のパケットはありませんTCP接続はそれを(双方向で)通過できます)サーバー次に、SYN/ACKを送信し、ファイアウォールはHALF-OPEN状態を記憶し、クライアントからのACKフラグ付きパケットのみを予期します。クライアントがACKを送信すると、接続の状態はCONNECTEDに変更され、フラグACK(データ)FIN/ACKを持つパケットのみが閉じます接続)は今通過できます。接続終了手順でも同じことが発生するため、通過するプロトコルとfilを介して完全に制御することが可能です。無効なパケットを削除します。


TCPの場合、説明と理解は少し難しいです。ICMPの方がはるかに簡単です。ECHOとREPLYの2つの基本的なICMPパケットがあります。

ステートフルファイアウォールの場合、ECHOが以前に送信された場合にのみ、REPLYがファイアウォールを通過できるようにすることができます。

ステートレスの場合、ECHOとREPLYが通過できるかどうかを制御することのみが可能であり、サーバーは、要求されなくてもいつでもREPLYを送信できます。

34
Fis

Statelessは、単一のパケットのみに基づいて決定(ドロップ、受け入れ、...)を行うことを意味し、それ以上のコンテキストはありません。 Statefulは、以前のパケットに基づいていくつかのコンテキスト情報を維持し、パケットの処理方法を決定するときにそれを含めることを意味します。

このコンテキストは、以前に確立された接続(つまり、TCPまたはUDPのような接続のような関連付け)のような「実際の」接続に関するものです。接続の保存されたstateにはソースが含まれますおよび宛先IPとポート、最後のアクティビティの時間(タイムアウト状態の場合)、およびTCPの場合は現在のシーケンス番号も。現在の状態に一致する新しいパケットが到着すると更新されます。接続が明示的に閉じられた場合(TCP FINハンドシェイク)または暗黙的に閉じられた場合(アイドルタイムアウト)は削除されます。

このような状態を維持することで、確立された接続に属するパケットを照合できます。これにより、信頼されたネットワークの内部から以前に開始された接続に一致するトラフィックを簡単に許可できますが、信頼されていない外部から開始された接続はすべて拒否できます。これにより、ファイアウォールの構成がよりシンプルで安全になりますが、(状態の)メモリ使用量が増加し、(状態のルックアップに必要な時間が原因で)パフォーマンスが低下します。

21
Steffen Ullrich

ステートフルファイアウォール-ステートフルファイアウォールは、通過する接続を認識します。ユーザーの接続に関する情報を、接続テーブルと呼ばれる状態テーブルに追加して維持します。次に、この接続テーブルを使用して、ユーザー接続のセキュリティポリシーを実装します。ステートフルファイアウォールの例は、PIX、ASA、チェックポイントです。

ステートレスファイアウォール-(パケットフィルタリング)一方、ステートレスファイアウォールは、接続の状態ではなく、パケット自体のみを見ます。パケットフィルタリングファイアウォールの例は、Cisco IOSルータ上の拡張アクセスコントロールリストです。

6
Kiven Wanda