作者 主題: 安裝Snort + MySQL + ACID + IDS Policy Manager  (閱讀 30487 次)

0 會員 與 1 訪客 正在閱讀本文。

zoob

  • 鑽研的研究生
  • *****
  • 文章數: 776
    • 檢視個人資料
    • http://www.myunix.idv.tw
安裝Snort + MySQL + ACID + IDS Policy Manager

前言:

目前Intrusion Dection Service非常的流行,而Snort這個程式雖然是個自由軟體,但是它的功能卻絲毫不遜於其它的商業軟體。而此篇文章另外會介紹IDS Policy Manager和ACID(Analysis Console for Intrusion Databases )來管理你的rule和分析log。
=========================================
作者: zoob (vincent@myunix.adsldns.org)

版權聲明:可以任意轉載,轉載時請務必標明原始出處和作者資訊


1、準備工作

OS:RedHat 8.0

請事先安裝以下套件
(1)Apache 1.3
(2)PHP、PHP-MySQL
(3)mysqlclient9-3.23、mysql-devel-3.23、mysql-3.23、mysql-server-3.23
(4)libpcap-0.6.2


2、安裝Snort

(1)請至 http://www.snort.org 下載  snort-1.9.0-1snort.i386.rpmsnort-mysql-1.9.0-1snort.i386.rpm,並且請安裝起來

(2)下載 Snort-Rules,並將解壓縮並複製到/etc/snort/目錄下

(3)下載 IDS Policy Manager,解壓縮後請在Windows 平台上執行安裝程式來管理snort agent。

(4)請在IDS Policy Manager裡增加一Sensor和Policy,設定系統為1.90。

(5)啟動Policy裡面的「Loging」->「Database」(記得打勾),並設定範例如下:
    「Sensor」:Your Sensor Name
    「DB Name」:snort
    「DB Type」:mysql
    「Encoding」:hex
    「Log Rule Type」:log
    「Detail」:full
    「User」:snort
    「User Pass」:snort
    「DB Host」:localhost
    「DB Port」:3306


(6)設定完畢後,請選擇「Save & Exit」

(7)針對先前增加的Sensor執行「Uppolicy to Sensor」

3、設定Mysql的DB

(1)建立一個名為「snort」的DB

代碼: [選擇]
mysqladmin -u root -ppassword create snort

