歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix基礎知識

構建小型的入侵檢測系統(FreeBSD)

FreeBSD入侵檢測
1.Snort簡介
Snort 是一個強大的輕量級的網絡入侵檢測系統。它具有實時數據流量分析和日志IP 網絡數據包的能力,能夠進行協議分析,對內容進行搜索/匹配。它能夠檢測各種不同的攻擊方式,對攻擊進行實時報警。更重要的它是免費的,在中小企業中很好的適應網絡環境,不需要太多的資源和資金就能建立起一個優秀的IDS系統。

2.系統平台
安裝平台選擇FreeBSD 4.9 ,本身足夠安全,堅固;特性喜歡PORTS安裝起來少了不少麻煩。
Hawk# uname -a
FreeBSD hawk.the9 4.9-RELEASE FreeBSD 4.9-RELEASE

3.需要軟件
Mysql-server-3.23.58 http://mysql.secsup.org
Snort2.0.6 http://www.snort.org
Apache-2.0.47 http://www.apache.org
mod_php4-4.3.3,1 http://www.php.net
adodb-3.60_1 http://phplens.com
acid-0.9.6b23 http://acidlab.sourceforge.net
Jpgraph-1.12.2 http://jpgraph.techuk.com

4.安裝SNORT
1)安裝mysql
hawk# cd /usr/ports/databases/mysql323-server
hawk# make install
2)安裝apache
hawk# cd /usr/ports/www/apache2/
hawk# make install
3)安裝PHP
hawk # cd /usr/ports/www/mod_php4
hawk # make install
4)配置APACHE
編輯httpd.conf (/usr/local/etc/apache2)
DocumentRoot "/usr/local/www/snort"
LoadModule php4_module modules/libphp4.so
AddType application/x-httpd-php .php
5)安裝SNORT
hawk# mkdir /etc/snort
hawk# mkdir /var/log/snort
hawk# tar -zxvf snort-2.0.6.tar.gz
hawk# mv snort-2.0.6 /etc/snort
hawk# ./configure --with-mysql

hawk# make
hawk# make install
hawk# cd /etc/snort/etc
hawk# cp snort.conf /etc/snort/
hawk# cp *.config /etc/snort

6) 安裝SNORT的規則庫
可以在SNORT站點上下載標准規則庫,基本夠用了。2.0.0.x的SNORT使用STABLE rules,而2.0.1.x的SNORT使用CURRENT rules。
hawk# mkdir /etc/snort/etc
hawk# wget http://www.snort.org/dl/rules/snortrules-stable.tar.gz
hawk# tar xvfz snortrules-stable.tar.gz

7)配置SNORT
修改snort.conf (/etc/snort/snort.conf)
var HOME_NET 172.18.0.0/22 (修改為你的內部網網絡地址)
var EXTERNAL_NET any #外網,關鍵字any這裡表示HOME_NET之外的所有地址
var DNS_SERVERS 202.197.32.12 #DNS 服務器
var RULE_PATH ../rules 修改為 var RULE_PATH /etc/snort/etc/rules
改變記錄日志數據庫:
output database: log, mysql, user=root password=your_password dbname=snort host=localhost

設置snort啟動
hawk# vi /usr/local/etc/rc.d/snort.sh
#!/bin/sh
case "$1" in
start)
/usr/local/bin/snort -Dqc /etc/snort/snort.conf > /dev/null && echo -n " snort"
;;
stop)
kill `cat /var/run/snort_*.pid`
;;
restart)
killall -1 `cat /var/run/snort_*.pid`
;;
*)
echo "Usage: snort.sh [start|stop|restart]"
;;
esac

不過建議是手動啟動,我在使用中發現自動啟動有一點問題,等系統完全啟動完了再啟動SNORT就一切正常。

9)在mysql中建立數據庫
先建立SNORT使用的數據庫
mysql>create database snort;
mysql>grant INSERT,SELECT on root.* to snort@localhost;
mysql>quit;
進入snort安裝目錄:
mysql -p Enter password:
安裝DB表:(在contrib目錄)
zcat snortdb-extra.gz | mysql -p snort
>Enter password:

安裝完成檢查一下表的顯示
mysql>show databases;
+------------+
| Database
+------------+
| mysql
| snort
| test
+------------+
3 rows in set (0.00 sec)
mysql>use snort;
mysql>show tables; 將會有這些:
+------------------+
| Tables_in_snort |
+------------------+
| data
| detail
| encoding
| event
| flags
| icmphdr
| iphdr
| opt
| protocols
| reference
| reference_system
| schema
| sensor
| services
| sig_class
| sig_reference
| signature
| tcphdr
| udphdr
+------------------+
19 rows in set (0.00 sec)
mysql>exit

