例えば、 flow:established
は、セッションが接続されているパケットに対してのみ検出しています。
次に、セッションが切断された後、サーバーは受信するパケットを拒否しますか?
簡単に言うと、flow
は、Streamプリプロセッサ(以前のStream5、Stream4)を利用した非ペイロード検出ルールオプションです。次のドキュメントを読むことをお勧めします。
たとえば、flow:establishedは、セッションが接続されているパケットに対してのみ検出します。
これについて詳しく説明します。 TCP接続は3ウェイハンドシェイクを使用します(3WHS)クライアントはSYNを送信し、サーバーはSYN + ACKで応答し、クライアントはACKで応答します。
画像の提供元: http://blog.wangyizhe.net/2015/10/TCP-3-way-Handshake/
ルールでflow:established
を使用する場合、SnortにTCPストリームの最初の3つのパケットを[通常]見ないでください。これは通常、コンテンツ(アプリケーションデータ)の内部。
established
オプションでflow
を使用しない場合:
TCP(UDP、ICMP、IPなど)を使用しない署名を作成する場合
3WHS内のパケットを対象とするように設計された署名を書き込む場合。
次に、セッションが切断された後、サーバーは受信するパケットを拒否しますか?
Snortはサーバーではないことに注意してください。それはネットワーク侵入防止/検出システムです([〜#〜] nips [〜#〜]/[〜#〜] nids [〜#〜])。パケットを拒否する唯一の方法は、インライン構成(NIPS)で構成して実行している場合です。そうでない場合は、トラフィックを監視できるだけであり、パケットを積極的に拒否またはドロップできません。
Snortが構成されており、インラインモードで実行されていると仮定します。
drop tcp any any -> any any (msg:"Dropping packets"; flow:established; sid:1; rev:1; )
...ルールは、最初の3WHSの後に見られたすべてのTCPパケットで起動します。これは、クライアントとサーバーの両方に正常な接続として表示されますが、データは転送されません。 Snortはパケットをドロップします。
Snortは検出エンジンであることを忘れないでください。したがって、データの送信/受信や接続の開始/確立に関してはSnortを考えないでください。それを受動的な観測者(またはIPSの場合はナイトクラブの警備員)と考えてください。
flow
またはStreamプリプロセッサの詳細については、上記にリンクしたドキュメントをお読みください。
これがあなたの質問に答えることを願っています!