Oinkmaster とは、Snort のルールセットを自動で更新するためのツールです。perl で書かれています。ここでは前述した、Sourcefire VRT Certified Rules を利用するため、先に Oinkコード を取得 しておく必要があります。
snort-2.6.x から、本体にルールセットが含まれなくなりました。そのため、新規に snort をセットアップする場合は、事前にルールセットを入手しておく必要があります。2.6.x に併せて原稿を書き直していますが、これまでの説明ではルールセットを入手しなければ、snort を起動することが出来ませんので注意して下さい。
2006/12/10 補足
Oinkmaster をインストールする前に準備が必要です。snort のルールセットが格納されているディレクトリ、ここでは /etc/snort/rules になりますが、Oinkmaster ユーザがこのディレクトリに対して適切なアクセス権を持っている必要があります。
snort は snort ユーザで実行しているため、snort 権限で oinkmaster を実行すればと思われるかもしれませんが、snort ユーザが使用している shell ではoinkmaster を実行させることが出来ません。
そのため、新たに oinkmaster ユーザを作成してグループ権限で /etc/snort/rules を更新するといった工夫が必要になります。
以下の条件で oinkmaster ユーザを作成します。
oinkmaster が snort ルールディレクトリにアクセスが出来るよう、グループ(snort)に許可を与えます。
oinkmaster がルールセット更新を行なう際、前回のルールセットをバックアップするディレクトリが必要になります。
以上で Oinkmaster をインストールする準備が出来ました。
Oinkmasuter を以下の公式サイトから入手します。
入手先 => http://oinkmaster.sourceforge.net/
今回使用したバージョンは 2.0 です。利用可能なバージョンは snort のバージョンによって異る場合があります。
追記 06/10/28
http://oinkmaster.sourceforge.net/oinkmaster-snapshot.tar.gz
でも検証しました。
適当なディレクトリへ展開して下さい。
展開したディレクトリへ移動し、本体を以下のファイルを先ほど作成した oinkmaster のホームディレクトリへコピーします。
oinkmaster の設定ファイルを設置するディレクトリを作成し、配置します。
Oinkmaster の設定は、上記で作成した /usr/local/oinkmaster/etc/oinkmaster.conf で行ないます。 修正箇所はルールセットのダウンロードパスのみです。
以下を修正します。前のページで取得した oink コードを指定します。
# Example for Snort-current ("current" means cvs snapshots).
# url = http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode>/snortrules-snapshot-CURRENT.tar.gz
↓
url = http://www.snort.org/pub-bin/oinkmaster.cgi/取得したoinkコード/snortrules-snapshot-CURRENT.tar.gz
URL を2.4 から2.6へ変更しても駄目でした。カレントバージョンの snort のシグネチャである snortrules-snapshot-CURRENT.tar.gz を使用します。次期バージョンが出た場合、2.6 へ URL を変更する必要があるのだと思います。
ルールセットは、Snort のバージョンに合わせる必要があり、異るとsnort を起動できません。おそらく警告が出るためアップグレード時期を見逃さないという意味で都合が良いのかもしれません。
ちなみにCommunity によるルールセットを使用する場合は、以下のコメントを外します。こちらは、ライセンスを取得する必要はありませんので直に利用できます。 上記、VRT ルールセットを利用する場合は、この設定は必要ありません。
# Example for Community rules
# url = http://www.snort.org/pub-bin/downloads.cgi/Download/comm_rules/Community-Rules.tar.gz
↓コメントを外すだけです。
url = http://www.snort.org/pub-bin/downloads.cgi/Download/comm_rules/Community-Rules.tar.gz
oinkmaster を利用して、snort 起動に必要なルールセットをゲットします。実行する前に今一度、ユーザ oinkmaster が /etc/snort/rules に適切な権限を持っているか、パーミッションにミスがないか確認して下さい。
失敗すると15分待たされる羽目になります。(VRTの場合)
ルールセットのアップデートは以下のコマンドを実行します。 ユーザ oinkmaster が実行する必要があるので注意して下さい。
空っぽだった /etc/snort/rules にルールセットがダウンロードされ、/etc/snort/backup に 日付入りのバックアップファイルが作成されていれば成功です。
定期的にルールセットの更新を行うには、お約束の crond を利用します。/etc/crontab に以下を追記します。(一行です) -e で行うべきですが、横着して直接記述しています。
30 4 * * * oinkmaster /usr/local/oinkmaster/oinkmaster.pl -o /etc/snort/rules -b /etc/snort/backup -C /usr/local/oinkmaster/etc/oinkmaster.conf
この例では、毎朝、午前4時30分にルールセットの更新を行います。更新頻度に関しては、1日置きで充分かと思います。最短でも 15分以上間隔をあける必要があるので注意して下さい。(ウイルスほど更新頻度は高くありません。)
有効にするにはcrondデーモンを再起動して下さい。
ちなみに更新があった場合、crond から管理者宛に以下のメールが届きます。
ルールセット変更なし
[***] Results from Oinkmaster started Wed Mar 24 03:15:20 2004 [***]
[*] Rules modifications: [*]
None.
[*] Non-rule line modifications: [*]
None.
[*] Added files: [*]
None.
ルールセットに更新があった場合
[***] Results from Oinkmaster started Sun Mar 21 10:13:13 2004 [***]
[*] Rules modifications: [*]
None.
[*] Non-rule line modifications: [*]
None.
[+] Added files (consider updating your snort.conf to include them): [+]
-> web-frontpage.rules
管理者が自由に定義できる local.rules に関してはアップデートの対象とはなりませんので安心してください。
ルールセットを入手出来ましたので、ようやくsnort を起動する事が出来ます。snort 起動時にエラーがないか確認して下さい。問題がなければ、ACID のセットアップ、Swatch のセットアップ、FrexResp に関して設定を行います。
Snort + MySQL + ACID + Swatch + Flexresp を利用した不正浸入検知システムの 構築は、まだ入口に立ったばかりです。本当に大変です、、、道のりはまだ長いので、ここいらで一息つきましょう。
続きは以下で説明しています。ページ右メニューにも表示されています。
参照 => GUI で Snort パケットを管理、閲覧する ACID セットアップ