(2)將以下敘述存做為一檔案(ex: create_mysql)

    # Copyright (C) 2000-2002 Carnegie Mellon University
    #
    # Maintainer: Roman Danyliw <rdd@cert.org>, <roman@danyliw.com>
    #
    # Original Author(s): Jed Pickel <jed@pickel.net>    (2000-2001)
    #                     Roman Danyliw <rdd@cert.org>
    #                     Todd Schrubb <tls@cert.org>
    #
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; either version 2 of the License, or
    # (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program; if not, write to the Free Software
    # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

    CREATE TABLE schema ( vseq        INT      UNSIGNED NOT NULL,
                          ctime       DATETIME NOT NULL,
                          PRIMARY KEY (vseq));
    INSERT INTO schema  (vseq, ctime) VALUES ('106', now());

    CREATE TABLE event  ( sid         INT      UNSIGNED NOT NULL,
                          cid         INT      UNSIGNED NOT NULL,
                          signature   INT      UNSIGNED NOT NULL,
                          timestamp            DATETIME NOT NULL,
                          PRIMARY KEY (sid,cid),
                          INDEX       sig (signature),
                          INDEX       time (timestamp));

    CREATE TABLE signature ( sig_id       INT          UNSIGNED NOT NULL AUTO_INCREMENT,
                             sig_name     VARCHAR(255) NOT NULL,
                             sig_class_id INT          UNSIGNED NOT NULL,
                             sig_priority INT          UNSIGNED,
                             sig_rev      INT          UNSIGNED,
                             sig_sid      INT          UNSIGNED,
                             PRIMARY KEY (sig_id),
                             INDEX   sign_idx (sig_name(20)),
                             INDEX   sig_class_id_idx (sig_class_id));

    CREATE TABLE sig_reference (sig_id  INT    UNSIGNED NOT NULL,
                                ref_seq INT    UNSIGNED NOT NULL,
                                ref_id  INT    UNSIGNED NOT NULL,
                                PRIMARY KEY(sig_id, ref_seq));

    CREATE TABLE reference (  ref_id        INT         UNSIGNED NOT NULL AUTO_INCREMENT,
                              ref_system_id INT         UNSIGNED NOT NULL,
                              ref_tag       TEXT NOT NULL,
                              PRIMARY KEY (ref_id));

    CREATE TABLE reference_system ( ref_system_id   INT         UNSIGNED NOT NULL AUTO_INCREMENT,
                                    ref_system_name VARCHAR(20),
                                    PRIMARY KEY (ref_system_id));

    CREATE TABLE sig_class ( sig_class_id        INT    UNSIGNED NOT NULL AUTO_INCREMENT,
                             sig_class_name      VARCHAR(60) NOT NULL,
                             PRIMARY KEY (sig_class_id),
                             INDEX       (sig_class_id),
                             INDEX       (sig_class_name));

    # store info about the sensor supplying data
    CREATE TABLE sensor ( sid         INT      UNSIGNED NOT NULL AUTO_INCREMENT,
                          hostname    TEXT,
                          interface   TEXT,
                          filter      TEXT,
                          detail      TINYINT,
                          encoding    TINYINT,
                          last_cid    INT      UNSIGNED NOT NULL,
                          PRIMARY KEY (sid));

    # All of the fields of an ip header
    CREATE TABLE iphdr  ( sid         INT      UNSIGNED NOT NULL,
                          cid         INT      UNSIGNED NOT NULL,
                          ip_src      INT      UNSIGNED NOT NULL,
                          ip_dst      INT      UNSIGNED NOT NULL,
                          ip_ver      TINYINT  UNSIGNED,
                          ip_hlen     TINYINT  UNSIGNED,
                          ip_tos      TINYINT  UNSIGNED,
                          ip_len      SMALLINT UNSIGNED,
                          ip_id       SMALLINT UNSIGNED,
                          ip_flags    TINYINT  UNSIGNED,
                          ip_off      SMALLINT UNSIGNED,
                          ip_ttl      TINYINT  UNSIGNED,
                          ip_proto    TINYINT  UNSIGNED NOT NULL,
                          ip_csum     SMALLINT UNSIGNED,
                          PRIMARY KEY (sid,cid),
                          INDEX ip_src (ip_src),
                          INDEX ip_dst (ip_dst));

    # All of the fields of a tcp header
    CREATE TABLE tcphdr(  sid         INT      UNSIGNED NOT NULL,
                          cid         INT      UNSIGNED NOT NULL,
                          tcp_sport   SMALLINT UNSIGNED NOT NULL,
                          tcp_dport   SMALLINT UNSIGNED NOT NULL,
                          tcp_seq     INT      UNSIGNED,
                          tcp_ack     INT      UNSIGNED,
                          tcp_off     TINYINT  UNSIGNED,
                          tcp_res     TINYINT  UNSIGNED,
                          tcp_flags   TINYINT  UNSIGNED NOT NULL,
                          tcp_win     SMALLINT UNSIGNED,
                          tcp_csum    SMALLINT UNSIGNED,
                          tcp_urp     SMALLINT UNSIGNED,
                          PRIMARY KEY (sid,cid),
                          INDEX       tcp_sport (tcp_sport),
                          INDEX       tcp_dport (tcp_dport),
                          INDEX       tcp_flags (tcp_flags));

    # All of the fields of a udp header
    CREATE TABLE udphdr(  sid         INT      UNSIGNED NOT NULL,
                          cid         INT      UNSIGNED NOT NULL,
                          udp_sport   SMALLINT UNSIGNED NOT NULL,
                          udp_dport   SMALLINT UNSIGNED NOT NULL,
                          udp_len     SMALLINT UNSIGNED,
                          udp_csum    SMALLINT UNSIGNED,
                          PRIMARY KEY (sid,cid),
                          INDEX       udp_sport (udp_sport),
                          INDEX       udp_dport (udp_dport));

    # All of the fields of an icmp header
    CREATE TABLE icmphdr( sid         INT      UNSIGNED NOT NULL,
                          cid         INT      UNSIGNED NOT NULL,
                          icmp_type   TINYINT  UNSIGNED NOT NULL,
                          icmp_code   TINYINT  UNSIGNED NOT NULL,
                          icmp_csum   SMALLINT UNSIGNED,
                          icmp_id     SMALLINT UNSIGNED,
                          icmp_seq    SMALLINT UNSIGNED,
                          PRIMARY KEY (sid,cid),
                          INDEX       icmp_type (icmp_type));

    # Protocol options
    CREATE TABLE opt    ( sid         INT      UNSIGNED NOT NULL,
                          cid         INT      UNSIGNED NOT NULL,
                          optid       INT      UNSIGNED NOT NULL,
                          opt_proto   TINYINT  UNSIGNED NOT NULL,
                          opt_code    TINYINT  UNSIGNED NOT NULL,
                          opt_len     SMALLINT,
                          opt_data    TEXT,
                          PRIMARY KEY (sid,cid,optid));

    # Packet payload
    CREATE TABLE data   ( sid           INT      UNSIGNED NOT NULL,
                          cid           INT      UNSIGNED NOT NULL,
                          data_payload  TEXT,
                          PRIMARY KEY (sid,cid));

    # encoding is a lookup table for storing encoding types
    CREATE TABLE encoding(encoding_type TINYINT UNSIGNED NOT NULL,
                          encoding_text TEXT NOT NULL,
                          PRIMARY KEY (encoding_type));
    INSERT INTO encoding (encoding_type, encoding_text) VALUES (0, 'hex');
    INSERT INTO encoding (encoding_type, encoding_text) VALUES (1, 'base64');
    INSERT INTO encoding (encoding_type, encoding_text) VALUES (2, 'ascii');

    # detail is a lookup table for storing different detail levels
    CREATE TABLE detail  (detail_type TINYINT UNSIGNED NOT NULL,
                          detail_text TEXT NOT NULL,
                          PRIMARY KEY (detail_type));
    INSERT INTO detail (detail_type, detail_text) VALUES (0, 'fast');
    INSERT INTO detail (detail_type, detail_text) VALUES (1, 'full');

    # be sure to also use the snortdb-extra tables if you want
    # mappings for tcp flags, protocols, and ports


