Snortを使用して攻撃を個別に記録するにはどうすればよいですか。基本的に、異なるファイルから呼び出された攻撃を個別にログに記録します。 ddos.rules
とlog.rules
の2つのファイルがある場合と同様に、ddos.rules
から生成されたログと別のファイルでlog.rules
から生成されたログが必要です。
それは可能ですか?可能であればどうすればよいですか?
直接ではなく、希望する方法ではありません。マニュアルの セクション2.6 で説明されているように、複数のアラート出力を指定できます。ただし、これは同じアラートを複数の場所に送信するだけです。 ddos.rules
とlog.rules
の両方からインポートされた署名からインポートされたアラートは一緒に記録されます。
恐れる必要はありません。私たちはそれを機能させることができます。あなたがしなければならないことは、複数の設定ファイルを作成し、各ログを個別に持つことです。トラフィックをどのように分割するかに応じて、いくつかの方法があります。
Snortには、さまざまな構成ファイルに対してさまざまなパケットストリームを処理できるメカニズムが組み込まれています。これは、ネットワークまたはVLANに基づいてアプリケーションをセグメント化する場合に役立ちます。つまり、すべてのメールアプリは1つのVLANにあり、Webサーバーは別のVLANにあります。詳細はマニュアルの セクション2.1 に記載されていますが、理解すべき最も関連するビットは、 VLANまたはネットワーク。重複はありません。これが有効な構成であることを意味します。
config binding: /etc/snort/snort.conf-ddos net 192.168.100.0/24
config binding: /etc/snort/snort.conf-log net 192.168.200.0/24
しかし、そうではありません。
config binding: /etc/snort/snort.conf-ddos net 192.168.100.0/24
config binding: /etc/snort/snort.conf-log net 192.168.100.0/24
この状況でこの機能を使用するには、ホストのセットに対してddos.rules
を実行し、別のホストのセットに対してlog.rules
を実行する必要があります。私はあなたがこのアプローチを取ることを望んでいないと思います。
これまで、snortはシングルスレッドなので、1つの完全なプロセッサを利用するのに十分なほど処理が集中すると、パケットのドロップが開始されます。このおかげで、snortのいくつかのバージョンが実行されているsnortセンサーがよく見つかります。一般に、これはPF_RINGと呼ばれるものを使用して機能します。これは、パケットロードバランサーのようなものです。または、ネットワークスペースを切り刻んで、ブロックごとに1つのバージョンのsnortを実行します。したがって、snortd
モニタリング192.168.1.0/25
の1つのインスタンスと、192.168.1.128/25
を監視する別のインスタンスがあります。ほとんどの場合、各プロセスは同じ設定ファイルを使用しますが、特定のアドレスのみを監視します。
私たちはそのアプローチを取り、それをあなたの状況で動作するように少しオンにすることができます。 2つの構成ファイルを作成し、関連する部分を設定します。
/ etc/snort/snort.conf-ddos
output alert_syslog: LOG_LOCAL0 LOG_ALERT
include $RULE_PATH/ddos.rules
/ etc/snort/snort.conf-log
output alert_syslog: LOG_LOCAL1 LOG_ALERT
include $RULE_PATH/log.rules
次に、syslogエンジンをセットアップし、変更を加えた後で再起動します。
local0.alert /var/log/snort/alert-ddos.log
local1.alert /var/log/snort/alert-log.log
これで、snortを実行するときに2回実行し、それぞれが-c
オプションを使用します。初回は-c /etc/snort/snort.conf-ddos
を使用し、2回目は-c /etc/snort/snort.conf-log
を使用します。
これで、snortd
の2つのインスタンスが実行され、1つはddos.rules
シグネチャとLOCAL0へのログのみで、もう1つはlog.rules
シグネチャとLOCAL1へのログであるはずです。 Syslogが動作している限り、混ざり合うことなくアラートを個別にログに記録する必要があります。
Snortは確かに複数の同時ログターゲットをサポートしています。私はあなたの望ましいユースケースでは、可能性はあなたのルールセットとあなたがそれらをログに記録したい方法にかかっていると思います。私はこの方法でこれを行ったことがなく、必要性/欲望はありません。
http://manual.snort.org/node21.html をご覧ください。このリンクはSnort出力オプションの詳細です。
私は、snortの複数のインスタンスを実行するという考えがあまり好きではありません。私が覚えている限り、snortはマルチスレッド検出エンジンではありません。このソリューションは、n個のルールセットがあることを前提として、パフォーマンスの問題を引き起こすと思います。これは、n個のsnortインスタンスを実行することを意味しますか?
それで、どうやってそれを行うことができますか?ログパーサーを使用する必要があります。したがって、基本的には、snortにすべてのアラートを単一のログファイルに記録させます。このファイルは、たとえば「.csv」にすることができ、単純なログパーサーを使用してファイルを解析し、ルールセットごとに個別のログファイルを作成できます。
Snortログを解析できるよく知られたログパーサーツールはありますか?はい、もちろん、Windowsを使用している場合は Log Parser 2.2 を使用できます。
Linuxなどの他のプラットフォームを使用している場合。 pythonを使用して、ログを解析する小さなスクリプトを作成できます。これを参照してください サンプルコードの投稿 。
現在、IDSアラート相関システムに取り組んでいます。私はあなたにあなたが望むなら正確にあなたが望むことをする小さなpythonスクリプト(私のシステムの一部))を与えることができますか?