snort

■インストール環境などのバージョン
CentOS release 5.4 (Final)
Snort : 2.8.5.3
BASE : 1.4.5

2010/03/21時点
クリーンインストール
yum update
Apache(httpd)、MySQL(mysql-server,mysql-devel)インストール済

その他必要そうなパッケージ
・pcre(pcre-6.6-2.el5_1.7)
・pcre-devel(pcre-devel-6.6-2.el5_1.7)
・libpcap(libpcap-0.9.4-14.el5)
・libnet(libnet-1.1.2.1-2.rf)
・libpcap-devel(14:0.9.4-14.el5)
・autoconf(autoconf-2.59-12)
・automake(automake-1.9.6-2.1.noarch)
flex(flex-2.5.4a-41.fc6.i386)
・bison(bison-2.3-2.1.i386)
php-gd(5.1.6-24.el5_4.5)
php-mysql(5.1.6-24.el5_4.5)
php-pear(1:1.4.9-6.el5)
gcc(gcc-4.1.2-46.el5_4.2.i386)

snortグループ作成
groupadd snort
useradd -g snort snort -s /bin/false

snort & rule download
http://www.snort.org/downloads
snort-2.8.5.3.tar.gz
snortrules-snapshot-CURRENT.tar.gz

cd /usr/local/src
mkdir snort
cd snort
wget http://dl.snort.org/snort-current/snort-2.8.5.3.tar.gz

