まず、libpcapが必要なのでインストールされていない場合は、
Index of -releaseからlibpcapを取得する。
$ tar xvzf libpcap-0.7.1.tar.gz
$ cd libpcap-0.7.1
$ ./configure
$ make
$ su
# make install
|
FLEXRESPを使用するので、Libnet をインストールする。
Latest Stable Version である 1.1.0 を使用すると、Snort の configure に失敗した。
checking for libnet version 1.0.2a... ./configure: libnet-config: command not found
no
**********************************************
ERROR: unable to find libnet 1.0.2a (libnet.h)
checked in the following places
**********************************************
|
そのため、Libnetは 1.0.2 をダウンロードした。
$ wget http://www.packetfactory.net/libnet/dist/deprecated/libnet-1.0.2a.tar.gz
$ tar xvzf libnet-1.0.2a.tar.gz
$ cd Libnet-1.0.2a
$ ./configure
$ make
$ su
# make install
# exit
$ cd..
|
Snort.orgからsnortのソースを取得する。
$ wget http://www.snort.org/dl/snort-2.0.0.tar.gz
$ tar xvzf snort-2.0.0.tar.gz
$ cd snort-2.0.0
$ ./configure --enable-flexresp --with-postgresql=/usr/local/pgsql
$ make
$ su
# make install
|
# mkdir /usr/local/snort
# cp etc/snort.conf /usr/local/snort
# cp etc/classification.config /usr/local/snort
# cp etc/reference.config /usr/local/snort
# cp etc/*.map /usr/local/snort
# cp etc/sid /usr/local/snort
# cp rules/*.rules /usr/local/snort/
# cp -R contrib /usr/local/snort/
# cd /usr/local/snort/
# vi snort.conf
|
監視対象とするネットワークを指定する。
#var HOME_NET any
var HOME_NET 192.168.1.0/24
外部ネットワークの指定。
#var EXTERNAL_NET any
var EXTERNAL_NET !$HOME_NET
DNSサーバの指定。
#var DNS_SERVERS $HOME_NET
var DNS_SERVERS 192.168.1.1
あとで更新プログラムoinkmasterを使うので、あえてルールファイルはフラットに配置した。
# Path to your rules files (this can be a relative path)
#var RULE_PATH ../rules
var RULE_PATH ./
とりあえずフォアグラウンドで試してみる。
# /usr/local/bin/snort -i eth0 -c /usr/local/snort/snort.conf
|
snortユーザで動作させるために、snortユーザを作成する。
# useradd snort -s /bin/false
# chown -R snort:snort /var/log/snort
# chown -R snort.snort /usr/local/snort
# chmod -R 770 /usr/local/snort
# /usr/local/bin/snort -i eth0 -Dde -h 192.168.0.1/32 -u snort -g snort -l /var/log/snort \
-c /usr/local/snort/snort.conf
|
-h で自ホストのIPアドレスを指定します。
ここから先は、ルールセット(*.rules)や設定ファイル(snort.conf)の整理を行い、検出する必要が無いシグネチャーを削除します。
特定のホストや特定のサービスを無視したい場合には、passアクションを使うと便利です。例えば下記のように記述します。
pass tcp 172.16.0.0/16 any > 192.168.0.1 80
有効にするためには、-o を付けて snort を起動して下さい。
今回はACIDを使用するため、下記の記述を snort.conf に追加する。
output database: log, postgresql, user=snort dbname=snort
ここから先はPostgreSQLがインストール済みであることが前提になります。
PostgreSQLのDBを作成します。
# su - postgres
$ createuser snort
Shall the new user be allowed to create databases? (y/n) n
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
$ cd /usr/local/snort/contrib
$ createdb snort
CREATE DATABASE
$ psql -f create_postgresql snort snort
$ exit
|
ACIDに必要なライブラリを用意します。
◆PHP Everywhere: ADOdb Database Library for PHP: Create Portable DB Apps
http://php.weblogs.com/adodb
ACIDを用意します。
◆Analysis Console for Intrusion Databases (ACID)
http://acidlab.sourceforge.net/
# cd /usr/local/
# wget http://phplens.com/lens/dl/adodb340.tgz
# tar xvzf adodb340.tgz
# wget http://ftp1.sourceforge.net/phplot/phplot-4.4.6.tar.gz
# tar xvzf phplot-4.4.6.tar.gz
# ln -s phplot-4.4.6 phplot
# cd /usr/local/apache/htdocs/
# wget http://acidlab.sourceforge.net/acid-0.9.6b23.tar.gz
# tar xvzf acid-0.9.6b23.tar.gz
|
ACID の設定ファイル acid_conf.php の該当項目を編集します。
# vi /usr/local/apache/htdocs/acid/acid_conf.php
$DBtype = "postgres";
$DBlib_path = "/usr/local/adodb";
$ChartLib_path = "/usr/local/phplot";
$alert_dbname = "snort";
$alert_host = "localhost";
$alert_port = "";
$alert_user = "snort";
$alert_password = "";
|
RedHat用に起動スクリプト(/etc/rc.d/init.d/snortd)を作成します。
#!/bin/sh
#
# Startup script for the Snort IDS
#
# chkconfig: 345 91 35
# description: Snort IDS system.
# processname: snort
# pidfile: /var/run/snort_eth0.pid
# Source function library.
. /etc/rc.d/init.d/functions
SERVER="/usr/local/bin/snort"
ARGS="-i eth0 -Ddeo -u snort -g snort -l /var/log/snort -c /usr/local/snort/snort.conf"
# See how we were called.
case "$1" in
start)
echo -n "Starting snort: "
daemon "$SERVER $ARGS"
echo
touch /var/lock/subsys/snort
;;
stop)
echo -n "Shutting down snort: "
killproc snort
echo
rm -f /var/lock/subsys/snort
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
|
# chkconfig --add snortd
# /etc/rc.d/init.d/snortd start
|
/usr/local/bin/snort: error while loading shared libraries: libpq.so.2:
cannot open shared object file: No such file or directory
|
snort起動時に上記のエラーが発生するなら、/etc/ld.so.confを編集し下記の行(PostgreSQLのライブラリ)を追加します。
その後で、ld.so を更新します。
ACID のトップページにアクセスします。http://あなたのサーバ.com/acid/acid_main.php 初回アクセス時には、テーブルを作成するボタンが表示されますので、それを押します。
画面1 画面2