一、工作模式及原理
- 嗅探器:嗅探器模式僅僅是從網絡上讀取數據包並作爲連續不斷的流顯示在終端上。
- 數據包記錄器:數據包記錄器模式把數據包記錄到硬盤上。
- 網絡入侵檢測系統:分析網絡數據流以匹配用戶定義的一些規則,並根據檢測結果採取一定的動作。
- 通常分爲三層工作:傳感器層、服務器層、管理員控制檯層,分別對應上面的三個模式
二、工作工程
- 預處理
a、Snort通過在網絡TCP/IP的第5層結構的數據鏈路層進行抓取網絡數據包;
b、 將捕獲的數據包送到包解碼器進行解碼。網絡中的數據包有可能是以太網包、令牌環包、TCP/IP包c 802.11包等格式。在這一過程包解碼器將其解碼成Snort認識的統一的格式;
c、將數據包送到預處理器進行處理,預處理包括能分片的數據包進行重 新組裝,處理一些明顯的錯誤等問題; - 處理:規則的建立及根據規則進行檢測
規則檢測是Snort中最重要的部分,作用是檢測數據包中是否包含有入侵行爲。處理規則文件的時候,用三維鏈表來存規則信息以便和後面的數據包進行匹配,三維鏈表一旦構建好了,就通過某種方法查找三維鏈表並進行匹配和發生響應。規則檢測的處理能力需要根據規則的數量,運行Snort機器的性能,網絡負載等因素決定. - 輸出
經過檢測後的數據包需要以各種形式將結果進行輸出,輸出形式可以是輸出到alert文件、其它日誌文件、數據庫UNIX域或Socke
三、安裝
自動安裝(可能需要安裝依賴包)
#apt-get update
#apt-get dist-upgrade
#apt-get install snort
Configuring snort
注:用ifconfig查看端口編譯安裝
1)、依賴安裝
安裝libpcap
a、下載libpcap-1.5.3源碼 並解壓,然後編譯安裝
tar xzf libpcap-1.5.3.tar.gz
cd libpcap-1.5.3
./configure
make
sudo make install
注:默認安裝在/usr/local下
b、設置路徑: 將上面安裝的libpcap的路徑添加到path中
sudo vim /etc/ld.so.conf
Ctrl+G
Ctrl+i
/usr/local/lib
/usr/local/bin
退出vim然後執行命令
/sbin/ldconfig
注:可以查看版本 /sbin/ldconfig -p | grep libcap
c、安裝Libpcre庫
sudo apt-get install libpcre3-dev
d、安裝dnet庫
sudo apt-get install libdumbnet-dev
2)正式安裝(也可參考snort.org)
wget https://snot.org/downloads/snort/daq-2.0.6.tar.gz
wget https://snort.org/downloads/snort/snort-2.9.8.0.tar.gz
./configure; make; sudo make install
tar xvfz snort-2.9.8.0.tar.gz cd snort-2.9.8.0
./configure –enable-sourcefire; make; sudo make install
3)配置
a、執行復制腳本(腳本來自於互聯網)
首先將snort_srt變量設置爲自己的源碼路徑然後執行腳本
sudo sh snort_coyp_rule.sh
b、下載規則庫並安裝
tar zxf snortrules-snapshot-2980.tar.gz
cd snortrules-snapshot-2980
sudo cp -r preproc_rules /etc/snort
sudo cp -r so_rules /etc/snort
sudo cp rules/* /etc/snort/rules
sudo cp etc/* /etc/snort/
注:如果直接從網上下載規則庫需要先註冊(免費)
c、下載下載社區規則並解壓到指定位置
wget https://snort.org/rules/community
sudo tar -xvfz community.tar.gz -C /etc/snort/rules
d、配置個人規則
sudo vim /etc/snort/snort.conf
將第101行到110行由:
#Path to your rules files (this can be a relative path)
# Note for Windows users: You are advised to make this an absolute path,
# such as: c:\snort\rules
var RULE_PATH ../rules
var SO_RULE_PATH ../so_rules
var PREPROC_RULE_PATH ../preproc_rules# If you are using reputation preprocessor set these
var WHITE_LIST_PATH ../rules
var BLACK_LIST_PATH ../rules改爲:
# Path to your rules files (this can be a relative path)
# Note for Windows users: You are advised to make this an absolute path,
# such as: c:\snort\rules
var RULE_PATH ./rules
var SO_RULE_PATH ./so_rules
var PREPROC_RULE_PATH ./preproc_rules# If you are using reputation preprocessor set these
var WHITE_LIST_PATH ./rules
var BLACK_LIST_PATH ./rules
其他配置根據需要自行修改
注:可以用命令查看配置情況:sudo snort -T -c /etc/snort/snort.conf
四、運行
- sudo snort -i interface
注:參數及使用見手冊
五、分析
- -d 將報警文件保存在 /var/log/snort/snort.log中,也可以用 -l 參數改變日誌的輸出文件,然後可以進一步對文件進行分析
六、參考文獻
- 官網教程
- Snort中文手冊
- 在Ubuntu 15.04中如何安裝和使用Snort (有非常詳細的步驟,腳本就來自於這篇文章)
- linux 下Snbort-2.9.22安裝詳解
- Snort使用手冊,第二部分:配置
七、附件
#snrot_copy_rule.sh
#引用自:http://www.linuxdiyf.com/linux/13726.html
#nort源代碼的路徑
snort_src="/home/name/workspace/snort/snortrules-snapshot-2980"
echo "adding group and user for snort..."
groupadd snort &> /dev/null
useradd snort -r -s /sbin/nologin -d /var/log/snort -c snort_idps -g snort &> /dev/null
#snort configuration
echo "Configuring snort..."mkdir -p /etc/snort
mkdir -p /etc/snort/rules
touch /etc/snort/rules/black_list.rules
touch /etc/snort/rules/white_list.rules
touch /etc/snort/rules/local.rules
mkdir /etc/snort/preproc_rules
mkdir /var/log/snort
mkdir -p /usr/local/lib/snort_dynamicrules
chmod -R 775 /etc/snort
chmod -R 775 /var/log/snort
chmod -R 775 /usr/local/lib/snort_dynamicrules
chown -R snort:snort /etc/snort
chown -R snort:snort /var/log/snort
chown -R snort:snort /usr/local/lib/snort_dynamicrules
###copy configuration and rules from etc directory under source code of snort
echo "copying from snort source to /etc/snort ....."
echo $snort_src
echo "-------------"
cp $snort_src/etc/*.conf* /etc/snort
cp $snort_src/etc/*.map /etc/snort
##enable rules
sed -i 's/include \$RULE\_PATH/#include \$RULE\_PATH/' /etc/snort/snort.conf
echo "---DONE---"