web-dev-qa-db-ja.com

Snortのフローオプションはどのように機能しますか?

例えば、 flow:establishedは、セッションが接続されているパケットに対してのみ検出しています。

次に、セッションが切断された後、サーバーは受信するパケットを拒否しますか?

2
chwap

簡単に言うと、flowは、Streamプリプロセッサ(以前のStream5、Stream4)を利用した非ペイロード検出ルールオプションです。次のドキュメントを読むことをお勧めします。


あなたの質問に答えるには:

たとえば、flow:establishedは、セッションが接続されているパケットに対してのみ検出します。

これについて詳しく説明します。 TCP接続は3ウェイハンドシェイクを使用します3WHS)クライアントはSYNを送信し、サーバーはSYN + ACKで応答し、クライアントはACKで応答します。

TCP 3-way handshake

画像の提供元: http://blog.wangyizhe.net/2015/10/TCP-3-way-Handshake/

ルールでflow:establishedを使用する場合、SnortにTCPストリームの最初の3つのパケットを[通常]見ないでください。これは通常、コンテンツ(アプリケーションデータ)の内部。

establishedオプションでflowを使用しない場合:

  1. TCP(UDP、ICMP、IPなど)を使用しない署名を作成する場合

  2. 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プリプロセッサの詳細については、上記にリンクしたドキュメントをお読みください。

これがあなたの質問に答えることを願っています!

1
Damian T.

flowオプションは、syn送信者をクライアントとして選択します。そして、snortにトラフィックの方向を教えてください。

また、Snortはトラフィックの動作には影響せず、idsモードでのみ検査します。

flowオプションは、単純なネットワークに役立ちます。

enter image description here

ただし、複雑なネットワークでは役に立たない場合があります。

enter image description here

0
Mr.kang