(3)匯入create_mysql檔案

代碼: [選擇]
mysql -u root -ppassword snort < create_mysql

(4)建立MySQL的snort使用者

代碼: [選擇]
mysql -u root -ppassword snort
mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;
mysql> connect mysql;
mysql> set password for 'snort'@'localhost' = password('snort');
mysql> set password for 'snort'@'%' = password('snort');
mysql> flush privileges;
mysql> exit;


4、安裝ACID

(1)安裝ACID 0.9.6B23 http://acidlab.sourceforge.net/
將acid-0.9.*.tar.gz解壓縮至/var/www/html 目錄下

(2)安裝 ADODB v2.31 http://php.weblogs.com/adodb
將adodb231.tgz 解壓縮至/var/www/html 目錄下

(3)安裝 PHPLOT v4.4.6 http://www.phplot.com/
將phplot-4.4.6.tar.gz 解壓縮至/var/www/html 目錄下,並將phplot-4.4.6目錄更名為phplot

(4)安裝 GD v1.8.4 http://www.boutell.com/gd/
將gd-1.8.4.tar.gz 解壓縮至/var/www/html 目錄下,並將gd-1.8.4目錄更名為gd

(5)安裝 JPGraph v1.11 http://www.aditus.nu/jpgraph/
解壓縮後,將src目錄下的所有檔案複製到/var/www/html/phplot目錄下

(6)設定acid_conf.php,範例如下:

$DBlib_path="../adodb";
$alert_dbname="snort";
$alert_user="snort";
$alert_password="snort";
$Chartlib_path="../phplot";

5、啟動相關服務

(1)啟動mysqld service

(2)啟動httpd service

(3)啟動snortd service
啟動前先要修改/etc/rc.d/init.d/snortd
將start區段內的
代碼: [選擇]
daemon /usr/sbin/snort -A fast -b -l /var/log/snort -d -D -i $INTERFACE -c /etc/snort/snort.conf
修改為
代碼: [選擇]
daemon /usr/sbin/snort -b -d -D -i $INTERFACE -c /etc/snort/snort.conf

並將INTERFACE對應到你要修改的介面卡,EX INTERFACE=eth1

切換至/etc/rc.d/init.d 目錄下,執行 chkconfig --level 2345 snortd on,讓你在開機時可以自動啟動服務。

zoob

  • 鑽研的研究生
  • *****
  • 文章數: 776
    • 檢視個人資料
    • http://www.myunix.idv.tw
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #1 於: 2003-05-12 00:37 »
目前snort和ids manager已經出2.0版了,建議使用此版本,效能更好

小穎

  • 俺是博士!
  • *****
  • 文章數: 1005
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #2 於: 2003-05-12 09:21 »
在Snort的官方網站的Document中也有一篇
Installing Freebsd, Mysql, and Snort Tutorial
這篇可以給FreeBSD的同好們參考參考,寫的很詳細!^^

