Snort初探
概念:
Snort是一款開源的網絡入侵防御系統(IPS),可以實時分析和記錄網絡數據包,你可以通過執行協議分析、內容搜索和匹配,從而發現各種網絡攻擊和可疑的探測。例如,緩沖區溢出、端口掃描、CGI攻擊、SMB探測等。
安裝:
OS version:CentOS 6.5
DAQ version:2.0.6
Snort version:2.9.8.0
依賴包:
gcc、flex、bison、zlib、libpcap、pcre、libdnet、tcpdump
libnetfilter_queue(IPS支持) --> libmnl、libnfnetlink
以上建議使用yum安裝,若出現版本問題,再通過編譯源碼安裝,
本文大部分使用源碼編譯,源碼包可自行到網上下載,也可通過本文最后給的Github地址下載本文所使用的所有源碼包。
依賴包安裝:
yum -y install gcc flex bison zlib pcre tcpdump
安裝libpcap
tar -zxf libpcap-1.7.4.tar.gz
cd libpcap-1.7.4
./configure --prefix=/usr/local --libdir=/usr/local/lib64
make && make install
PS:若不是安裝在/ 或者 /usr 底下 需要在/etc/ld.so.conf.d/local.conf中加入安裝的lib路徑, 文件不存在可自行創建 使用ldconfig使配置生效
ldconfig -p | grep NAME 可以查看是否能找到該動態庫
安裝libdnet
tar -zxf libdnet-1.12.tgz
cd libdnet-1.12
./configure "CFLAGS=-fPIC -g -O2" --prefix=/usr --libdir=/usr/lib64
make && make install
安裝DAQ:
若要支持IPS(入侵防御系統),安裝DAQ前需安裝libnetfilter_queue ,libnetfilter_queue需要libmnl、libnfnetlink 支持。
安裝libmnl
tar -jxf libmnl-1.0.3.tar.bz2
cd libmnl-1.0.3
./configure --prefix=/usr --libdir=/usr/lib64
make && make install
安裝libnfnetlink
tar -jxf libnfnetlink-1.0.1.tar.bz2
cd libnfnetlink-1.0.1
./configure --prefix=/usr --libdir=/usr/lib64
make && make install
安裝libnetfilter_queue
tar -jxf libnetfilter_queue-1.0.2.tar.bz2
cd libnetfilter_queue-1.0.2
./configure --prefix=/usr --libdir=/usr/lib64
make && make install
安裝daq
tar -zxf daq-2.0.6.tar.gz
cd daq-2.0.6
./configure --prefix=/usr/local --libdir=/usr/local/lib64
PS:需確保NFQ module已enabled:Build NFQ DAQ module....... : yes,否則修改/usr/include/libnetfilter_queue/linux_nfnetlink_queue.h,
#include <libnfnetlink/linux_nfnetlink.h>改成#include <libnfnetlink/libnfnetlink.h>
然后再重新configure一次。
make && make
安裝Snort
tar -zxf snort-2.9.8.0.tar.gz
cd snort-2.9.8.0
./configure --prefix=/usr/local/snort
make && make install
至此,snort就安裝完成了,可運行/usr/local/snort/bin/snort 查看snort能否正常工作。
啟動配置:
創建snort用戶
useradd snort
創建日志目錄
mkdir /var/log/snort
啟動腳本可以在官方網站中下載,根據自己的系統進行選擇。
將啟動腳本snortd拷貝到/etc/init.d/中
cp /path/to/snortd /etc/init.d/
另外,需要在 /etc/sysconfig/中創建一個snort的文件
touch /etc/sysconfig/snort
添加以下內容:
1 # /etc/sysconfig/snort 2 # $Id: snort.sysconfig,v 1.8 2003/09/19 05:18:12 dwittenb Exp $ 3 #### General Configuration 4 INTERFACE="eth0:eth1" //指定接入網口 5 USER="snort" //指定用戶 6 GROUP="snort" //指定用戶組 7 #### Logging & Alerting 8 SNORT_OPTIONS="-A fast -b -Q --daq nfq --daq-mode inline --daq-var queue=8" //啟動相關指令
rule配置:
從官網下載最新版本的rule文件
在/etc/中創建snort文件夾
mkdir /etc/snort
在rule文件解壓到該文件夾中
tar -zxf snortrules-snapshot-2976.tar.gz -C /etc/snort
更改/etc/snort/etc/snort.conf
1 # path to dynamic preprocessor libraries 2 dynamicpreprocessor directory /usr/local/snort/lib/snort_dynamicpreprocessor/ //指定到snort的lib目錄中 3 4 # path to base preprocessor engine 5 dynamicengine /usr/local/snort/lib/snort_dynamicengine/libsf_engine.so //指定到snort的lib目錄中 6 7 # path to dynamic rules libraries 8 dynamicdetection directory /etc/snort/so_rules/precompiled/RHEL-6-0/x86-64/2.9.7.6 //指定到so_rules中的具體系統的目錄
touch /etc/snort/rules/black_list.rules /etc/snort/rules/white_list.rules
本文中使用的啟動腳本有做過改動,用於支持IPS。
snortd文件如下:
1 #!/bin/sh 2 # 3 # snortd Start/Stop the snort IDS daemon. 4 # 5 # chkconfig: 2345 40 60 6 # description: snort is a lightweight network intrusion detection tool that 7 # currently detects more than 1100 host and network 8 # vulnerabilities, portscans, backdoors, and more. 9 # 10 # June 10, 2000 -- Dave Wreski <dave@linuxsecurity.com> 11 # - initial version 12 # 13 # July 08, 2000 Dave Wreski <dave@guardiandigital.com> 14 # - added snort user/group 15 # - support for 1.6.2 16 # July 31, 2000 Wim Vandersmissen <wim@bofh.st> 17 # - added chroot support 18 19 # Source function library. 20 . /etc/rc.d/init.d/functions 21 22 # source the interface to listen on 23 . /etc/sysconfig/snort 24 25 # See how we were called. 26 case "$1" in 27 start) 28 echo -n "Starting snort: " 29 if [ -f /var/lock/subsys/snort ];then 30 status snort 31 else 32 cd /var/log/snort 33 daemon /usr/local/snort/bin/snort -D $SNORT_OPTIONS \ 34 -c /etc/snort/etc/snort.conf 35 touch /var/lock/subsys/snort 36 fi 37 # for NFQ mode 38 /sbin/iptables -t raw -nL | grep "NFQUEUE" 2>&1 >/dev/null 39 RETV=$? 40 if [ $RETV != 0 ];then 41 /sbin/iptables -t raw -A PREROUTING -p tcp -m multiport --dports 8080 -j NFQUEUE --queue-num 8 //將通過該端口的數據導入NFQ列表供snort檢測 42 #/sbin/iptables -t raw -A PREROUTING -p udp -j NFQUEUE --queue-num 8 43 else 44 exit $RETV 45 fi 46 echo 47 ;; 48 stop) 49 echo -n "Stopping snort: " 50 # for NFQ mode 51 /sbin/iptables -t raw -D PREROUTING -p tcp -m multiport --dports 8080 -j NFQUEUE --queue-num 8 52 #/sbin/iptables -t raw -D PREROUTING -p udp -j NFQUEUE --queue-num 8 53 killproc snort 54 rm -f /var/lock/subsys/snort 55 echo 56 ;; 57 restart) 58 $0 stop 59 $0 start 60 ;; 61 status) 62 status snort 63 ;; 64 *) 65 echo "Usage: $0 {start|stop|restart|status}" 66 exit 1 67 esac 68 69 exit 0
啟動snort
chmod a+x /etc/init.d/snortd
/etc/init.d/snortd start
啟動正常后,若有可疑攻擊,可在/var/log/snort/alter文件中查看到被拒絕的規則信息。
Snort簡易安裝腳本和源碼包:https://github.com/Code-CC/Security/tree/master/snort
參考:
https://www.snort.org/documents