snort

snort1Linux

Snort は、オープンソースの侵入検知システム(IDS:Intrusion Detection System)です
ネットワークを流れるパケットをキャプチャーし、不正パケットを検出しますが、検疫は実行しません

不正パケットを検出するためにはルール(シグネチャ)ファイルが必要になり
パケットのパターンがルールにマッチした時、事前に設定されているアクションを実行します

また、今回は以下のツールも併せてインストールします

SnortSnarf
Snort が検出したログを Webブラウザで確認できるようにするツール

Oinkmaster
ルールファイルを常に最新にするよう自動化するツール

用語

・フォールスポジティブ(false positive)・・・正当なパケットを不正なものであると判断してしまう

・フォールスネガティブ(false negative)・・・不正なパケットであるにもかかわらず見逃してしまう

導入手順

■snortインストール

1.snortをダウンロードする
> wget http://dl.snort.org/snort-current/snort-2.8.5.3.tar.gz

2.以下のパッケージが無かったら、インストールしておく

・ビルドに必要なパッケージ
autoconf
automake
pcre-devel
flex
bison

・インストールに必要なパッケージ
libpcap-devel

3.snortの RPMパッケージ作成する
> rpmbuild -tb snort-2.8.5.3.tar.gz

4.作成されたパッケージをインストールする
> rpm -Uhv /usr/src/redhat/RPMS/i386/snort-2.8.5.33-1.i386.rpm

■ルールファイルの入手

1.ルールファイル(Sourcefire VRT Certified Rules)を入手する為
https://www.snort.org/signup” にてユーザ登録する
尚、今回は無料版を使用する(registered-user)

2.登録したメールアドレス宛にメールがくるので、本文のリンクからログインする

3.ルールファイル(Sourcefire VRT Certified Rules)をダウンロードし、任意の場所に保存する
※一度ダウンロードを行うと、約10分間はダウンロードできなくなる

4.ルールファイルを解凍する

> cd (保存先)
> tar zxvf snortrules-snapshot-CURRENT.tar.gz

5.ルールファイルを snortディレクトリ内 にコピーする

