Snortでネットワークを監視する(2.0.0 with ACID & FLEXRESP)


Snort と ACID を使ってネットワーク監視システムを構築しよう

snortでネットワークを監視する(2.0.0 with ACID & FLEXRESP)

まず、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 ./

# mkdir /var/log/snort

とりあえずフォアグラウンドで試してみる。
# /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のライブラリ)を追加します。
/usr/local/pgsql/lib

その後で、ld.so を更新します。
# /sbin/ldconfig

ACID のトップページにアクセスします。http://あなたのサーバ.com/acid/acid_main.php 初回アクセス時には、テーブルを作成するボタンが表示されますので、それを押します。画面1 画面2




  1. Snort とは
  2. Snortでネットワークを監視する(2.0.0 with ACID & FLEXRESP)
  3. oinkmasterでルールセットの更新を自動化する
  4. Snort 情報源




Snortで不正アクセスを検知する


当サイト 人気ウイルス対策ソフト

ESET Smart Security

ウイルスバスター

ノートン・アンチウイルス

マカフィーウイルススキャン

NOD32

ウイルスセキュリティZERO

Copyright(c) 1999-2017 ITNAVI.com サイト運営者情報