フリーのネットワーク侵入検知システム(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 # |
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 |