kinux

  • 活潑的大學生
  • ***
  • 文章數: 211
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #3 於: 2003-05-12 14:06 »
請問一下...

snort-1.9 有問題, 你怎樣upgrade snort..??

謝謝!!!

zoob

  • 鑽研的研究生
  • *****
  • 文章數: 776
    • 檢視個人資料
    • http://www.myunix.idv.tw
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #4 於: 2003-05-12 15:56 »
不要理它,直接安裝新的版本即可

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #5 於: 2003-05-12 19:53 »
OpenBSD的使用者可以參考...
http://phorum.study-area.org/viewtopic.php?t=14372

kinux

  • 活潑的大學生
  • ***
  • 文章數: 211
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #6 於: 2003-05-13 18:17 »
引述: "zoob"
不要理它,直接安裝新的版本即可


你在安裝snort的時候不是要在./configure 後加上mysql + libcap + php + apache 的嗎???

你是用rpm 安裝的嗎?? 我的問題是在FreeBSD上..

zoob

  • 鑽研的研究生
  • *****
  • 文章數: 776
    • 檢視個人資料
    • http://www.myunix.idv.tw
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #7 於: 2003-05-13 18:31 »
我snort-2.0是使用tar ball來安裝的,沒有加參數即可安裝完畢了

kinux

  • 活潑的大學生
  • ***
  • 文章數: 211
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #8 於: 2003-05-13 18:35 »
引述: "duncanlo"
OpenBSD的使用者可以參考...
http://phorum.study-area.org/viewtopic.php?t=14372


看不到了...

liber

  • 活潑的大學生
  • ***
  • 文章數: 225
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #9 於: 2003-05-15 10:01 »
請問一下

我按照上面的步驟安裝完畢,網頁呈現也都ok

但是有個問題讓我粉疑惑,就是 http://myip.com.tw/acid 裡所有的數值都是0

我知道這樣是不對的,因為我在文字模式下執行 snort 是有是數值的

但是我來來去去檢查了好幾次,真不知道哪有有問題 (人有問題 ^_^!!)

不知各位大大有沒有方向好建議一下

liber

  • 活潑的大學生
  • ***
  • 文章數: 225
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #10 於: 2003-05-16 09:19 »
sorry 已經搞定

zoob

  • 鑽研的研究生
  • *****
  • 文章數: 776
    • 檢視個人資料
    • http://www.myunix.idv.tw
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #11 於: 2003-05-16 23:29 »
不介意的話,能將解決方法貼出來分享給大家嗎?

先謝謝你了

liber

  • 活潑的大學生
  • ***
  • 文章數: 225
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #12 於: 2003-05-18 00:51 »
速的


我在這一步的時候發生錯誤

mysql> set password for 'snort'@'%' = password('snort');

我改用 root 去連結 mysql 就可以正常顯示資訊了

因為 mysql 我不熟,所以沒有去找到底哪裡錯了

zoob 大大寫的已經粉清楚了,只是我可能操作有問題

感恩!!

還要感謝 zoob 對 phpgroupware 的投入

我之前在他的網站中找了半天,許多 link 都是錯的

看了 zoob 的介紹才去下載他的風格,真是讚

還真怕他不維護了,我已經把他導入公司內使用希望能換掉 outlook

早兩個版本刪除 mail 有問題,不知 zoob 有沒有遇到

還有一直到現在這一版,點選 mail 的時候還是會有錯誤訊息

不知道是不是我設定有問題

而且我一直試不出來他 ldap 的部分

總歸一句謝謝啦

潛水夫

  • 可愛的小學生
  • *
  • 文章數: 21
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #13 於: 2003-06-10 10:45 »
對不起, 請問一下, 關於"IDS Policy Manager"的設定方式, 我看了一下, 若是照你方式做, 好像並不能和server做連繫, 不知是否能夠詳細解說一下.
謝謝!!!!
因為在原網站上, 也找不到相關設定的資料, 若是能夠指引, 何處有資料可研究, 也是可以的.
謝謝!!!!

zoob

  • 鑽研的研究生
  • *****
  • 文章數: 776
    • 檢視個人資料
    • http://www.myunix.idv.tw
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #14 於: 2003-06-10 10:56 »
我應該解說的滿詳細了,能否請你描述你的設定為何?及問題在哪?

