//當時做這個實驗是為了參加學院舉行的學生學術論壇,文章有點長,請提出你的寶貴意見 Linux下的IDS測試實驗 2000級計算機一班:王維 IDS(Instrusion Detection System),也就是大家平時所說的入侵檢測系統,廣泛的被運用於各種操作系統的安全檢測和安全防御,以及探測網絡受攻擊的程度和次數。為以後的網絡安全管理提供詳實的資料和證據。 由於條件的限制,我們只能夠采取SNORT做為本次實驗的IDS使用。 Snort的一些功能: 1.實時通訊分析和信息包記錄 2.包裝有效載荷檢查 3.協議分析和內容查詢匹配 4.探測緩沖溢出、秘密端口掃描、CGI攻擊、SMB探測、操作系統侵入嘗試 5.對系統日志、指定文件、Unix socket或通過Samba的WinPopus 進行實時報警 下面,我將以REDHAT 7.3為例,講述一個完整的入侵檢測系統的調試和測試報告 一,本機環境 OS:REDHAT 7.3 HardWare:CPU:P3 800 .256MB--SDRAM .20G/7200 --HARDDISC IDS:SNORT-1.9+Libpcap 二.調試方法 首先將在本機環境中安裝SNORT。SNORT是一個免費的IDS軟件,我們這次將利用他來做系統檢測 本機已經獲得了SNORT-1.9這個版本。 首先,為了更方便的定制後面的探測規則和調試需要,我們將采取手工編譯源文件(scorcus)的方法安裝。(版本說明:SNORT-1.9.0.tar.gz ) 本地安裝的權限必須是:ROOT。如果不是ROOT。則必須采取SU指令,切換成本地系統管理員:ROOT #su #passwd:************ 當確定從ROOT登陸以後,我們必須將源文件釋放出來,因為在使用snort的時候,我們需要Libpcap這個包文件,所以在本機測試前,我們必須保證系統中有Libpcap。如果不清楚localhost是否已經有Libacap的話,可以用下面的指令查詢: $ locate Libacap 如果出現: /usr/lib/Libacap.1.9.0 /usr/lib/Libpcap.a 等提示信息的話,證明本機已經有了Libpcap.如果沒有任何提示的話,則說明還沒有Libpcap庫文件,需要安裝。那麼進行下列操作:(我獲取的Libpcap0.6.2.tar.gz) cd /usr/src/ids [root@kykin-L-linux ids]# tar –zxvf libpcap-0.6.2.tar.gz [root@kykin-L-linux ids]# ls libpcap-0.6.2 libpcap-0.6.2.tar.gz snort-1.9.0 snort-1.9.0.tar.gz 這樣的操作,將libpcap完全的釋放到了本地文件夾中 繼續: [root@kykin-L-linux ids]# cd libpcap-0.6.2 [root@kykin-L-linux libpcap-0.6.2]# ls aclocal.m4 configure.in lbl pcap-enet.c README.linux bpf CREDITS libpcap.a pcap.h savefile.c bpf_dump.c CVS LICENSE pcap-int.h savefile.o bpf_dump.o etherent.c llc.h pcap-linux.c scanner.c bpf_filter.c etherent.o Makefile pcap-linux.o scanner.l bpf_filter.o ethertype.h Makefile.in pcap-namedb.h scanner.o bpf_image.c FILES mkdep pcap-nit.c sll.h bpf_image.o gencode.c nametoaddr.c pcap-nit.h SUNOS4 CHANGES gencode.h nametoaddr.o pcap-null.c TODO config.cache gencode.o net pcap.o tokdefs.h config.guess grammar.c nlpid.h pcap-pf.c VERSION config.h grammar.o optimize.c pcap-pf.h version.c config.h.in grammar.y optimize.o pcap-snit.c version.o config.log inet.c pcap.3 pcap-snoop.c config.status inet.o pcap-bpf.c ppp.h config.sub INSTALL pcap.c README configure install-sh pcap-dlpi.c README.aix 這些源文件也就是我們即將進行編譯的Libpcap文件,繼續: [
[email protected]]# ./configure --prefix=/usr/local/libpcap-0.6.2 (這句話的意思是:編譯Libpcap文件到/usr/local/libpcap-0.6.2 目錄) [
[email protected]]# make [
[email protected]]# makeinstall 執行完上面的,我們已經完整的將Libpcap安裝到了本系統中 下面,我們將完成SNORT的安裝和調試 (為了測試的需要,我們不需要把SNORT的日志文件寫入本地mysql數據庫,那麼對MYSQL數據庫的操作步驟暫時省略) [root@kykin-L-linux ids]#tar –zxvf snort-1.9.0.tar.gz [root@kykin-L-linux ids]# cd snort-1.9.0 [root@kykin-L-linux snort-1.9.0]# ls acconfig.h config.h.in contrib Makefile snort.8 aclocal.m4 config.log COPYING Makefile.am src ChangeLog config.status doc Makefile.in stamp-h config.cache config.sub etc missing stamp-h.in config.guess configure install-sh mkinstalldirs templates config.h configure.in LICENSE rules [root@kykin-L-linux snort-1.9.0]# ./configure --prefix=/usr/local/snort19 [root@kykin-L-linux snort-1.9.0]#make [root@kykin-L-linux snort-1.9.0]#makeinstall (這幾個操作的含義和Libpcap相同) 然後,我們將對SNORT作一系列的調試,使其正常運行,也方便管理 [root@kykin-L-linux snort-1.9.0]# cp etc /usr/local/snort19 –r (復制當前文件夾下的ETC目錄到SNORT19下面) [root@kykin-L-linux snort-1.9.0]# cp rules /usr/local/snort19 –r (復制全部規則文件) [root@kykin-L-linux snort-1.9.0]# cp etc/classification.config /root/ [root@kykin-L-linux snort-1.9.0]# cp etc/snort.conf /root/.snortrc (將調用的文件屬性修改) 做完這一些,我們的工作已經完成了一大部分。下面我們將完成比較重要的一部分。入侵檢測的規則定制 [root@kykin-L-linux snort-1.9.0]#vi /root/.snortrc # This file contains a sample snort configuration. # You can take the following steps to create your # own custom configuration: # # 1) Set the network variables for your network # 2) Configure preprocessors # 3) Configure output plugins # 4) Customize your rule set # ################################################### # Step #1: Set the network variables: # # You must change the following variables to reflect # your local network. The variable is currently # setup for an RFC 1918 address space. # # You can specify it eXPlicitly as: # # var HOME_NET 10.1.1.0/24 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 (內容太多,暫時省略) 首先。我們在整個config文件的102行找到: var RULE_PATH ../rules 這個是本地存放規則的路徑,我們必須根據自己的情況,完整寫出來 我的文件是這樣的: var RULE_PATH /usr/local/snort19/rules 然後,在config文件的590行。我們將會看見: include $RULE_PATH/bad-traffic.rules 從這裡開始,一直到後面,就是SNORT的整個規則集合。我們必須根據自己的情況作出詳細的調試 include $RULE_PATH/bad-traffic.rules include $RULE_PATH/exploit.rules include $RULE_PATH/scan.rules include $RULE_PATH/finger.rules include $RULE_PATH/FTP.rules include $RULE_PATH/telnet.rules include $RULE_PATH/rpc.rules include $RULE_PATH/rservices.rules include $RULE_PATH/dos.rules (文件的內容太多,暫時省略) 你可以針對自己的系統的具體環境做出詳細的規則說明,不需要的規則,就采取#注釋的方法來去掉 為了可執行指令:SNORT的方便調用,我們將做出連接說明 [
[email protected]]#ln –s /usr/local/snort19/bin/snort /usr/sbin/snort 然後。我們將建立一個新的目錄來存放SNORT日志文件 [root@kykin-L-linux snort-1.9.0]#cd /var/log [root@kykin-L-linux snort-1.9.0]#mkdir snort 做完上面的一切,基本上完成了整個IDS的初步設定,下面我們將測試是否成功 [root@kykin-L-linux snort-1.9.0]#snort Initializing Output Plugins! Log Directory = /var/log/snort Initializing Network Interface eth0 using config file /root/.snortrc Initializing Preprocessors! Initializing Plug-ins! Parsing Rules file /root/.snortrc +++++++++++++++++++++++++++++++++++++++++++++++++++ Initializing rule chains... No arguments to frag2 directive, setting defaults to: Fragment timeout: 60 seconds Fragment memory cap: 4194304 bytes<