Snortルールファイル入手
Snort動作に必須のルールファイルを入手するため、ユーザ登録する(https://www.snort.org/signup)

ユーザ登録時のメールアドレス宛にユーザ名とパスワードが記載されたメールが送られてくるのでログインする

Snortルールファイル(Sourcefire VRT Certified Rules - The Official Snort Ruleset (registered-user release))をダウンロードする
※一度ダウンロードすると以後約15分間はダウンロードできないので注意

ダウンロードしたSnortルールファイルをサーバーの/rootディレクトリへアップロードしておく

mkdir snortrules
cd snortrules
wget http://www.snort.org/pub-bin/oinkmaster.cgi/OINKCODE/snortrules-snapshot-CURRENT.tar.gz

snortインストール
cd /usr/local/src/snort/
tar zxvf snort-2.8.5.3.tar.gz
cd snort-2.8.5.3
./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.5.3/etc/
cp * /etc/snort/
cd /usr/local/src/snort/snortrules
tar zxvf snortrules-snapshot-CURRENT.tar.gz
rm snortrules-snapshot-CURRENT.tar.gz
cp * /etc/snort/rules


yum設定ファイル編集
vi /etc/yum.conf
exclude=snort ← yumのアップデート対象からsnortを除外する

snort設定
vi /etc/snort/snort.conf

内部ネットワークアドレスを指定

var HOME_NET 192.168.1.0/24

内部からのアクセスを不正アクセスとして扱わない

var EXTERNAL_NET any

メールサーバーの指定

var SMTP_SERVERS $HOME_NET

DNSサーバの指定

var DNS_SERVERS $HOME_NET

HTTPサーバの指定

# List of web servers on your network
var HTTP_SERVERS $HOME_NET

SQLサーバの指定

# List of sql servers on your network
var SQL_SERVERS $HOME_NET

MySQLへのログ出力設定

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

ルールパスを/etc/snort/rules とするので

var RULE_PATH /rules/rules

設定が終了したら、所有者以外編集できないようパーミッションの変更
chmod 600 /etc/snort/snort.conf


MySQL設定

MySQLにrootパスワードを設定

mysql -u root mysql

SET PASSWORD FOR root@localhost=PASSWORD('任意のパスワード');
Query OK, 0 rows affected (0.00 sec)

ここでは新規に 2つのデータベースを作成します。

snort_db>
Snort が検出した不正パケット、記録を出力するデータベースです。
このデータベースを ACID が参照する事で、不正パケットの統計をブラウザから閲覧可能になります。

snort_archives>
snort が直接使用するデータベースではありません。
ACID 経由で重要なログをアーカイブするためのACID のためのアーカイブ用データベースです。
ACID のセットアップについては後述しますが、このデータベースは、
snort_db とテーブルは全く同じ物を用意する必要があるため、ここで一緒に作っておきます。
非常に多くのパケットを検出します。Snort の運用を始めてしばらくは、
不要パケットの選別とチューニング作業になります。
ACID がサポートしているアーカイブ用のデータベースを作っておくと何かと便利です。

mysql -u root -p
create database snort_db;
create database snort_archives;
grant all privileges on snort_db.* to 'snort'@'localhost' identified by 'snort_password';
grant all privileges on snort_archives.* to 'snort'@'localhost' identified by 'snort_password';
exit;

root ユーザのパスワードを変更するには mysqladmin コマンドを使用します。
# mysqladmin -u root password 新しいパスワード
# mysqladmin reload

■アラート保存用のテーブルを作成
cd /usr/local/src/snort/snort-2.8.5.3/schemas/
mysql -D snort_db -u snort -p < create_mysql
mysql -D snort_archives -u snort -p < create_mysql

snortテスト起動
snort -c /etc/snort/snort.conf

下記のような豚が出てきたら起動成功
--== Initialization Complete ==--

,,_ -*> Snort! <*-
o" )~ Version 2.8.5.3 (Build 124)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/snort/snort-team

■[snort]およびログの格納先ディレクトリの権限を変更
chown -R snort:snort /etc/snort/
chown -R snort:snort /var/log/snort

■[BASE](Basic Analysis and Security Engine)のインストール
ダウンロードしてからHTTPサーバ公開用ディレクトリにコピーしパーミッションを変更
wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base-1.4.5.tar.gz/download
tar zxvf base-1.4.5.tar.gz
mv base-1.4.5/ /var/www/base
chmod 757 /var/www/base

Apache用BASE設定ファイル作成
vi /etc/httpd/conf.d/base.conf

Alias /base /var/www/base

Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.1.0/24

■ADODBインストール
ADOdbダウンロード(最新はhttp://sourceforge.net/projects/adodb/files/adodb-php5-only/で確認)
wget http://sourceforge.net/projects/adodb/files/adodb-php5-only/adodb-510-for-php5/adodb510.tgz/download

ADOdb展開

tar xzf adodb510.tgz

ADOdb展開先ディレクトリを移動

mv adodb5 /var/www/base/adodb/

BASE展開先ディレクトリ所有者をapacheに変更

chown -R apache:apache /var/www/base/

■[BASE]の動作に必要なPHPモジュールをpearでインストール
pear install Image_Color
pear install Image_Canvas-alpha
[エラー]pear/Image_Canvas requires PEAR Installer (version >= 1.8.1), installed version is 1.4.9
[対処1]pear upgrade PEAR-1.5.4
[対処2]pear upgrade PEAR-1.8.1
[対処3]pear install Image_Canvas-alpha
pear install Image_Graph-alpha
pear install Mail
pear install Mail_MIME

php設定ファイル編集

vi /etc/php.ini

error_reporting = E_ALL & ~E_NOTICE ← 行頭の;を削除してコメント解除

;error_reporting = E_ALL ← 行頭に;を追加してコメントアウト

■[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]は、[/var/www/base/adodb/]を入力して、[実行]をクリック。

Step 2 of 5

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

【Use Archive Database】
[Archive Database Name]→[snort_archives]
[Archive Database Host]→[localhost]
[Archive Database User Name]→[snort]
[Archive Database Password]→[MySQLの設定で設定したsnortユーザのパスワード]

Step 3 of 5

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

Step 4 of 5

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

Snort起動
snort -c /etc/snort/snort.conf -i eth0 -D -u snort -g snort

正常に起動できたかどうかの確認は
ps ax|grep snort

■ルールファイルの自動更新
(1)Oinkmasterインストール
wget http://sourceforge.net/projects/oinkmaster/files/oinkmaster/2.0/oinkmaster-2.0.tar.gz/download

※最新版のURLはダウンロードページ(http://sourceforge.net/projects/oinkmaster/files/)で確認

Oinkmaster展開

tar zxf oinkmaster-2.0.tar.gz

oinkmaster.plを所定のディレクトリへコピー

cp -p oinkmaster-2.0/oinkmaster.pl /usr/local/bin/

oinkmaster.confを所定のディレクトリへコピー

cp -p oinkmaster-2.0/oinkmaster.conf /etc/

oinkmaster.1を所定のディレクトリへコピー

cp -p oinkmaster-2.0/oinkmaster.1 /usr/share/man/man1/

Oinkmaster展開先ディレクトリを削除

rm -rf oinkmaster-2.0

ダウンロードしたOinkmasterを削除

rm -f oinkmaster-2.0.tar.gz

(2)Oinkmaster設定
Snortルールファイル(Sourcefire VRT Certified Rules)をダウンロードするには「Oink Code」が必要なので、
ログイン(http://www.snort.org/)して、「Oink Code」を取得する

Oinkmaster設定ファイル編集

vi /etc/oinkmaster.conf

# Example for Snort-current ("current" means cvs snapshots).
# url = http://www.snort.org/pub-bin/oinkmaster.cgi//snortrules-snapshot-CURRENT.tar.gz
url = http://www.snort.org/pub-bin/oinkmaster.cgi//snortrules-snapshot-CURRENT.tar.gz

(3)Oinkmaster確認

Oinkmaster実行

oinkmaster.pl -o /etc/snort/rules/

Loading /etc/oinkmaster.conf
Downloading file from http://www.snort.org/pub-bin/oinkmaster.cgi/*oinkcode*/snortrules-snapshot-CURRENT.tar.gz... done.
Archive successfully downloaded, unpacking... done.
Setting up rules structures... done.
Processing downloaded rules... disabled 0, enabled 0, modified 0, total=8452
Setting up rules structures... done.
Comparing new files to the old ones... done.
Updating local rules files... done.

[***] Results from Oinkmaster started 20100322 21:19:29 [***]

[*] Rules modifications: [*]
None.

[*] Non-rule line modifications: [*]
None.

[+] Added files (consider updating your snort.conf to include them if needed): [+]

-> attack-responses.rules
-> backdoor.rules
-> bad-traffic.rules
-> chat.rules
-> content-replace.rules
-> ddos.rules
-> dns.rules
-> dos.rules
-> experimental.rules
-> exploit.rules
-> finger.rules
-> ftp.rules
-> icmp-info.rules
-> icmp.rules
-> imap.rules
-> info.rules
-> misc.rules
-> multimedia.rules
-> mysql.rules
-> netbios.rules
-> nntp.rules
-> open-test.conf
-> oracle.rules
-> other-ids.rules
-> p2p.rules
-> policy.rules
-> pop2.rules
-> pop3.rules
-> rpc.rules
-> rservices.rules
-> scada.rules
-> scan.rules
-> shellcode.rules
-> smtp.rules
-> snmp.rules
-> specific-threats.rules
-> spyware-put.rules
-> sql.rules
-> telnet.rules
-> tftp.rules
-> virus.rules
-> voip.rules
-> VRT-License.txt
-> web-activex.rules
-> web-attacks.rules
-> web-cgi.rules
-> web-client.rules
-> web-coldfusion.rules
-> web-frontpage.rules
-> web-iis.rules
-> web-misc.rules
-> web-php.rules
-> x11.rules


(4)Oinkmaster定期自動実行設定

Oinkmaster定期自動実行スクリプト作成

vi /etc/cron.daily/snort-rule-update

#!/bin/bash

/usr/local/bin/oinkmaster.pl -o /etc/snort/rules/ 2>&1 | logger -t oinkmaster
/etc/rc.d/init.d/snortd restart > /dev/null

Oinkmaster定期自動実行スクリプトへ実行権限付加

chmod +x /etc/cron.daily/snort-rule-update