Next Up Previous Contents References
出力モジュール

2.5 出力モジュール

出力モジュールはバージョン1.6から新たに導入された機能です。出力 モジュールを利用することで、Snortの書式や提示方法の柔軟性が 高まります。出力モジュールはプリプロセッサや侵入検知エンジンに 続き、Snortのアラートやログ取得サブシステムが呼び出された際に 実行されます。ルールファイル中のディレクティブの形式はプリ プロセッサのものに非常に類似しています。

Snort設定ファイルには複数の出力プラグインを指定することができます。 同一のタイプ(log、alert)に複数のプラグインが指定されている場合は、 イベントが発生した時点で、プラグインが順次スタックされ、呼び出さ れます。 標準のログ取得およびアラートシステムと同様に、出力プラグインは そのデータをデフォルト設定の/var/log/snortに出力するか、あるいは (-lコマンドラインスイッチを利用して)ユーザが指定したディレクトリに 出力します。

出力モジュールは、ルールファイルにoutputキーワードを指定することで 実行時に読み込まれます。

output <name>: <options>

output alert_syslog: LOG_AUTH LOG_ALERT

Figure 42: 出力モジュールの設定例

2.5.1 Alert_syslog

このモジュールはsyslog機能にアラートを送信します(-sコマンドライン スイッチに酷似しています)。また、このモジュールを利用すれば、 ユーザはSnortのルールファイル内でログ取得ファシリティや優先度を 指定できるようになり、アラートを記録する際の柔軟性が高まります。

2.5.1.1 有効なキーワード

オプション

ファシリティ

プライオリティ

2.5.1.2 書式

alert_syslog: <facility> <priority> <options>

2.5.2 Alert_fast

これはSnortのアラートを高速な1行形式で指定された出力ファイルに 出力します。この方式はパケットヘッダのすべてを出力ファイルに 出力する必要がないため、完全なアラートよりも高速にアラートを 出力できる方式です。

2.5.2.1 書式

alert_fast: <output filename>

output alert_fast: alert.fast

Figure 43: 高速アラートの設定

2.5.3 Alert_full

パケットヘッダ全体を含んだSnortのアラートメッセージを出力します。 アラートは標準のログ取得先ディレクトリ(/var/log/snort)、または コマンドラインで指定されたログ取得先ディレクトリに書き込まれます。

ログ取得先ディレクトリの下には、IPアドレス毎にディレクトリが1つ 作成されます。これらのファイルは、アラートを引き起こしたパケットの デコード済みパケットダンプとなります。これらのファイルを作成する ようにすると、Snortの性能が大幅に低下します。この出力方式は、 ほとんどトラフィックがない状況以外にはお勧めできません。

2.5.3.1 書式

alert_full: <output filename>

output alert_full: alert.full

Figure 44: フルアラート設定

2.5.4 Alert_smb

このプラグインは、WinPopupアラートメッセージをこの出力プラグインの 引数として指定されたファイルで指定されたNETBIOSマシンに送信します。 このプラグインは(一般にroot権限である)Snortと同じ特権レベルで、 外部の実行形式のバイナリ(smbclient)を実行するため、このプラグインの 使用はお勧めできません。Workstationファイルの書式は、アラートを 受信させたいホストのNETBIOS名を1行につき1つ記述したリストです。

2.5.4.1 書式

alert_smb: <alert workstation filename>

output alert_smb: workstation.list

Figure 45: SMBアラートの設定

2.5.5 Alert_unixsock

UNIXドメインソケットを設定し、アラートレポートをUNIXドメインソケットに 送信します。外部プログラムやプロセスは、このソケットをリッスンし、 Snortのアラートやパケットデータをリアルタイムに受信できます。現在、 この機能は実験段階のインタフェースです。

2.5.5.1 書式

alert_unixsock

output alert_unixsock

Figure 46: UnixSock alert設定

2.5.6 Log_tcpdump

log_tcpdumpモジュールは、パケットをtcpdump形式のファイルに記録します。 この機能は、後日、収集されたトラフィックの分析をtcpdump形式のファイル 読み込みに対応した多数のツールで行う場合に有効です。

このモジュールでは、出力ファイル名を単一の引数として指定できます。 ファイル名の末尾にはUNIXタイプスタンプの秒数が付加されることに 注意してください。このことにより、個別のSnortの実行結果のデータを はっきり区別できます。

2.5.6.1 書式

log_tcpdump: <output filename>

output log_tcpdump: snort.log

Figure 47: Tcpdump出力モジュールの設定例

2.5.7 Database

Jed Pickel氏から提供された本モジュールは、各種SQLデータベースに Snortデータを送信します。このモジュールのインストール、設定方法に 関する詳細は[91]Incident.org Webページで入手できます。この プラグインに対する引数は、ログ保存先のデータベース名とパラメータ リストです。パラメータはパラメータ=引数という初期で指定されます。 利用例については、図48をご参照ください。

2.5.7.1 書式

database: <log | alert>, <database type>, <parameter list>
以下のパラメータが利用できます。

