トップページ » snort関連 » Solarisにsnortをインストール
カテゴリー
My Yahoo!に追加
Sun社提供情報
Solarisパッケージダウンロード
Sunマシンは買うには
blogs.sun.com
お勧めサイト
プライベートリンク

Solarisにsnortをインストール

フリーのネットワーク侵入検知システム(NIDS: Network Intrution Ditection System)であるSnortをインストールしましょう。
以下ではSPARC/Solaris9にsnort-2.0.1をインストールしています。

まずは Solaris9システムの環境の確認。

# prtdiag -v
System Configuration: Sun Microsystems sun4u Sun Blade 100 (UltraSPARC-IIe)
System clock frequency: 84 MHZ
Memory size: 640MB

==================== CPUs ==================
E$ CPU CPU Temperature
CPU Freq Size Implementation Mask Die Amb. Location
--- -------- ---------- ------------------- -----
0 502 MHz 256KB SUNW,UltraSPARC-IIe 1.4 59C 27C +-board/cpu0

=================== IO Devices ==============
Bus Freq
Brd Type MHz Slot Name Model
--- ---- ---- ---------- --------------------
0 pci 33 +s/system-board isa/isadma (dma)
0 pci 33 +s/system-board isa/su (serial)
0 pci 33 +s/system-board isa/su (serial)
0 pci 33 +s/system-board pci108e,1101 (network) SUNW,pci-eri
0 pci 33 +s/system-board pciclass,0c0010 (firewire)
0 pci 33 +s/system-board pci10b9,5451 (sound)
0 pci 33 +s/system-board pci10b9,5229 (ide)
0 pci 33 +s/system-board SUNW,m64B (display) ATY,RageXL

============== Memory Configuration =============
Segment Table:
---------------------------------------------
Base Address Size Interleave Factor Contains
---------------------------------------------
0x0 128MB 1 chassis/system-board/DIMM0
0x20000000 512MB 1 chassis/system-board/DIMM1

=============== usb Devices ====================
Name Port#
------------ -----
keyboard 2
mouse 4
============== Environmental Status ============
Fan Speeds:
---------------------------------------
Location Sensor Speed
---------------------------------------
+stem-fan-slot system-fan 100%

Temperature sensors:
-----------------------------------------------
Location Sensor Temperature Lo LoWarn HiWarn Hi
Status -----------------------------------------------
+em-board/cpu0 Die 59C -10C 0C 85C 90C okay +em-board/cpu0 Ambient 27C -10C 0C 40C 60C okay =============== HW Revisions ==============
ASIC Revisions:
---------------
ebus: Rev 1

System PROM revisions:
----------------------
OBP 4.5.9 2002/02/07 02:12 Sun Blade 100
POST 2.0.1 2001/08/23 17:13
#
最低限必要なソフトウェア

・snort本体
・pcapライブラリ(snortをインストールために必要、既に入っている場合は不要)

それぞれ以下のサイトから入手できます。

http://www.snort.org/
 (snort-2.0.1.tar.gz)
http://sunsite.sut.ac.jp/sun/solbin/
 (libpcap-0.7.2-sol9-sparc-local.gz)


■ snortのコンパイル・インストール
pcapライブラリの確認(インストールされてなかったらpkgaddでインストール)
# pkginfo | grep libpcap
application SMClibpcap                       lpcap
# cd /var/tmp/snort-test

# ls
snort-2.0.1.tar.gz
# gunzip snort-2.0.1.tar.gz
# tar xvf snort-2.0.1.tar
...
# ls
snort-2.0.1      snort-2.0.1.tar
# cd snort-2.0.1
# ls
COPYING        acconfig.h     configure      install-sh     src ChangeLog      aclocal.m4     configure.in   missing        templates LICENSE        config.guess   contrib        mkinstalldirs Makefile.am    config.h.in    doc            rules Makefile.in    config.sub     etc            snort.8
# ./configure
...(ここではmysqlとの連携を考えていないのでオプションを指定しない)
# make
...
Making all in doc
Making all in etc
Making all in rules
Making all in templates
Making all in contrib
# make install
Making install in src
Making install in win32
Making install in output-plugins
Making install in detection-plugins
Making install in preprocessors
Making install in parser
/bin/sh ../mkinstalldirs /usr/local/bin
  .././install-sh -c snort /usr/local/bin/snort
Making install in doc
Making install in etc
Making install in rules
Making install in templates
Making install in contrib
/bin/sh ./mkinstalldirs /usr/local/man/man8
 ./install-sh -c -m 644 ./snort.8 /usr/local/man/man8/snort.8

