一.實驗環境apache
操做系統:ubuntu18.0四、Kaliubuntu
實驗工具:snort、vmware workstation瀏覽器
1號機IP:192.168.204.131服務器
2號機IP:192.168.204.132網絡
二.實驗內容tcp
在進行Snort配置前須要搭建實驗環境,實驗所需的環境配置以下圖所示:工具
Part A學習
在1號機上運行Snort對網絡接口eth0進行監聽,要求以下:flex
1)僅捕獲2號機發出的icmp回顯請求數據包。ui
2)採用詳細模式在終端顯示數據包鏈路層、應用層信息。
3)對捕獲信息進行日誌記錄,日誌目錄/var/log/snort。
Part B
在1號機上運行Snort對網絡接口eth0進行監聽,要求以下:
1)僅捕獲2號機發出的telnet請求數據包。
2)將捕獲數據包以二進制方式存儲到日誌文件中/var/log/snort/snort.log。
Part C
在1號機的snort規則集目錄ids/rules下新建snort規則集文件new.rules,對來自外部主機的、目標爲當前主機80/tcp端口的請求數據包進行報警,報警消息自定義。
在1號機上編輯snort.conf配置文件,使其包含new.rules規則集文件。
以入侵檢測方式啓動snort,進行監聽,2號機訪問1號機Web服務。
三.實驗步驟
安裝snort:
https://www.snort.org/downloads/archive/snort/daq-2.0.6.tar.gz
https://www.snort.org/downloads/archive/snort/snort-2.9.9.0.tar.gz
安裝所需的頭文件庫
若是是Kali端:
apt-get install gcc : 編譯器,若是報錯,apt-get install g++ apt-get install flex : DAQ所需的解析器 apt-get install bison : DAQ所需的解析器 apt-get install zlib1g-dev : Snort所需的壓縮庫 apt-get install libpcap-dev : Snort所需的網絡流量捕獲頭文件庫 apt-get install libdnet-dev : 不是必要的,只是snort爲幾個網絡歷程提供了簡化的可移植接口 apt-get install luajit : lua的頭文件庫headers apt-get install liblua5.1-0-dev apt-get install liblua5.1-0-dev liblua50-dev liblualib50-dev apt-get install build-essential : 提供編譯軟件的構建工具 apt-get install libpcre3-dev : Snort所需的pcre3的頭文件 apt-get install libdumbnet-dev : 同libdnet apt-get install openssl libssl-dev : ssl的加密組件,提供SHA和MD5文件簽名 apt-cache search lua #源碼安裝libpcap tar -zxvf libpcap-1.9.0.tar.gz cd libpcap-1.9.0 ./configure && make && make install #源碼安裝nghttp2 tar -zxvf nghttp2-1.35.1.tar.gz cd nghttp2-1.35.1 ./configure && make && make install #源碼安裝LuaJIT tar -zxvf LuaJIT-2.0.5.tar.gz make && make install (ps:無./configure) #源碼安裝pcre tar -zxvf pcre-8.42.tar.gz cd pcre-8.42.tar.gz ./configure && make && make install #源碼安裝daq tar -zxvf daq-2.0.6.tar.gz cd daq-2.0.6 ./configure && make && make install #源碼安裝snort tar -xvzf snort-2.9.7.0.tar.gz cd snort-2.9.7.0 ./configure --enable-sourcefire make make install #更新共享庫 ldconfig ln -s /usr/local/bin/snort /usr/sbin/snort snort -V
若是是Ubuntu,則很簡單:
sudo apt-get update sudo apt-get upgrade sudo apt-get install snort #檢查是否安裝成功 snort -V
Part A:
監聽端口ens37: sudo snort -i ens37 -dev icmp and src 192.168.204.132 -l /var/log/snort
2號機ping 1號機:
1號機:
使用wireshark打開保存的日誌記錄:
Part B:
1號機開啓telnet:
安裝openbsd-inetd:
sudo apt-get install openbsd-inetd
安裝telnetd:
sudo apt-get install telnetd
重啓openbsd-inetd:
sudo /etc/init.d/openbsd-inetd restart
查看telnet運行狀態:
sudo netstat -a | grep telnet
1號機開啓監聽並記錄日誌:
sudo snort -i ens37 -b tcp and src 192.168.204.132 and dst port 23
2號機發起請求:
sudo telnet 192.168.204.131
1號機:
wireshark打開日誌:
sudo wireshark /var/log/snort/snort.log.1605864340
Part C:
在1號機的snort規則集目錄ids/rules下新建snort規則集文件new.rules,對來自外部主機的、目標爲當前主機80/tcp端口的請求數據包進行報警,報警消息自定義:
sudo gedit /etc/snort/rules/local.rules
輸入:alert tcp any any -> 192.168.204.131 80 (msg:"WARNING! There is http connect!" ;sid:26287)
編輯snort.conf配置文件,使其包含loacl.rules規則集文件:
gedit /etc/snort/rules/local.rules
添加:include $RULE_PATH/local.rules
安裝apache:
sudo apt install apache2 -y
開啓apache:
sudo service apache2 start
以入侵檢測的方式啓動snort進行監聽:
snort -c /etc/snort/snort.conf -A console -i ens37
2號主機在瀏覽器訪問1號主機的服務器:
1號主機發生警告:
四.實驗總結
經過本次實驗,我學會了snort的部署和相關命令的使用,認識到snort的強大。在使用的過程當中不斷的遇到問題,解決問題,從這個過程當中我也學習到了許多的知識,瞭解到snort的三種方式嗅探器模式,包記錄器模式,和網絡入侵檢測系統模式。嗅探器模式僅僅是從捕獲網絡數據包顯示在終端上,包記錄器模式則是把捕獲的數據包存儲到磁盤,入侵檢測模式則是最複雜的能對數據包進行分析、按規則進行檢測、作出響應。可是snort也存在缺點,Snort由各功能插件協同工做,安裝複雜,各軟件插件有時會因版本等問題影響程序運行;Snort對全部流量的數據根據規則進行匹配,有時會產生不少合法程序的誤報。