psyvariar weblog

Happy Hacking Cyber Resource.
what's up? take it easy, and enjoy.
<< Snort 2.6.1.2 インストールメモ | TOP | やられWin2k 起動 >>

Snort+flexresp with MySQL

2007.02.17 Saturday | Security > IDS > Snort

さて。
Windows版 Snort2.6.1.2 のインストールはできたけれでも重いし。 FlexRespはなんか動かないし。 メインWindowsマシンに常時MySQLサービス立ち上げておくのもなんかアホらしいし。

というわけでVMWareのLinux2号君に次のような感じでインストール。
(ブログにでもメモっとかないとマジで手順忘れそうだ・・)

FedoraCore5 [kernel:2.6.19-1.2288.fc5]

  1. MySQL-4.1 Linux (x86) [src-gzip]
  2. pcre-devel-6.3-1.2.1 [yum]
  3. mysql-devel-5.0.27-1.fc5 [yum]
  4. libnet-1.0.2-2 [src-rpm]
  5. snort-2.6.1.1-1 [src-rpm]
  6. Oinkmaster-2.0.0 [rpm]

Windows [2000sp4]

  1. MySQL4.1 client又はserver
  2. Honeynet Security Console(HSC) [WIN-MSI]

当初はSnort2.6.1.2+MySQL4.1でLinuxでも一応は動いた。
問題はそこからでSnortのFLEXRESP機能を有効にするためにはソースからビルドするしかないんですが色々調べてやっとこさ2.6.1.2のMAKEINSTALL版をビルドしてインストールして動かしてみると。。。
セグメンテーション違反です。 (´∀`)9 」とかでアラート出力時におちたり。orz
Kernelのバージョンを落として試そうとKernel-2.6.18をビルドしてやりなおしてみたり・・(ノ´∀`;)
(Kernelのビルドには4時間ほどかかりました・・・orz)
もうなにもかも信じられないこと&初体験なことばかりで意味不明状態になり、かたっぱしからSRC.RPMからビルドしてインストールを試みた。
アンインストールしてインストールしなおして変な設定やってもうたのか
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)とか(17)とか
怒られたり。┐(´д`)┌
データベースが一度クラッシュしたのでMySQLインストールし直したのが原因かもしれないWW

同じような環境を構築されている方で私と同じような壁にぶつかった方も多いようです。(特に海外の人w)
まぁおかげさまで英語の勉強ができt(違、今回はSnort(--with flexresp)+MySQLの導入記録をば。

1. GROUP,USER作成

# groupadd mysql
# groupadd snort
# useradd -g mysql -d /usr/local/mysql mysql
# useradd -g snort -G mysql -d /usr/loca/snort snort
# passwd mysql
# passwd snort
# chown -R snort:snort /home/snort
# chown -R mysql:mysql /home/mysql
MySQL,Snort のユーザグループとユーザを作成する。
snort君はMySQLも扱う人なのでmysqlグループにも追加する。

2. 必要なLIBをyumでインストール

# yum -y install pcre-devel
# yum -y install mysql-devel
# rpm -qa |egrep -i "pcre|mysql"
mysql-devel-5.0.27-1.fc5
pcre-6.3-1.2.1
pcre-devel-6.3-1.2.1
snortのビルド時に必要になるのでインストールしておく。

3. MySQL

# mkdir work;cd work
# wget http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.22.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
# tar zxvf mysql-4.1.22.tar.gz
# cd mysql-4.1.22
# ./configure --with-charset=ujis \
--with-extra-charsets=all \
--with-mysqld-user=mysql \
--with-innodb \
--enable-local-infile \
--prefix=/usr/local/mysql \
--with-unix-socket-path=/tmp/mysql.sock
#時間がかかるのでしばし待つ。
文字コードEUCJIS、他文字コードサポート、実行ユーザ=mysql、 INNODBサポート、ローカルファイルサポート、インストールディレクトリ=/usr/loca/mysql、 UNIXソケットの場所=/tmp/mysql.sock としてConfigureした。

次はインストール

# make
# make install
※5分ほどかかるので珈琲でも飲みながら待つ.

※DataBase初期化.初めてMySQLをインストールする場合のみ実行。バージョンアップ時にはやってはいけない。
# ./scripts/mysql_install_db --user=mysql

※起動確認、サービス登録する。MySQLのオプションは /etc/my.cnf に書いてある。
# chown -R mysql:mysql /usr/local/mysql
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
# /usr/local/mysql/bin/mysqladmin version
# /usr/local/mysql/bin/mysqladmin -u root shutdown
# install -o root -g root -m 755 /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysql
# chkconfig --add mysql
# chkconfig --list mysql
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off

MySQLインストール完了!

4. Libnet 1.0.2

# wget http://dag.wieers.com/rpm/packages/libnet/libnet-1.0.2-2.rf.src.rpm
# wget http://dag.wieers.com/rpm/packages/libnet/libnet-1.0.spec
# mv libnet-1.0.spec /usr/src/redhat/SPECS/.
# rpmbuild --bb /usr/src/redhat/SPECS/libnet-1.0.s
pec # rpm -ivh /usr/src/redhat/RPMS/i386/libnet*.rpm
# rpm -qa |grep libnet
libnet10-1.0.2a-10.fc5
Libnetインストール完了!

5. Snort!! 2.6.1.1

# wget http://www.snort.org/dl/binaries/linux/old/snort-2.6.1.1-1.src.rpm
# rpm -i snort-2.6.1.1-1.src.rpm
# rpmbuild --bb \
--with flexresp \
--with inline \
--with mysql=/usr/local/mysql \
/usr/src/redhat/SPECS/snort.spec
※ BuildError になる場合は "--with inline" をはずしてみたら上手くいくかも。
※ --with flexresp(遮断パケット生成機能使う場合必須)
※--with mysql(ログ格納にMySQLを使う場合必須)
※そのほかの詳細オプションはSPECファイルを参照してオプション指定する.

# rpm -ivh /usr/src/redhat/RPMS/i386/snort*.rpm
# rpm -qa snort*
snort-mysql-2.6.1.1-1
snort-debuginfo-2.6.1.1-1
snort-2.6.1.1-1

# vi /etc/sysconfig/snort
※マシンの環境に合わせて起動オプションを設定する。
INTERFACE=eth0
CONF=/usr/local/snort/snort.conf
USER=snort
GROUP=snort
PASS_FIRST=1
LOGDIR=/var/log/snort
ALERTMODE=
DUMP_APP=0
BINARY_LOG=0
NO_PACKET_LOG=0
PRINT_INTERFACE=0
SYSLOG=/var/log/messages
SECS=5

MySQLにログを書き込む場合に /var/lib/mysql/mysql.sock が無いと怒られてるときは次の作業を。
# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
snort.conf のログ設定箇所抜粋
output database: alert, mysql, dbname=$SNORTDB user=snort password=xxxxxx host=localhost

# chkconfig --list snortd
snortd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Snort 完了。snort.conf を環境に合わせて編集するのをお忘れ無く。

6. Oinkmaster インストール

# wget http://www.ip-solutions.net/~hhoffman/oinkmaster/oinkmaster-2.0-0.noarch.rpm
# rpm -ivh oinkmaster-2.0.0.noarch.rpm
# rpm -qa oink*
oinkmaster-2.0-0

oinkmaster.conf の設定.
OINKCODE はSnort公式にログインして発行してもらう。
# vi /etc/oinkmaster.conf
url = http://www.snort.org/pub-bin/oinkmaster.cgi/$OINKCODE/snortrules-snapshot-CURRENT.tar.gz
url = http://www.snort.org/pub-bin/downloads.cgi/Download/comm_rules/Community-Rules-CURRENT.tar.gz
url = http://www.bleedingsnort.com/bleeding.rules.tar.gz


Snort ruleをダウンロード # mkdir /usr/local/snort/bak
# /usr/bin/oinkmaster.pl -o /etc/snort/rules/ -b /etc/snort/bak/

OinkのSnortルール自動更新設定(AM: 0:00)
# crontab -e
00 00 * * * /usr/bin/oinkmaster.pl -o /usr/local/snort/rules/ -b /usr/local/snort/bak/ 2<&1|logger -t oinkmaster

ふぅ。ながいな。とりあえず一通りインストールまでは終わり。
次はログをMySQLで管理できるようにするための設定をやっちゃおう。
とりあえずお茶でも飲みながら一服( ´-)y-~~ しませう。 # snort -V
   ,,_     -*> Snort! <*-
  o"  )~   Version 2.6.1.1 (Build 30)  
   ''''    By Martin Roesch & The Snort Team: http://www.snort.org/team.html
           (C) Copyright 1998-2006 Sourcefire Inc., et al.

MySQL DB構築

# /usr/bin/mysqladmin -u root password
# mysql -u root -p
mysql> select host,user,password from mysql.user;
mysql> delete from mysql.user where user="";
mysql> CREATE DATABASE aw_hsc;
mysql> CREATE DATABASE idsevents_107;
mysql> GRANT INSERT,SELECT,UPDATE on aw_hsc.* to snort identified by 'パスワード';
mysql> GRANT INSERT,SELECT,UPDATE on idsevents_107.* to snort identified by 'パスワード';
mysql> exit;
# mysql -D idsevents_107 -u root -p < /usr/local/snort/schemas/create_mysql
# mysql -D aw_hsc -u root -p < hsc.v104.sql
ここでやってることは、
  1. root passwordの設定
  2. MYSQLログイン
  3. 匿名ユーザの削除
  4. HSCで使う aw_hsc データベースの作成
  5. Snortのログ格納先 idsevents_107 データベース
  6. User snort の aw_hsc へのアクセス権追加
  7. User snort の idsevents_107 へのアクセス権追加
  8. mysqlログアウト
  9. snortに付属しているデータベース初期化スクリプト投入
  10. HSC(Windows版)に付属していたHSC用のデータベース初期化スクリプト投入

さいごに。。
よくあることだけどrootで新しく一般ユーザが使うディレクトリを作成したときに権限がrootのままになっていて「アクセスできねーぞ(#゚Д゚)ゴルァ!!」となっていることがあるので、アクセス権限を確認します。(ノ´。`*)
snort が /var/log/snort にアクセスできるか確認。(ログを書くため)
snort が /usr/local/mysql 配下にアクセスできるか確認。
snort が /var/lib/mysql/mysql.sock にアクセスできるか確認。(mysql.sockを使うため)