> cp -r rules/* /etc/snort/rules/
> rm snortrules-snapshot-CURRENT.tar.gz

■snortを起動

1.snortd を起動する

> service snortd start
Starting snort:
[成功]

2.OS起動時に snortd が立ち上がるようにする

> chkconfig snortd on

※起動しない場合は以下の手順を実施

→ snortd のステータスを調べる

> service snortd status
snort は停止していますがサブシテムがロックされています

[対処法]
①rm -f /var/lock/subsys/snort の実施

 ②/etc/sysconfig/snort の妥当性をチェック

実際のインターフェース:wlan0の場合
INTERFACE=eth0 → INTERFACE=wlan0 に修正

■snortsnarfインストール

1.以下のサイトよりダウンロードする

http://sourceforge.jp/frs/g_redir.php?m=jaist&f=%2Fsnortsnarf%2Fsnortsnarf%2FInitial+Release+1.0%2FSnortSnarf-1.0.tar.gz
(wgetではない)

2.ダウンロードしたファイルを解凍する


> tar zxvf SnortSnarf-1.0.tar.gz

3.snortsnarf のディレクトリを作成する

> mkdir /usr/local/snortsnarf

4.解凍した snortsnarf を “3” で作成したディレクトリにコピーする

> cp SnortSnarf-1.0/snortsnarf.pl /usr/local/snortsnarf/
> cp -r SnortSnarf-1.0/include/ /usr/local/snortsnarf/
> rm -rf SnortSnarf-1.0

■Time-modulesインストール(SnortSnarf起動要件)

1.Time-modulesダウンロードする

wget http://ftp.yz.yamagata-u.ac.jp/pub/lang/cpan/authors/id/M/MU/MUIR/modules/Time-modules-2006.0814.tar.gz

2.ダウンロードしたファイルを解凍する


> tar zxvf Time-modules-2006.0814.tar.gz

3.ビルドからインストールする

> cd Time-modules-2006.0814
> perl Makefile.PL
> make
> make install

■SnortSnarf起動

1.httpdを起動する

> service httpd start

 

2.起動時にエラーメッセージがでる(“/usr/local/snortsnarf” に移動して実施しないと起動しない)

> cd /usr/local/snortsnarf
> ./snortsnarf.pl -d /var/www/html/snortsnarf/ /var/log/snort/alert

3.エラーが出てしまうので以下の[対処法]を実施する

Using an array as a reference is deprecated at include/SnortSnarf/HTMLMemStorage.pm line 290.
Using an array as a reference is deprecated at include/SnortSnarf/HTMLAnomMemStorage.pm line 266.

 

[対処法]
①”HTMLMemStorage.pm” を編集します

> vi /usr/local/snortsnarf/include/SnortSnarf/HTMLMemStorage.pm
return @arr->[($first-1)..$end];

return @arr[($first-1)..$end]; ← ”->” を削除

 ②”HTMLAnomMemStorage.pm” を編集します
> vi /usr/local/snortsnarf/include/SnortSnarf/HTMLAnomMemStorage.pm
return @arr->[($first-1)..$end];

 ↓

return @arr[($first-1)..$end]; ← ”->” を削除

4.WebにてSnortSnarfを確認

http://localhost/snortsnarf/

 

■SnortSnarf日本語化

1.デフォルトの “HTMLOutput.pm.org” をリネームする

> cd /usr/local/snortsnarf/include/SnortSnarf/
> mv HTMLOutput.pm HTMLOutput.pm.org

2.”HTMLOutput.pm.org” をダウンロードする

> wget http://mt-fuji.ddo.jp/~fujito/Linux/secu_soft/s2/HTMLOutput.pm

3.ダウンロードした “HTMLOutput.pm.org” をリネームする

> mv HTMLOutput.pm HTMLOutput.pm.cp

4.文字コードを “utf-8″ に変換し、”HTMLOutput.pm” にリダイレクトする

> lv -Ou8 HTMLOutput.pm.cp > HTMLOutput.pm

5.日本語化できたか確認する

> cd ../..
> ./snortsnarf.pl -d /var/www/html/snortsnarf/ /var/log/snort/alert

■Oinkmasterインストール

1.Oinkmasterをダウンロードする

> wget http://sourceforge.net/projects/oinkmaster/files/oinkmaster/2.0/oinkmaster-2.0.tar.gz/download

2.ダウンロードしたファイルを解凍する


> tar zxvf oinkmaster-2.0.tar.gz

3.それぞれのディレクトリにコピーする

> cp oinkmaster-2.0/oinkmaster.pl /usr/local/bin/
> cp oinkmaster-2.0/oinkmaster.conf /etc

4.不要ファイルを削除する

> rm -rf oinkmaster-2.0
> rm -f oinkmaster-2.0.tar.gz

■Oinkmaster設定

1.ルールファイルをダウンロードするには「Oink Code」が必要なので
ログインをし、”https://www.snort.org/account/oinkcode” に移動し、ページ下部の「Get Code」ボタンを押下して「Oink Code」を取得する

2.設定ファイルを編集

> vi /etc/oinkmaster.conf
# Example for Snort-current (“current” means cvs snapshots).
# http://www.snort.org/pub-bin/oinkmaster.cgi/%3Coinkcode%3E/snortrules-snapshot-CURRENT.tar.gz
url=http://www.snort.org/pub-bin/oinkmaster.cgi/%3COink<OinkCode貼り付け>/snortrules-snapshot-CURRENT.tar.gz ← 追加

3.Oinkmasterを起動する

> oinkmaster.pl -o /etc/snort/rules/ -v
~省略~
Archive successfully downloaded, unpacking… done.
Setting up rules structures…
WARNING: duplicate SID in your local rules, SID 3017 exists multiple times, you may need to fix this manually!
done.
Processing downloaded rules…
disabled 0, enabled 0, modified 0, total=8487
Setting up rules structures…
WARNING: duplicate SID in your local rules, SID 3017 exists multiple times, you may need to fix this manually!
done.
Comparing new files to the old ones… done.
Updating local rules files… done.

[***] Results from Oinkmaster started 20100414 12:28:07 [***]
[*] Rules modifications: [*]
None.
~省略~

4.Oinkmaster を自動実行させる

> crontab -e
00 03 * * * /root/oinkmaster.sh > /dev/null 2>&1

タイトルとURLをコピーしました