Snortのインストールメモ

PostgreSQL + Snort + ACID + PHP + Apache2のインストール
Snort単体はまだしもACIDまで入れた場合にはかなりのエラーなどが発生する。
(・・・つか、snortだけでもソースからコンパイルするでけで死にそうなほどめんどい)
したがって、そのインストール方法について記す。
ただし、一部書き損ねなどがある可能性があるので要注意
まあ気が付いたら教えておくれ(笑

■aptでPostgreSQL + PHP + Apache2と必要なパッケージをインストール

 apt-get install postgresql postgresql-server postgresql-devel
 apt-get install apache2 php php-pgsql php-apache2 gd

PostgreSQLの設定

 cat << END_OF_SCRIPT_FILE > /var/lib/pgsql/data/postgresql.conf
 tcpip_socket = true
 max_connections = 20
 shared_buffers = 1000           # min 16, at least max_connections*2, 8KB each
 syslog = 1                      # range 0-2; 0=stdout; 1=both; 2=syslog
 
 # These settings are initialized by initdb -- they may be changed
 lc_messages = 'C'               # locale for system error message strings
 lc_monetary = 'C'               # locale for monetary formatting
 lc_numeric = 'C'                # locale for number formatting
 lc_time = 'C'                   # locale for time formatting
 
 END_OF_SCRIPT_FILE


■ apache2の設定

 rm /etc/alternatives/apache2
 ln -s /usr/sbin/apache2.prefork* /etc/alternatives/apache2
 
 # PostgreSQLとapache2を再起動
 /etc/init.d/postgresql restart
 /etc/init.d/apache2 restart


■ phplotのインストール

 cd /usr/local/src
 wget http://downloads.sourceforge.net/phplot/phplot-5.0rc2.tar.gz
 tar xvzf phplot-5.0rc2.tar.gz
 cp -R phplot /var/www/html/


■ ADOdbのインストール

 cd /usr/local/src
 wget http://downloads.sourceforge.net/adodb/adodb493a.tgz
 tar xvzf adodb493a.tgz
 cp -R adodb /var/www/html/


■ ACIDのインストール

 cd /usr/local/src
 wget http://www.andrew.cmu.edu/user/rdanyliw/snort/acid-0.9.6b23.tar.gz
 tar xvzf acid-0.9.6b23.tar.gz
 cp -R acid /var/www/html/
 
 vi /var/www/html/acid/acid_conf.php
 
 # 下記のようになっている部分を書き換える
 #   $DBlib_path = "";  
 #   $alert_dbname = "snort_log";  
 #   $alert_host = "localhost";  
 #   $alert_port = "";  
 #   $alert_user = "root";  
 #   $alert_password = "mypassword";  
 #   $ChartLib_path = "";  
 # ↓が正しい内容
 #   $DBlib_path = "/var/www/html/adodb";  
 #   $alert_dbname = "snort";  
 #   $alert_host = "localhost";  
 #   $alert_port = "";  
 #   $alert_user = "snort";  
 #   $alert_password = "snort";  
 #   $ChartLib_path = "/var/www/html/phplot";  


snortのインストール

 cd /usr/local/src
 wget http://www.snort.org/dl/current/snort-2.6.1.1.tar.gz
 wget http://www.snort.org/pub-bin/downloads.cgi/Download/vrt_pr/snortrules-pr-2.4.tar.gz
 wget http://www.snort.org/pub-bin/downloads.cgi/Download/comm_rules/Community-Rules-CURRENT.tar.gz
 
 tar xvzf snort-2.6.1.1.tar.gz
 cd snort-2.6.1.1/
 # --enable-flexrespをつけるとエラーがでる
 ./configure --enable-smbalerts --prefix=/usr  --with-postgresq
 l=/usr --with-snmp=/usr
 
 make
 make install
 
 mkdir /var/log/snort/
 chown -R snort.snort /var/log/snort/

 mkdir /etc/snort
 cd /etc/snort
 tar xvzf /usr/local/src/snortrules-pr-2.4.tar.gz
 tar zxvf /usr/local/src/Community-Rules-CURRENT.tar.gz
 mv /etc/snort/rules/* .
 # */
 rmdir /etc/snort/rules
 chown -R snort.snort /etc/snort/
 
 # 設定ファイルの設定→/etc/snort/snort.conf
 cp /usr/local/src/snort-2.6.1.1/rpm/snortd /etc/init.d/
 chmod 755 /etc/init.d/snortd
 # /etc/init.d/snortdの書き換え
 # daemon /usr/sbin/snort $ALERTMODE $BINARY_LOG $NO_PACKET_LOG $DUMP_APP -D $PRINT_INTERFACE $INTERFACE -u $USER -g $GROUP $CONF 
 # ( 続き ) -l $LOGDIR $PASS_FIRST $BPFFILE $BPF
 # ↓に変更
 # daemon /usr/sbin/snort -o -D $INTERFACE -u $USER -g $GROUP $CONF -l $LOGDIR
 chkconfig --add snortd
 chkconfig --level 01246 snortd off
 chkconfig --level 35 snortd on

 
 cp /usr/local/src/snort-2.6.1.1/rpm/snort.sysconfig /etc/sysconfig/snort
 chmod 755 /etc/sysconfig/snort
 
 vi /etc/sysconfig/snort
 # ALERTMODE=fast 
 # ↓のように修正
 # ALERTMODE=
 
 ln /usr/bin/snort /usr/sbin/snort


snortPostgreSQLの設定

 # 質問にはy、nの順で答えてる
 adduser snort -s /bin/false
 sudo -u postgres createuser snort
 sudo -u snort createdb snort
 sudo -u snort psql snort < /usr/local/src/snort-2.6.1.1/schemas/create_postgresql
 vi /usr/local/src/acidcreate_acid_tbls_pgsql.sql
 # DATETIMEとなっている部分をTIMESTAMPに変更(4箇所)
 vi /usr/local/src/acid_db_setup.php
 # DATETIMEとなっている部分をTIMESTAMPに変更(10箇所ぐらい)
 sudo -u snort psql snort < /usr/local/src/acid/
 create_acid_tbls_pgsql.sql

snortの起動テスト

 /usr/sbin/snort -o -l /var/log/snort -u snort -g snort -d -i eth0 -c /etc/snort/snort.conf
 snort -i lo -c /etc/snort/snort.conf
 # 問題なければしばらくすると
 # Initialization Completeと言う文字が出てくる
 # Ctrl+Cで終了
 /etc/init.d/snortd restart
 
 # ACIDの確認
 # http://192.168.186.228/acid/ にアクセスして
 # Analysis Console for Intrusion Databasesと言う画面がでればOK
 # 一行だけメッセージがでている場合はおかしい

■ 注意

 # ★注意 phpは4を使うこと
 # ★注意 ACIDのsqlの修正は必ずすること