=================
ファイルのコピー
=================
# mkdir /usr/local/snort
# ls
COPYING               config.h.in           install-sh ChangeLog             config.log            missing LICENSE               config.status         mkinstalldirs Makefile              config.status.lineno  rules Makefile.am           config.sub            snort.8 Makefile.in           configure             src acconfig.h            configure.in          stamp-h1 aclocal.m4            contrib               templates config.guess          doc config.h              etc
# cp -pr contrib doc etc rules templates src /usr/local/snort

=================
snort.confの編集
=================
# cd /usr/local/snort/etc
# ls
Makefile               gen-msg.map            sid-msg.map Makefile.am            generators             snort.conf Makefile.in            reference.config classification.config  sid
# vi snort.conf
...
var HOME_NET 192.168.1.3 # <-- 検知する範囲を指定(ここでは自システムのみ)
...
preprocessor portscan: $HOME_NET 4 3 portscan.log  # <-- コメント外し有効化

=====================
ライブラリのチェック
=====================
# ldd /usr/local/bin/snort
    libm.so.1 =>     /usr/lib/libm.so.1
    libsocket.so.1 =>     /usr/lib/libsocket.so.1
    libnsl.so.1 =>     /usr/lib/libnsl.so.1
    libc.so.1 =>     /usr/lib/libc.so.1
    libdl.so.1 =>     /usr/lib/libdl.so.1
    libmp.so.2 =>     /usr/lib/libmp.so.2
    /usr/platform/SUNW,Sun-Blade-100/lib/libc_psr.so.1

mysqlなど他のアプリケーションと連携させてコンパイルしたときはライブラリパスが不適切でsnort起動時にエラーになることがある。対処法はこちら
===============================
Snort実行ユーザ/グループの作成
===============================

# useradd snort
# groupadd snort

=================================
ログファイル格納ディレクトリ作成
=================================

# mkdir /var/log/snort
# chown snort:snort snort

============
Snortの起動
============

# /usr/local/bin/snort -u snort -g snort -d -D -i eri0 -c /usr/local/snort/etc/snort.conf
ちなみに各オプションの説明は以下の通り
 -d : verbose もしくは packet logging モードでパケットを表示するときはアプリケーション層のデータまで出力
 -D : デーモンモードで起動
 -i : インタフェースの指定
 -c : コンフィグレーションファイルの指定

# tail /var/adm/messages
...
... [ID 702911 daemon.notice] Snort initialization completed successfully

上記のようなメッセージが出ていればOK

================================
Snortの自動実行スクリプトの作成
================================
デフォルトでテンプレートファイル/usr/local/snort/contrib/S99snortが用意されているが、Solaris向けのファイルではないので以下のように自作する。
ちなみにsnortのプロセスIDは/var/run以下にインタフェース名(eri0)を含んだ形式で格納されている。(Solaris8以降なら pkill snort でも十分だけどね)


# vi /etc/init.d/snort

----------------------------------------
#!/sbin/sh
SnortBin=/usr/local/bin
ConfDir=/usr/local/snort/etc
RuleDir=/usr/local/snort/rules
case "$1" in
'start')
        [ -f $ConfDir/snort.conf ] && $SnortBin/snort -u snort -g
snort -d -D -i eri0 -c $ConfDir/snort.conf
    echo "snort starting."
        ;;

'stop')
        kill `cat /var/run/snort_eri0.pid`
    echo "snort stopping."
        ;;

*)
        echo "Usage: $0 { start | stop }"
        exit 1)
esac
exit 0
------------------------------------------

上記スクリプトを使用したsnortの停止・起動

# /etc/init.d/snort stop
snort stopping.

# tail /var/adm/messages
...
... [ID 702911 daemon.notice] Snort exiting

上記のようなメッセージが出ていればOK

あとは以下のような構成でハードリンクを作成して、リブート時も自動的にsnortが実行されるようにしておく。(K01snortは必須ではないがあった方がスマート)

# ls -i /etc/init.d/snort
    451347 /etc/init.d/snort
# find /etc -inum 451347
/etc/init.d/snort
/etc/rc0.d/K01snort
/etc/rc1.d/K01snort
/etc/rc2.d/K01snort
/etc/rc3.d/S99snort
/etc/rcS.d/K01snort

これでsnort単体のインストール・設定は終了です。 あとはログの管理が問題になります。 ご存じの通り、snortのログファイルは非常に膨大な量になることが多く、テキストベースのログファイルを定期的にチェックするのは困難です。 そこでsnortの出力するログを集計して、とても見やすいHTMLファイルに変換してくれるSnortSnarfをインストールしましょう。 その他にもやや難度が高いですがmysqlなどのデータベースサーバと連携してリアルタイムに効率的にログのチェックを可能にする方法もあります。(ACIDでsnortのログ管理 with mysql 参照)

snort関連のその他のリンク