Snort是被設計用來填補昂貴的、探測繁重的網絡侵入情況的系統留下的空缺。Snort是一個免費的、跨平臺的軟件包,用作監視小型TCP/IP網的嗅探器、日志記錄、侵入探測器。它可以運行在Linux/UNIX和Win32系統上,你只需要幾分鐘就可以安裝好并可以開始使用它。
Snort的一些功能:
-實時通訊分析和信息包記錄
-包裝有效載荷檢查
-協議分析和內容查詢匹配
-探測緩沖溢出、秘密端口掃描、CGI攻擊、SMB探測、操作系統侵入嘗試
-對系統日志、指定文件、Unixsocket或通過Samba的WinPopus進行實時報警
Snort有三種主要模式:信息包嗅探器、信息包記錄器或成熟的侵入探測系統。遵循開發/自由軟件最重要的慣例,Snort支持各種形式的插件、擴充和定制,包括數據庫或是XML記錄、小幀探測和統計的異常探測等。信息包有效載荷探測是Snort最有用的一個特點,這就意味著很多額外種類的敵對行為可以被探測到。
Snort.org提供一些RPM和tarball。通常我推薦根據需求來建立,但是我在最新穩定版本的tarball上遇到了問題。當這個版本的最終使用期限漸漸逼近時,我沒有時間來描述究竟是我太笨了還是Snort的問題。RPM安裝就沒有任何問題。
為了使Snort工作,libpcap是必需安裝到你的系統中。用locate來檢查:
$locatelibpcap
這個將輸出以下一些內容:
/usr/lib/libpcap.so.0
/usr/lib/libpcap.a
/usr/lib/libpcap.so
/usr/lib/libpcap.so.0.6.2
如果沒有這些,到tcpdump.org或者你的Linux安裝盤中去找。
安裝一個安全軟件而不驗證簽名是不明智的。檢驗你下載的checksum:
#md5snort-1.8.6.tar.gz
或者
#md5snort-1.8.6-1snort.i386.rpm
解壓縮tarball:
$tar-xvzfsnort-1.8.6.tar.gz
以root身份安裝
#./configure
#make
#makeinstall
這是簡單形式的安裝過程。一些選項被選中以運行Snort的預安裝自測;將二進制和目標文件從安裝目錄中清除,清除操作還有一個卸栽選項。
其他的安裝選項和需要使用的配置:
--with-snmp
允許SNMP報警代碼
--with-mysql=DIR
支持mysql
--with-postgresql=DIR
支持Postgresql數據庫
--with-openssl=DIR
支持openssl
還有更多的一些選項,可以參見你的tarball文檔
安裝RPM自身非常簡單:
#rpm-ivhsnort-1.8.6-1snort.i386.rpm
你可以在下載Snort的網頁上看到,預編譯的二進制文件已經被封裝,用來維持與其他程序的兼容性,例如mySQL和PostgreSQL
#snort-?
打印出最常用的選項
Test-drive是用來保證正確的安裝。只監視本地機器,-I=interface:
#snort-vdeieth0
用CTRL+C來停止測試。不要忘了將你的網卡設為混雜模式。Snort將以后臺程序形式運行,并會以開啟停止形式出現。
PacketSniffer模式
這種模式下,只將TCP/IP報頭打印出來
#snort-v
查看應用層數據
#snort-vd
數據聯接層報頭
#snort-vde
記錄
除非你對16進制很熟悉,你還是將其寫入磁盤
#snort-vdel/var/log/snort
這里的“-l”表示“log”,記錄。告訴Snort記錄當地網絡的任何事情,-h表示本地:
#snort-vdel/var/log/snort-h192.168.1.0/24
這個為每個主機生成一個單獨的目錄。如果要將這些都放到一個二進制文件中,使用-b來切換
#snort-l/var/log/snort-b
指定任何其他選項是沒有意義的,如果你需要Snort的安裝選項或者使用tcpdump,請解析出這個文件,-r表示讀并處理文件。
#snort-vder/var/log/snort/snort-0629@1600.log
對BerkeleyPacketFilter解析出特定的項目
#snort-vder/var/log/snort/snort-0629@1600.logudp
#snort-vr/var/log/snort/snort-0629@1600.logtcp
#snort-ver/var/log/snort/snort-0629@1600.logicmp
對BerkeleyPacketFilter用man查看snort和tcpdump的其他選項。
網絡侵入探測模式
現在我們進入真正的Snort工具??匆幌?etc/snort/snort.conf,全局配置文件。Snort的規則設置也以文本文件形式存放在/etc/snort。最后仔細看一下這一行:
varHOME_NET$eth0_ADDRESS
這個是按照本地網卡的網絡設置來初始化Snort。
為了保證速度,記錄每個單個的包并顯示在屏幕上是不可能的。包會被丟棄,而記錄文件會變得非常龐大。使用-v切換,這樣就不會顯示在屏幕上,我們可以不用-e,數據連接報頭:
#snort-dl/var/log/snort-h192.168.1.0/24-c/etc/snort/snort.conf
-h表示本地網絡,-c表示使用規則設定。這是最基本的,用ASCII記錄安裝規則定義的包。使用-b切換記錄為二進制文件。注意定義子網范圍用CIDR符號。
這些神秘的規則設定是從哪里來得呢?兩個來源:從Snort.org,包括在RPM或是下載的二進制文件中;從MartinRoesch,Snort的制作者,他設計的Snort在所有方面都很迅速:安裝、運行和對攻擊的反應。如果你有能力分析一個攻擊和確認一個獨特的信號,你可以自己寫一個規則來發現并記錄它。參見你下載的Snort用戶手冊(SnortUsersManual.pdf),這是一個非常好的寫定制規則指南。(這些文件都可以在線獲得)Snort.org每天更新規則設定,你可以下載讓你滿意的。你可以在Snort.org上的Snort/contrib目錄找到snortpp,可以用它來合并新的規則
在哪里配置Snort?
如果你有時間和資源,將Snort放到防火墻的兩側是最好的。比較一下哪些撞上你的防火墻,哪些順利通過你的防火墻,你會非常驚訝在Inte.net上有如此之多的惡意攻擊。Snort占用空間很少,使你可以在防火墻后運行一個簡單的Snort來增加一個保護層,更加容易管理,
來源:
a..Snort
b..MD5
c..libpcap
d..CIDRFAQ