8月 2

Snort + BASE インストールメモ

以前のblogでは基本的にソースからのインストールでしたが
今回は、個人的にアツいOS Ubuntuでのインストールなので
手間も時間も比較的少なくできるのでは?と思います。

インストール環境などのバージョンは以下の通りです。
Ubuntu : 9.04
Snort : 2.8.41
BASE : 1.4.3.1

まずは、rootユーザへと昇格し、apt-getのでDBを更新。
sudo su -
apt-get update

次に必要なパッケージを一気にインストール
apt-get install libpcap0.8-dev \
libmysqlclient15-dev \
mysql-client-5.0 \
mysql-server-5.0 \
bison \
flex \
apache2 \
libapache2-mod-php5 \
php5-gd php5-mysql \
libphp-adodb \
php-pear \
libc6-dev \
g++ \
gcc \
pcregrep \
libpcre3-dev \
(インストール中にMySQLのrootユーザパスワードを設定する画面になります。)
次に[snort]用のユーザとグループを作成します。
groupadd snort
useradd -g snort snort -s /bin/false

Snort本体とルールのダウンロードを行います。
ダウンロードは、[/usr/local/src]以下にディレクトリを作成し、行っています。
別ディレクトリのほうがいいんだけど、、、って方は
任意のディレクトリに読み替えてください。
また、SnortのルールをDLしている部分の[OINKCODE]の部分については
Snortのサイトでregistした後、発行されたものに置き換えて実行してください。
cd /usr/local/src
mkdir snort
cd snort
wget http://dl.snort.org/snort-current/snort-2.8.4.1.tar.gz
mkdir snortrules
cd snortrules
wget http://www.snort.org/pub-bin/oinkmaster.cgi/OINKCODE/snortrules-snapshot-2.8.tar.gz

必要なもののDLが完了したらSnortのインストールです。
cd /usr/local/src/snort/
tar zxvf snort-2.8.4.1.tar.gz
cd nort-2.8.4.1
./configure -enable-dynamicplugin --with-mysql
make
make install

ルールやログの格納するためのディレクトリを作成し、ルールファイルのコピーなど
各種ポジショニングを行います。
mkdir /etc/snort /etc/snort/rules /var/log/snort
cd /usr/local/src/snort/snort-2.8.4.1/etc/
cp * /etc/snort/
cd /usr/local/src/snort/snortrules
tar zxvf snortrules-snapshot-2.8.tar.gz
rm snortrules-snapshot-2.8.tar.gz
cp * /etc/snort/rules

設定ファイル[snort.conf]の編集
vi /etc/snort/snort.conf
設定ファイルは自身の環境にあった形で編集を行います。
最低限、変更が必要と思われるところは以下の三つです。
var HOME_NET any # ここは監視するネットワークを記述。
var EXTERNAL_NET any # ここは監視するネットワーク以外。つまり外部として扱うべきネットワークを記述。
var RULE_PATH ../rules # Snortのルールファイルの格納場所を記述

[HOME_NET]と[EXTERNAL_NET]の記述方法例は以下の通りを参考にしてください。

192.168.1.0、24bit(255.255.255.0)ネットワークをHOME_NETに指定する場合。
var HOME_NET 192.168.1.0/24
192.168.1.100のIPアドレスをHOME_NETに指定する場合
192.168.0.100/32
複数のネットワークやIPアドレスを指定したい場合は
var HOME_NET [192.168.1.0/24,192.168.2.0/24]
var HOME_NET[192.168.1.1/32,192.168.1.2/32]

といった記述も可能です。
また、[EXTERNAL_NET]は[HOME_NET]以外を指定することが殆どであるため
下記のような[HOME_NET]以外。という意味を持った記述をすることも可能です。
var EXTERNAL_NET !$HOME_NET
[RULE_PATH]に関しては、このメモに従った場合[/etc/snort/rules]を指定することになります。
このメモで使用した環境では以下のような記述へと変更しました。
var HOME_NET 192.168.0.0/24
var EXTERNAL_NET !$HOME_NET
var RULE_PATH /etc/snort/rules

次に設定ファイルに追記する部分です。
はじめのパッケージのインストールで[MySQL]をインストールしました。
Snortで検知したアラートはこの[MySQL]に格納することになるため
ここでは下記のようにアラートを[MySQL]に保存する設定の記述を追加します。
output database: alert, mysql, user=snort password=[設定するパスワード] dbname=snort host=localhost
[設定するパスワード]の部分にはこの後、[MySQL]の設定を行うときに作成する
[snort]ユーザのパスワードを予め決めておき記述しておいてください。
[snort.conf]の編集が完了したら、所有者のみしか編集できないよう設定ファイルのパーミッションを変更します。
chmod 600 /etc/snort/snort.conf