host
接続先のホスト。ゼロ長以外の文字列が指定された場合、 TCP/IP通信を利用します。ホスト名の指定がない場合、ローカル UNIXドメインソケットを通じて接続します。
port
接続先のサーバホストのポート番号、またはUNIXドメイン 接続用のソケットファイル名の拡張子。
dbname
データベース名。
user
ユーザ認証用のデータベースユーザ名
password
データベースがパスワード認証を要求する場合に 利用するパスワード
sensor_name
このSnortセンサーに対する独自の名前を指定します。 名前を指定しない場合は、名前が自動的に設定されます。
encoding
パケットペイロードおよびオプションデータは2進数(バイ ナリ)であるため、それをデータベースに保存するシンプルで移植可能な 方法は存在しません。また、BLOBSはデータベース間の移植性の問題から、 利用していません。そこで、以下のエンコーディングオプションを提供 していますので、お好みのオプションを選択できます。各オプションには それぞれ次のような長所と短所があります。

hex
(デフォルト) バイナリを16進文字列として表現します。

保存要件
― バイナリサイズの2倍
検索性
― 非常に優れる
対人可読性
― 真のgeekでもない限り読み取り不可能。 後処理が必要
base64
バイナリデータをbase64文字列として表現します。

保存要件
― バイナリサイズの約1.3倍
検索性
― 後処理なしには不可能
対人可読性
― 読み取り不可能。後処理が必要

ascii
バイナリデータをASCII文字列として表現します。 このオプションはオプション中唯一、(訳注:オリジナルの)データを 失うオプションです。非ASCIIデータは..として表現されます。なお、 このオプションを選択しても、IPおよびTCPオプションに対する データは16進数として表現されます。なぜならば、そのデータが ASCIIであることに意味をなさないからです。

保存要件
― 一部の文字列がエスケープされるため(&,<,>)、 バイナリより若干大きめ
検索性
― テキスト文字列の検索は非常に良いが、 バイナリの検索は不可能
対人可読性
― 非常に優れる
detail
どの程度詳細なデータを保存しますか? オプションは 次の通りです。

full
(デフォルト) アラートの引き金となったパケットの全詳細を 記録します(IP/TCPオプションとペイロードを含む)
fast
最低限のデータだけを記録します。このオプションを選択 する場合、解析アプリケーションでの可能性の一部を著しく制限されますが、 それでも一部のアプリケーションにとって最良の選択肢です。このオプ ションでは次のフィールドが記録されます - (timestamp, signiture, source ip, destination ip, source port, destination port, tcp flags, protocol)

さらに、ログ取得方式やデータベースタイプを定義する必要があります。 ログ取得のタイプにはlogとalertという2つのタイプがあります。log タイプを設定すると、データベースに対するログ取得機能をプログラムの ログ機能に追加します。タイプをlogに設定した場合、ログ出力チェーンで プラグインが呼び出されます。タイプをalertに設定すると、プラグインを プログラム内のアラート出力チェーンに追加します。

現在のバージョンのプラグインは以下の4つのデータベースタイプに 対応しています。MySQL, PostgreSQL, Oracle, unixODBC準拠データベースの 4種類が対応データベースです。利用するデータベースに適合したタイプを 設定してください。

注: この出力プラグインにはtagキーワードを用いて生成されたアラートを 処理する機能がありません。詳細については、第2.3.32節を ご参照ください。

output database: log, mysql, dbname=snort user=snort host=localhost password=xyz

Figure 48: データベース出力プラグインの設定

2.5.8 CSV

CSV出力プラグインを利用すれば、データベースに容易にインポート可能な 書式でアラートデータを出力することが可能となります。このプラグイン にはファイルへのフルパス、出力書式オプションの2つの引数が必要です。

書式オプションのリストは次の通りです。書式オプションがデフォルト設定の 場合、書式オプションリストに記載された順に出力されます。

2.5.8.1 書式

output alert_CSV: <filename> <format>


output alert_CSV: /var/log/alert.csv default

output alert_CSV: /var/log/alert.csv timestamp, msg

Figure 49: CSV出力の設定

2.5.9 Unified

統合(Unified)出力プラグインは、Snortイベントを記録する最速方式を 目指したものです。本プラグインは、イベントをalertファイルと packet logファイルに記録します。alertファイルには、イベントの 高いレベルの詳細情報が含まれています(ip, protocol, port, message id)。一方、logファイルには詳細なパケット情報が含まれます(関連する event idを含むパケットダンプ)。

両ファイルともspo_unified.hに記載されているバイナリ形式で書かれて います。Barnyardが利用可能になれば、Barnyardは現行の出力プラグインを 新しいアーキテクチャに組み込み、ログ記録を行います。近いうちに、 統合出力フォーマットは活動量の多いセンサーのSnortデータを記録する 標準方式となるでことしょう。Snortはリアルタイムなデータ収集に フォーカスする一方で、Barnyardはセンサーの効率を低下させることなく、 複雑なログ記録方式を可能にします。

各ファイルを書き込む際に、ファイル名の末尾にはUNIXタイプスタンプの 秒数が付加されることにご注意ください。

2.5.9.1 書式

output alert_unified: <file name> 

output log_unified: <file name>

output alert_unified: snort.alert 

output log_unified: snort.log

Figure 50: Unified設定例

2.5.10 Log Null

特定のタイプのトラフィックに対しては、アラートは出力するものの パケットログを登録しないルールを作成できると好都合な場合が あります。Snort 1.8.2では、log_nullプラグインが導入されました。 これは、-Nコマンドラインオプションに相当するものですが、 ルールタイプ内で動作させることができます。

2.5.10.1 書式

output log_null

output log_null  # like using snort -N

ruletype info {
    type alert
    output alert_fast: info.alert
    output log_null
}


Figure 51: Log Null利用例



Next Up Previous Contents References