2

 Centos で IDS として Snort を実行しています。Snort が syn フラッド攻撃を検出できるかどうかをテストしようとしています。同じ LAN ネットワークから攻撃を送信しています。このルールを local.rules に追加しましたalert tcp !$HOME_NET any -> $HOME_NET 80 (flags: S; msg:"Possible TCP DoS"; flow: stateless; threshold: type both, track by_src, count 70, seconds 10; sid:10001;rev:1;)。Snort を高速モードで実行すると、Snort アラート ファイルがログに記録されません。ロギングしていましたが、現在はロギングしていません。そのため、攻撃を検出したかどうかはわかりません。Snort にこの攻撃を検出させるにはどうすればよいですか?

4

3 に答える 3

8

まず、このキーワードthresholdは非推奨であり、将来のリリースではサポートされません。代わりにキーワード「detection_filter」を使用する必要があります (参照)。

Syn Flood を開始するホストが$HOME_NET変数内に含まれていないことを確認する必要があります。それ以外の場合は、送信元 IP を「any」または$HOME_NET(それらが にある場合$HOME_NET) に変更する必要があります。これは、syn フラッド攻撃にも依存します。複数の送信元ホストを使用して宛先ホストのシンフラッドを行っていますか? または、1 つの送信元ホストを使用して宛先ホストのシンフラッドを行っていますか? これは違いを生むでしょう。複数の送信元ホストがある場合は、宛先別に追跡する必要があります (おそらく、どちらの方法でも宛先別に追跡する必要があります)。単一のホストから syn フラッドを開始している場合は、ソース別に追跡できます。
detection_filter のレートは、送信元 IP アドレスまたは宛先 IP アドレスによって追跡されます。これは、一意の送信元 IP アドレスごとまたは一意の宛先 IP アドレスごとにカウントが維持されることを意味します。そのため、syn フラッドに複数のソース IP がある場合はtrack by_dst、単一の宛先に向かう syn の量を追跡するために使用する必要があります。例:

alert tcp any any -> $HOME_NET 80 (flags: S; msg:"Possible TCP DoS"; flow: stateless; detection_filter: track by_dst, count 70, seconds 10;)

$HOME_NETこのルールは、最初の 70 個の syn の後、10 秒間の 1 つのサンプリング期間中に一意の IP にすべての syn でアラートを出します。このようなルールを記述すると、通常の接続数を知る必要があるため、問題が発生する可能性があります。Web サーバーが 10 秒間に 70 を超える接続を取得することを期待していますか? その場合は、カウントを増やすか、秒を減らす必要があります。

syn フラッド攻撃が の宛先 IP に複数の syn を生成する固有のソースを持っている場合、by_src で$HOME_NET追跡できます。

alert tcp any any -> $HOME_NET 80 (flags: S; msg:"Possible TCP DoS"; flow: stateless; detection_filter: track by_src, count 70, seconds 10;)

$HOME_NETこのルールは、最初の 70 個の syn の後、10 秒間の 1 つのサンプリング期間中に、一意の IP から一意の IP までのすべての syn で起動します。
例: ホスト 10.1.1.1 が 10 秒間に 83 個の syn をホスト 10.1.1.2 に送信すると、それらの syn の最後の 13 個が警告されます。

両方のシナリオ (単一または複数の送信元 IP) をカバーするため、宛先別に追跡することをお勧めします。Web サーバーへの接続の量を単純に制限するルールが必要なため、宛先への接続を追跡し、特定のしきい値に達したら接続をドロップして、サーバーが過負荷になるのを防ぎます。通常、syn フラッドは送信元 IP をランダム化するため、送信元で追跡している場合、syn フラッドを防ぐことはできません。

于 2014-10-10T03:21:34.080 に答える
0

私の答えとして、 $HOME_NET 変数が内部 LAN ネットワークであると仮定していますか? また、送信側と受信側のデバイスが同じサブネット上にあると想定しています。

あなたは取る必要があります!あなたの鼻息の声明の冒頭から。次のようになります。

alert tcp $HOME_NET any -> $HOME_NET 80 (flags: S; msg:"Possible TCP DoS"; flow: stateless; threshold: type both, track by_src, count 70, seconds 10; sid:10001;rev:1;)

あなたが持っている場合!インバウンド IP フィルタの場合、ホーム ネット以外のトラフィックを探します。同じネットワークとの間でトラフィックを送受信しているため、! を削除するまで Snort はトラフィックをキャッチしません。

また、snort ステートメントの先頭から括弧を外します。

于 2014-09-25T18:37:49.217 に答える