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
HTTPサーバの指定
# List of web servers on your network
var HTTP_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パスワードを設定
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/
(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