任務完了。HSCの設定はそんなややこしくないので省略!

これだけ設定するのにたくさんの有識者サイトさんの記事やらメーリングリストの記事やらを参考にさせて頂きました。
この場を借りてお礼とさせて頂きますw(ノ´ー`*)
(もっと勉強せないかんな。。)
# メモに嘘書いてたらこっそり修正します。
   ,,_ 
  o"  )~ ではこれにて。
   ''''    
(追記:2007/2/20) Mysqlのライブラリが見えなくなってしまった場合の対処
原因不明だけどもsnortdを起動したときに突然
libmysqlclient.so.15が見付かりません。」といったかんじのメッセージが出たんだけども、この場合はライブラリの検索パスにパスが通ってない(何故急にそうなったのかは不明・・)ので環境変数LD_LIBRARY_PATHにlibmysqlclient.so.15の有る場所を追加しておく。
# vi /etc/rc.d/init.d/snortd
  export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql
(追記:2007/2/21) Snort ビルドメモ
rpmとrpmbuildコマンドについて調べてみたら以外とあっさりtar.gzファイルからrpmを作れてしまったのでc⌒っ*゚ー゚)φ メモメモ...
※とりあえずtar.gzから一気にビルドしてみる。
# wget http://snort.org/dl/current/snort-2.6.1.3.tar.gz
# rpmbuild --tb --clean --with flexresp --with mysql snort-2.6.1.3.tar.gz

tarボールにspecファイルが入ってればそのままビルドできるのね〜( ´ー`)フゥー...
author : hack.psyvariar | comments (2) | trackbacks (0)

Comment

hack.psyvariar | 2007/07/04 08:17 AM
めいさん

コメント有り難う御座います
Linux系の記事で初めてコメントを頂いて感激ですw
半分、覚え書き程度に自分用に記事を書いていたのですが、お役に立てて幸いですヽ(´ー`)ノ
めい | 2007/06/29 03:40 PM
現在、RHEL5でサーバ構築中で、大変ためになりました!

おかげさまで、snorのインストールが完了しました。

ありがとうございます。

Comment Form









 

Trackback

Trackback URL :