概述
在1998年,Marty Roesch先生用C語言開發了開放源代碼(Open Source)的入侵檢測系統Snort.直至今天,Snort已發展成為一個多平台(Multi-Platform),實時(Real-Time)流量分析,網絡IP數據包(Pocket)記錄等特性的強大的網絡入侵檢測/防御系統(NetworkIntrusion Detection/Prevention System),即NIDS/NIPS。
安裝
基於windwos
-
同意安裝許可
-
選擇所需安裝的snort組件
Snort:snort主程序
Dynamic Modules:snort所需的動態模塊
Documentation:snort相關說明文檔
- 選擇安裝路徑(Windows默認安裝路徑在C盤下)
- 等待片刻即可安裝成功
- 切換到snort安裝目錄的bin目錄下,使用-V參數顯示snort版本,測試snort是否安裝成功
基於ubuntu
-
ubuntu 14.04 (命令安裝)
$ sudo apt-get update $ sudo apt-get install snort $ sudo -V
-
ubuntu14.04 (源碼安裝)
# snort依賴環境安裝 $ sudo apt-get update $ sudo apt-get install -y build-essential $ sudo apt-get install -y libpcap-dev libpcre3-dev libdumbnet-dev $ sudo apt-get install -y bison flex $ sudo mkdir ~/snort_src $ cd ~/snort_src $ sudo wget https://snort.org/downloads/snort/daq-2.0.6.tar.gz $ sudo tar -xvzf daq-2.0.6.tar.gz $ cd daq-2.0.6 $ ./configure $ make $ sudo make install $ sudo apt-get install -y zlib1g-dev $ sudo apt-get install -y liblzma-dev $ sudo apt-get install -y openssl libssl-dev $ sudo apt-get install -y autoconf libtool pkg-config $ cd ~/snort_src $ sudo wget https://github.com/nghttp2/nghttp2/releases/download/v1.17.0/nghttp2-1.17.0.tar.gz $ sudo tar -xzvf nghttp2-1.17.0.tar.gz $ cd nghttp2-1.17.0 $ autoreconf -i --force $ automake $ autoconf $ sudo ./configure --enable-lib-only $ sudo make $ sudo make install # 編譯安裝snort $ sudo wget https://www.snort.org/downloads/snort/snort-2.9.12.tar.gz $ sudo tar -zxvf snort-2.9.12.tar.gz -C /opt/ $ cd /opt/snort-2.9.12/ $ sudo ./configure --enable-sourcefire $ sudo make $ sudo make install $ snort -V
-
安裝過程中的問題
ERROR! LuaJIT library not found. Go get it from http://www.luajit.org/ (or) Try compiling without openAppId using '--disable-open-appid' configure: error: "Fatal!"
原因:缺少luaJIT庫,可以到官網下載,編譯安裝即可。
$ sudo wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz $ sudo tar -zxvf LuaJIT-2.0.5.tar.gz $cd LuaJIT-2.0.5/ $ sudo make && sudo make install
基礎知識
snort工作模式
Snort有三種工作模式:嗅探器、數據包記錄器、網絡入侵檢測系統。
-
嗅探器模式僅僅是從網絡上讀取數據包並作為連續不斷的流顯示在終端上。
常用命令:
$ sudo snort -v # 把TCP/IP包頭信息打印在屏幕上 $ sudo snort -vd # 把應用層的數據打印在屏幕上 $ sudo snort -vde # 顯示數據鏈路層的信息
-
數據包記錄器模式把數據包記錄到硬盤上。
常用命令:
$ sudo snort -dev -l /var/log/snort/ $ sudo snort -dev -l /var/log/snort/ -h 192.168.1.0/24 $ sudo snort -l ./var/log/snort/ -b $ sudo snort -dv -r packet.log $ snort -dvr packet.log icmp
-
網路入侵檢測模式是最復雜的,而且是可配置的。我們可以讓snort分析網絡數據流以匹配用戶定義的一些規則,並根據檢測結果采取一定的動作。
常用命令:
$ sudo snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf
$ sudo snort -d -h 192.168.1.0/24 -l ./log -c snort.conf
snort報警機制
snort有6種報警機制:full、fast、socket、syslog、smb(winpopup)和none。其中有4個可以在命令行狀態下使用-A選項設置。這4個是:
-A fast # 報警信息包括:一個時間戳(timestamp)、報警消息、源/目的IP地址和端口。
-A full # 是默認的報警模式。
-A unsock # 把報警發送到一個UNIX套接字,需要有一個程序進行監聽,這樣可以實現實報警。
-A none # 關閉報警機制。
使用-s選項可以使snort把報警消息發送到syslog,默認的設備是LOG_AUTHPRIV和LOG_ALERT。可以修改snort.conf文件修改其配置。
snort還可以使用SMB報警機制,通過SAMBA把報警消息發送到Windows主機。為了使用這個報警機制,在運行./configure腳本時,必須使用--enable-smbalerts選項。
下面是一些輸出配置的例子:
# 使用默認的日志方式(以解碼的ASCII格式)並且把報警發給syslog
$ sudo snort -c snort.conf -l ./log -s -h 192.168.1.0/24
# 使用二進制日志格式和SMB報警機制
$ sudo snort -c snort.conf -b -M WORKSTATIONS