snort+acidのインストール

 Turbolinux Server7にsnortとacidをインストールしたので、その手順と留意事項を以下に記す。
 なお、使用するデーターペースソフトは、postgreqslトとする。

○必要ファイル

  • libpcap-0.6.2-1
  • openssl-devel-0.9.6b-1
  • postgresql-7.1.2-6
  • postgresql-jdbc-7.1.2-6
  • postgresql-odbc-7.1.2-6
  • postgresql-python-7.1.2-6
  • postgresql-tcl-7.1.2-6
  • postgresql-libs-7.1.2-6
  • postgresql-devel-7.1.2-6
  • postgresql-perl-7.1.2-6
  • postgresql-server-7.1.2-6
  • postgresql-test-7.1.2-6
  • php-pqsql ----------------------- php-mysql は不要

がインストールされていること確認する。

さらに以下のファイルを手元に準備しておく。

○各種設定
  • httpd の設定
    /etc/httpd/conf/httpd.conf ファイルで
      AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    についているコメントマーク#を削除する。

    次に /etc/httpd/php.ini ファイルで
    .........
    ; Dynamic Extensions
    .........
    extension=pgsql.so <----------------- #extension=mysql.so

    とmysqlからpostgresqlに変更する。

  • postgreaql の設定
    postgresql を/etc/rc.d/init.d/postgresql start などで一度起動すると /var/lib/pgsql/dataの中にpostgresql.conf が作成されるのでこれを修正する。
    少なくとも、「#tcpip_socket = false」の行を「tcpip_socket = true」にしておいた方がいいようである。
    修正後 /etc/rc.d/init.d/postgresql restart で修正内容を反映しておく。
  • ADODBのインストール
    tar zxvf adodb199.tgz で解凍して、 adodb/tests/test.phpの28行目近傍にある、「//$testpostgres = true;」の「//」を消去し、その4行上の「$testoracle = true;」の先頭に「//」を追加する。 httpdのhtml置き場に、adodbディレクトリごとコピーしてあげる。
    # vi adodb/drivers/adodb-postgres.inc.php
    310行目付近の
    $tuis->_connectionID = pg_pconnect($str);
    を
    $tuis->_connectionID = pg_connect($str);
    と修正する。
    上記修正は、adodb200 のものであり、adodb243 では必要なかった。
  • PHPlOtのインストール
    tar zxvf phplot--4.4.6.tar.gz で解凍してそれを/var/www/html/phplot にコピーする。
  • ACID のインストール
  adodbなどと同様に展開してコピーする。ただし、その後、ファイルの修正する必要がある。
  acidディレクトリ内に、acid_conf.phpというファイルがあり、これが初期化ファイルになっているので、vi acid_conf.phpし て、「$DBlib_path = "";」の「""」内にadodbのありかを書く。たぶん「"../adodb"」としておけばいいでしょう。

  「$DBtype = "mysql";」を「$DBtype = "postgres";」に変更する。
  さらに、「$alert_〜="〜";」をすべて書き換える。データベース名(snort_log)、ホスト名(localhostでしょう)、ポートは・・・ いいとして(笑)ユーザ名(snort_log)、パスワード(mypasswd)をそれぞれ書き込みます。

  また、その直後の「$archive_〜」の方も書き換えておく。
  さらに、「$ChartLib_path = "";」も「""」の部分にphplotのありかを書く。たぶん「"../phplot-4.4.6"」

  • snortのインストール
    tar zxvf snort-1.8.4.tar.gzで解凍する。 cd snort-1.8.4/ で展開されたソースのディレクトリーに移り、 configureファイルを変更 する。まず、libpcapのインストール先を指定
    includeとして /usr/includeを libraryとして /usr/libを指定する。 次にpostgresqlとopensslのdirectoryを指定 /usr/bin

    と正規にはこのようにする必要があるようであるが、デフォルトのままで、./configure --with-postgresql=/usr/bin だけでOKであった。

    ./configure で Makefile を作成し、エラーが出なければ
    make
    make install

    でインストール後
    mkdir /etc/snort
    cp snort.conf /etc/snort
    cp classical... /etc/snort
    cp *rules /etc/snort
    vi /etc/snort/snort.conf
    HOST_ADDRを修正 192.168.0.0/24 ログの出力先にsyslog と DB postgresqlを追加するため#を削除する。
    さらに output database のuserとして snort_logを dbnameとしても snort_logを指定。 テストのためICMPの追加 のためコメントマークを削除

    snort -i eth0 -c /etc/snort/snort.conf

    で snort をスタートさせ動作を確認 これはping を打ってみて /var/log/snort にログがあればOK
  • データベースの作成
    まず
    adduser snort_log
    passwd snort_log
    でデータベースのユーザー登録をおこなう。
    次に、データベースを作成のため su postgresでアクセスユーザーを変更し、 createuser  とするとユーザ名を求められるので、先に決めたユーザ名(snort_log)を入力する。すると、新しいDBを作れるユーザかどうか聞いてくるのでyesと答え、さらに新しいユーザを登録できるユーザか聞いてくるので、とりあえずnoと答える。
     そしてrootに戻って、次は先に決めたユーザ(su snort_log)になります。今度は「createdb -W 決めたデータベース名(snort_log)」する。そうすると、パスワードを聞いてくるので入力する。これでデータベースの「元」ができる。
     いったんrootに戻り、snortのソースディレクトリに移る。その中に、「contrib」というディレクトリがあるので、このディレクトリに入り、その後、もう一度先に決めたユーザ(snort_log)に変わる。いったん、「psql データベース名(snort_log)」でエラーが出ないことを確認し、「\q」で終了する。そして、「$psql < create_postgresql」として、データベースを初期化する。
    さらに
    $ cd /var/www/html/acid
    $ psql < create_acid_tbls_pgsql.sql
  • ログファイルの作成
    snort を最初に起動する時、 /var/log/message ファイルにログファイルが無いといったメッセージが出されて起動出来ないことがあった。
     対策は、ユーザー名、グループ名共に snort_log としてまず、 /var/log/snort ディレクトリーを作成し、次に /var/log/snort/portscan.log ファイルを作成すると問題なく起動するようになる。
○起動

  /etc/rc.d/init.d/httpd start
  /etc/rc.d/init.d/postgresql start
  snort -i eth0 -D -u snort_log -g snort_log -c /etc/snort/snort.conf

 で起動しブラウザから http://snortをインストールしたPCのアドレス/acid/ て゛acidのトップ画面が表示される。
 この段階でacidのトップ画面でなくエラーメッセージが表示されることがよくあったが、原因は、データベースが作成さ れていなかったり、 /etc/httpd/php.ini で postgresql の指定になっていなかったことが原因であった。
 あわてず落ち着いてやれば簡単に解決できるようである。

○その他
  上記の設定を行っているとpostgresqlのデーターベースを削除したくなることがあったが、方法が分からないため、インストール時にpostgresqlが作成する /var/lib/pgsql を削除することで代行した。
  今回はデータペースが一つしかなかったので問題なかったが多くなると、データベース単位の削除方法も勉強する必要があるようだ。


○参考としたページ
  とりあえず動かすsnort+ACID(αversion)
  snort + acid + adodb + phplot インストールメモ
  ACID

前ページ