さて、これらのコマンドはどれも優れたものですが、パケットをディスクに 記録する場合は、ログ保存用ディレクトリを指定する必要があります。そう すればSnortが自動的にパケットロガーモードに移行します。
./snort -dev -l ./logもちろん、この指定はカレントディレクトリにlogという名前のディレクトリが 作成されていることが前提となります。もしそうでなければ、Snortはエラー メッセージを表示して終了します。Snortがこのモードで動作する場合、認識した パケットをすべて収集し、データグラムに含まれるホスト毎のIPアドレスに基づいた ディレクトリ階層に保存します。
単純な-lスイッチだけを指定する場合、Snortがパケットを保存するディレクトリと してリモートコンピュータのアドレスを利用する場合もあれば、ローカルホスト アドレスを利用する場合もあることにお気付きかもしれません。ホームネット ワークに関連するログを取るためには、どのネットワークがホームネットワークで あるのかをSnortに指定する必要があります。
./snort -dev -l ./log -h 192.168.1.0/24このルールはSnortに対し、./logディレクトリにアプリケーションデータと 同様、データリンクとTCP/IPヘッダを出力して、192.168.1.0のClass C ネットワークに関連したパケットを記録したいという指定を行います。
入ってくるパケットはすべて、logディレクトリの下の リモート(192.168.1以外の)ホストアドレスに基づいた名前の サブディレクトリに保存されます。 注意すべき点として、両ホストがホームネットワーク上にある場合は、 それぞれのポート番号のうち大きい方に基づいて記録されます。 また、ポート番号が同じ場合は送信元アドレスに基づいて記録されます。
高速ネットワーク上にいる場合、あるいは後で解析するためによりコンパクトな 形式でパケットを記録したい場合は、バイナリモードでログを取ることを検討して ください。バイナリモードではパケットをtcpdump形式でログ保存用 ディレクトリ内の単一バイナリ・ファイルに記録します。
./snort -l ./log -bここで、コマンドラインが変化していることに注目してください。バイナリ モードでは全てを単一ファイルに記録します。その結果、出力ディレクトリの 構造を指定するためのホームネットワークを指定する必要はなくなります。 さらに、バイナリモードではパケットの一部だけでなく、パケット全体が 記録されるため、冗長モードで実行する必要もなければ、-dまたは-eスイッチを 指定する必要もありません。 Snortをロガーモードで動作させるために必要なことは、-lスイッチによる ログ保存用ディレクトリの指定と、デフォルトのASCII形式ではなく、 バイナリ形式でログを取得する指定を行う-bスイッチだけです。
いったんパケットがバイナリファイルに記録されれば、tcpdumpや Etherealのようなtcpdumpバイナリ形式をサポートする任意の スニッファープログラムを利用し、そのファイルからパケットを 読み込むことができます。Snortでも-rスイッチを利用してプレイバック モードにし、パケットを読み込むこともできます。Snortはtcpdump 形式のファイルを任意の動作モードで処理できます。たとえば、 バイナリログファイルをSnortで読み込み、スニッファーモードで パケットを画面にダンプするには、次のようにします:
./snort -dv -r packet.logファイル内のデータは、コマンドラインから利用可能なBPFインタフェースの他に、 Snortのパケットロギングおよび不正侵入検知モードなど様々な方法で 処理できます。たとえば、ログファイルからのICMPパケットのみを確認したいので あれば、単にコマンドラインでBPFフィルターを指定すれば、Snortはファイル内の ICMPパケットだけを確認できます。
./snort -dvr packet.log icmpBPFインタフェースの詳しい利用方法については、snortおよびtcpdumpの manページをご参照ください。