5.安裝配置Web接口
1)先安裝GD庫
hawk# cd /usr/ports/graphics/gd
hawk# make install
2) 安裝 jpgraph-1.12.2
hawk# cd /usr/ports/graphics/jpgraph
hawk# make install
3)安裝adodb-3.60_1
hawk# cd /usr/ports/databases/adodb
hawk# make install
4 )安裝acid-0.9.6b23
hawk# cd /usr/ports/security/acid
hawk# make install
5)配置 acid
hawk# mv /usr/local/www/data.default/php/adodb /usr/local/www/snort/
hawk# mv /usr/local/www/data.default/php/acid /usr/local/www/snort/
編輯acid_conf.php,修改相關配置如下:
$DBlib_path = "/usr/local/www/snort/adodb";
/* The type of underlying alert database
*
* MySQL : "mysql"
* PostgresSQL : "postgres"
* MS SQL Server : "mssql"
*/
$DBtype = "mysql";
/* Alert DB connection parameters
* - $alert_dbname : MySQL database name of Snort alert DB
* - $alert_host : host on which the DB is stored
* - $alert_port : port on which to access the DB
* - $alert_user : login to the database with this user
* - $alert_password : password of the DB user
*
* This information can be gleaned from the Snort database
* output plugin configuration.
*/
$alert_dbname = "snort";
$alert_host = "localhost";
$alert_port = "";
$alert_user = "root";
$alert_password = "Your_Password";
/* Archive DB connection parameters */
$archive_dbname = "snort";
$archive_host = "localhost";
$archive_port = "";
$archive_user = "root";
$archive_password = "Your_Password ";

6)可以進入進入web界面:
http://172.18.5.198/acid/acid_main.php
點"Setup Page"鏈接 ->Create Acid AG
然後訪問http:// 172.18.5.198/acid將會看到ACID界面。

6.最後測試
重新啟動系統進入系統,啟動SNORT。然後用NMAP,XSCAN,SSS來掃描一下,看看是不是有結果了。我用的是Retina。下面是成功後的界面。


7.SNORT規則編寫簡介
一條Snort規則可以分為前後兩個部分,規則頭和後面的選項部分。規則頭包含有匹配後的動作命令、協議類型、以及選擇流量的四元組(源目的IP及源目的端口)。規則的選項部分是由一個或幾個選項的符合,所有主要選項之間是與的關系。選項之間可能有一定的依賴關系,選項主要可以分為四類,第一類是數據包相關各種特征的描述選項,比如:content、fla
gs、dsize、ttl等;第二類是規則本身相關一些說明選項,比如:reference、sid、classtype、priority等;第三類是規則匹配後的動作選項,比如:msg、resp、react、session、logto、tag等;第四類是選項是對某些選項的修飾,比如從屬於content的nocase、offset、depth、regex等。由於snort的規則語言語法非常簡單,所以可以對新發現的攻擊作出快速的反應,迅速開發新的snort規則。編寫新的規則,最重要的是知道新攻擊的特征碼。要得到一個新的攻擊的特征碼,一般的方法就是進行實際的測試。對一個測試網絡進行攻擊,使用snort記錄在攻擊主機和測試網絡之間的數據流。然後,對記錄的數據進行分析得到其唯一的特征碼,最後把得到的特征碼加入到規則中。下面是IMAP緩沖區溢出攻擊被記錄下的數據包:
--------------------------------------------------------------------------
052499-22:27:58.403313 192.168.1.4:1034 -> 192.168.1.3:143
TCP TTL:64 TOS:0x0 DF
***PA* Seq: 0x5295B44E Ack: 0x1B4F8970 Win: 0x7D78
90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 3B ...............;
5E 89 76 08 31 ED 31 C9 31 C0 88 6E 07 89 6E 0C ^.v.1.1.1..n..n.
B0 0B 89 F3 6E 08 89 E9 6E 0C 89 EA CD 80 .....n....n.....
31 DB 89 D8 40 CD 80 90 90 90 90 90 90 90 90 90 1...@...........
90 90 90 90 90 90 90 90 90 90 90 E8 C0 FF FF FF ................
2F 62 69 6E 2F 73 68 90 90 90 90 90 90 90 90 90 /bin/sh.........
---------------------------------------------------------------------------
這個攻擊的特征碼就是/bin/sh字符串及其前面的機器代碼。這實際上是一個shellcode。四用這些信息可以很快開發出一條新的規則:
alert tcp any any -> 192.168.1.0/24 143 (content:"|E8C0 FFF FF|/bin/sh";
msg:"New IMAP Buffer Overflow detected!"
其中的特征碼含有文本和16進制兩種形式,它們以|分割,snort運行時都被轉換為二進制形式。

至此,FREEBSD 下的Snort 安裝建立成功。結果可以直接從WEB界面上看到,一套完整的IDS系統就可以正常運行了。

由於個人水平所限,本文難免會有遺漏和錯誤之處,希望大家不吝指正。

http://www.xfocus.net/articles/200310/627.html


Copyright © Linux教程網 All Rights Reserved