[MySQL]にアラート出力用のデータベースの作成とユーザ[snort]を作成します。
ここでは、[MySQL]のrootでのログインを行います。
使用するパスワードは、はじめのパッケージの追加の際に設定したパスワードとなります。
また、[snort]ユーザに権限を与える(grantの)部分では、’snort_password’を
[snort.conf]で[MySQL]へのアラート出力の設定を記述した際のパスワードを合わせてください。
mysql -u root -p
create database snort;
grant all privileges on snort.* to 'snort'@'localhost' identified by 'snort_password';
exit;

データベース、ユーザの作成が完了したら、[snort]付属のテーブル作成ファイルを用いて
アラート保存用のテーブルを作成します。
cd /usr/local/src/snort/snort-2.8.4.1/schemas
mysql -D snort -u snort -p < create_mysql

これで、[snort]が動作する環境は構築完了です。
環境が問題なく構築されているかのテストを兼ねて[snort]の起動テストを行います。
snort -c /etc/snort/snort.conf
上記のコマンドを実行して下記のような豚が出てきたら起動成功です。
--== Initialization Complete ==--

,,_ -*> Snort! <*- o" )~ Version 2.8.4.1 (Build 38) '''' By Martin Roesch & The Snort Team: http://www.snort.org/team.html Copyright (C) 1998-2009 Sourcefire, Inc., et al. Using PCRE version: 7.8 2008-09-05
起動の成功を確認したら、[ctrl]+[c]で終了してください。
最後に[snort]およびログの格納先ディレクトリの権限を変更します。
chown -R snort:snort /etc/snort/
chown -R snort:snort /var/log/snort

これで、[Snort]のインストールは完了しました。
次にアラートを確認するためのフロントエンドである
[BASE](Basic Analysis and Security Engine)のインストールを行います。
まずは、ダウンロードしてからHTTPサーバ公開用ディレクトリにコピーしパーミッションを変更します。
wget http://downloads.sourceforge.net/sourceforge/secureideas/base-1.4.3.1.tar.gz?use_mirror=jaist
tar zxvf base-1.4.3.1.tar.gz
mv base-1.4.3.1 /var/www/base
chmod 757 /var/www/base

[BASE]の動作に必要なPHPモジュールをpearでインストールします。
pear install Image_Color
pear install Image_Canvas-alpha
pear install Image_Graph-alpha
pear install Mail
pear install Mail_MIME

すべてのモジュールがインストールできたら
次はブラウザで下アドレスにアクセスして[BASE]の設定を行います。
http://yourIPaddress/base/setup/index.php
「The following pages will prompt you for set up information ~」と表示されるので[Continue]をクリック。

【Step 1 of 5】
[Pick a Language]ではお好きな言語を選択してください。
[Japanese]にすると日本語で表示可能です。
個人的には[English]のほうがすっきりしていて見やすいという印象があります。
[Path to ADODB]は、[/usr/share/php/adodb]を入力して、[実行]をクリック。

【Step 2 of 5】
このステップでは必要項目のみ下記のように入力します。
[Pick a Database type]→[MySQL]
[Database Name]→[snort]
[Database Host]→[localhost]
[Database User Name]→[snort]
[Database Password]→[MySQLの設定で設定したsnortユーザのパスワード]

上記入力が完了したら[実行]をクリック。

【Step 3 of 5】
[BASE]へのアクセスの際の認証を設ける場合には設定を行いますが
今回は省略。
何も入力せずに[実行]をクリック。

【Step 4 of 5】
snortデータベースに[BASE]用のテーブルを作成します。
[Create BASE AG]をクリック。
エラーが発生せず、問題なく完了したら
[Now continue to step 5...]のリンクをクリック。

【Step 5 of 5】
設定ファイル(/var/www/base/base_conf.php)が書き込まれBASEのトップページが表示されれば成功です。
設定ファイルの書き込みが終わったので、書き込み権限を削除しておきます。
chmod 755 /var/www/base

以上でインストール作業は、すべて完了です。

[Snort]を起動するときは以下のように実行します。
snort -c /etc/snort/snort.conf -i eth0 -D -u snort -g snort

正常に起動できたかどうかの確認は
ps ax|grep snort
などでプロセスの存在を確認するか
詳しくエラーなどを知りたい場合は、[/var/log/daemon.log]で確認するといいでしょう。
上記のログに下記のような記述があった場合は起動成功です。
Snort initialization completed successfully (pid=xxxx)


Copyright 2021. All rights reserved.

Posted 2009年8月2日 by ntsuji in category "memo", "packet