liber

  • 活潑的大學生
  • ***
  • 文章數: 225
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #15 於: 2003-06-10 11:09 »
他有個地方要設定你的機器在哪裡,還要選連線方式 FTP or SSH

因為我已經把他刪除了,所以我沒有詳細的名稱可以告訴你

不過我再測試的時候,另用他做出來的 snort.conf 執行的時候會有 error 所以......

我還是用手動去修改 /etc/snort/snort.conf 裡的設定

應該快成功了,有問題的話,不妨把 snort.conf 貼出來,讓大家看看嘍

zoob

  • 鑽研的研究生
  • *****
  • 文章數: 776
    • 檢視個人資料
    • http://www.myunix.idv.tw
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #16 於: 2003-06-10 11:14 »
用它做出來的snort.conf,你要將以下的敘述加上註解 (#)

    #preprocessor arpspoof
    #preprocessor arpspoof_detect_host: 192.168.40.1 f0:0f:00:f0:0f:00

dannyblack

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #17 於: 2004-08-10 00:27 »
引述: "liber"
請問一下

我按照上面的步驟安裝完畢,網頁呈現也都ok

但是有個問題讓我粉疑惑,就是 http://myip.com.tw/acid 裡所有的數值都是0

我知道這樣是不對的,因為我在文字模式下執行 snort 是有是數值的

但是我來來去去檢查了好幾次,真不知道哪有有問題 (人有問題 ^_^!!)

不知各位大大有沒有方向好建議一下


我也有這種現像說~~請問一下大大怎麼搞定的呢??
我已經把snort的mysql權限開到最大了~還是有問題~
請問大大是把acid的user都改成root嗎??

wsj

  • 活潑的大學生
  • ***
  • 文章數: 456
    • 檢視個人資料
    • http://www.hold-dream.idv.tw
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #18 於: 2004-09-10 02:08 »
我也有相同的問題
set password for 'snort'@'%' = password('snort');
之後就出現
 Can't find any matching row in the user table
對mysql不熟
請問大大這要怎解決
google找過了
學園裡跟鳥哥都找過了,就是找不到答案

【defender】

  • 懷疑的國中生
  • **
  • 文章數: 83
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #19 於: 2004-12-31 13:14 »
[root@first ~]# mysql -uroot -p123456 snort < create_mysql
ERROR 1064 at line 1: You have an error in your SQL syntax near 'Copyright (C) 2000-2002 Carnegie Mellon University
CREATE TABLE schema ( vseq I' at line 1

誰可以告訴我為什麼會這樣= =..我不懂mysql..

【defender】

  • 懷疑的國中生
  • **
  • 文章數: 83
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #20 於: 2004-12-31 13:20 »
Sorry仔細一看...發現少了一個#......歹勢@@

【defender】

  • 懷疑的國中生
  • **
  • 文章數: 83
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #21 於: 2004-12-31 14:46 »
引述: "liber"
請問一下

我按照上面的步驟安裝完畢,網頁呈現也都ok

但是有個問題讓我粉疑惑,就是 http://myip.com.tw/acid 裡所有的數值都是0

我知道這樣是不對的,因為我在文字模式下執行 snort 是有是數值的

但是我來來去去檢查了好幾次,真不知道哪有有問題 (人有問題 ^_^!!)

不知各位大大有沒有方向好建議一下



大大請問你怎麼改好的...可以教一下嗎..謝謝

PS:Snort帳號建不起來的...可以用mysql帳號去跑...我是這樣用的...沒辦法誰叫我不會mysql ~.~

【defender】

  • 懷疑的國中生
  • **
  • 文章數: 83
    • 檢視個人資料
安裝Snort + MySQL + ACID + IDS Policy Manager
« 回覆 #22 於: 2004-12-31 14:47 »
引述: "【defender】"
引述: "liber"
請問一下

我按照上面的步驟安裝完畢,網頁呈現也都ok

但是有個問題讓我粉疑惑,就是 http://myip.com.tw/acid 裡所有的數值都是0

我知道這樣是不對的,因為我在文字模式下執行 snort 是有是數值的

但是我來來去去檢查了好幾次,真不知道哪有有問題 (人有問題 ^_^!!)

不知各位大大有沒有方向好建議一下



大大請問你怎麼網頁上的把數值0改好的...可以教一下嗎..謝謝

PS:Snort帳號建不起來的...可以用mysql帳號去跑...我是這樣用的...沒辦法誰叫我不會mysql ~.~