關於Snort
snort有三種工作模式:嗅探器、數據包記錄器、網絡入侵檢測系統。嗅探器模式僅僅是從網絡上讀取數據包並作為連續不斷的流顯示在終端上。數據包記錄器模式把數據包記錄到硬盤上。網路入侵檢測模式是最復雜的,而且是可配置的。我們可以讓snort分析網絡數據流以匹配用戶定義的一些規則,並根據檢測結果采取一定的動作。
安裝配置Snort
下載安裝包及規則:www.snort.org(下面我使用的安裝包版本為2.9.16 x86,x64會有抓不到包的問題,規則包為snortrules-snapshot-29160)
提前安裝Winpcap,因為snort需要基於Winpcap抓包的
安裝Snort,默認選項一直單擊下一步直至安裝完成
在snort\bin目錄下執行命令,查看snort信息,snort安裝完成
snort -V
實現Snort的IDS功能
配置snort
下載規則庫后解壓
將preproc_rules,rules,so_rules替換到snort目錄下,如下:
修改配置文件snort\etc\snort.conf
var RULE_PATH ../rules
var SO_RULE_PATH ../so_rules
var PREPROC_RULE_PATH ../preproc_rules
修改為你的安裝目錄:
# path to dynamic preprocessor libraries
dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/
# path to base preprocessor engine
dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so
# path to dynamic rules libraries
dynamicdetection directory /usr/local/lib/snort_dynamicrules
后兩條暫時用不到,所以直接注釋掉,修改為:
這里也暫時用不着,注釋掉,否則后面會報錯:
這里是規則庫,對符合過濾規則的進行匹配,我先注釋掉,只留一條include $RULE_PATH/local.rules
開始操作
在snort\rules目錄下local.rules文件中最下添加一條
alert tcp any any -> 192.168.134.0/24 80 (content:"and"; msg: "SQL inject attack"; sid:1000001)
這句話的意思是發出警告,tcp流量,任何地址的任何端口到目標ip:192.168.134.0/24的80端口的流量做匹配,匹配規則為'and',報警消息為'SQL inject attack',規則編號1000001(自定義規則必須寫,且不能重復)
在一台虛擬機上搭起web服務
查看下本機網卡
snort -W
將cmd路徑移到bin目錄下,執行命令
snort -i2 -dev -l E:\Snort2.9.16\Snort\log -c E:\Snort2.9.16\Snort\etc\snort.conf
選擇網卡2(選擇哪個,則會抓哪個網卡的包),這里會輸出日志文件到log目錄,使用snort.conf配置,注意這里如果conf配置有問題的話,執行命令會報錯,我曾解決報錯問題解決了一整天
如果報錯有winpacp,更換snort包為x86,其它配置各種報錯都有,只要按照流程就不會報錯,最開始我也是按照流程的,還是報錯,解決辦法:規則文件和安裝包版本匹配(我也不知道為什么)反正是不報錯了,還是報錯的話,把規則包中的etc文件也替換進去,然后重新配置snort.conf(QAQ,這里我也不知道為什么,按說是一樣的,但是我記得我是這么做了就不報錯了)
成功執行后:
已經開始抓包了,我們看一下日志
沒有什么關鍵信息,我們去刷新網頁
這里再查看日志,還是沒有任何變化
重新刷新地址
http://192.168.134.135/?id=1%20and%201=1
再次查看日志,攻擊匹配並記錄下來了
cmd頁面也顯示出了流量包內容,注意,在真實環境,不建議打印出來,因為這樣會增加snort的負荷,可能會丟包