安裝環境為Ubuntu,使用原始碼編譯方式安裝并匯入社區Snort規則;聯合防火墻做防御,依據Snort官網檔案操作,
Ubuntu 18和20上的Snort 3.0.1
用Splunk當SIEM
諾亞·迪特里希
內容
介紹
安裝Snort
配置網卡
安裝OpenApplD
安裝Snort規則集
啟用內置規則
將PCAP檔案傳遞到Snort并將警報輸出到.csv
JSON警告輸出插件
snort啟動腳本
Splunk
使用Splunk
清理您的安裝
結論
附錄A:安裝示例插件
附錄B:更改安裝位置
附錄C:構建開發人員指南
附錄D:安裝BATS: Bash自動化測驗系統
本作品根據知識共享屬性-非商業性- sharealike 4.0國際許可(CC BY-NC-SA 4.0)進行授權,
介紹
本指南向您展示了如何在Ubuntu上使用Splunk將Snort 3設定為網路入侵檢測系統(NIDS)和安全資訊和事件管理(SIEM)系統,本指南的目的是向您介紹組成基于Snort和Splunk的NIDS和SIEM的組件和選項,以便您可以修改Snort和Splunk以滿足您的特定需求,您可以通過復制和粘貼本指南中的各個步驟來安裝Snort和Splunk,而不需要花時間了解自己在做什么,這樣可以很好地作業,但是,如果您花時間理解為什么要執行每個步驟,那么您應該對Snort和Splunk的作業方式有更深入的理解,
關于Snort 3: Snort 3是基于規則的網路入侵檢測和預防軟體(NIDS/NIPS),它具有高度的靈活性和可配置性,可適應多種不同的情況,并且具有新的插件體系結構,允許開發人員創建自己的插件,以便在Snort的處理管道中使用,本指南將重點介紹Snort最常見的用法:作為一個獨立服務器,將網路流量與一組規則(稱為規則集)進行比較,以檢測可疑和可能的惡意流量,并對可疑流量生成警報,
關于Splunk: Splunk是一個收集安全資訊和事件管理(SIEM)的系統,存盤并允許您輕松地分析和可視化計算機生成的資料,包括由Snort創建的警報,本指南將使用Splunk以圖形方式顯示Snort警報,提供過濾和搜索功能,并幫助您基本了解Splunk是如何成為理解機器生成資料的強大工具的,
OpenApplD:OpenAppID允許Snort識別、控制和度量網路上使用的應用程式,OpenApplD由一組匹配特定型別網路資料的包(簽名)組成,包括第7層應用程式,如Facebook, DNS, netflix, discus,谷歌,以及使用這些服務的應用程式(chrome, http, https等),您可以基于這些OpenApplD簽名創建規則,從而允許您阻止與某些應用程式相匹配的流量(例如,阻止所有Facebook流量),
Snort 2 vs Snort 3: Snort 3是對Snort產品的完全重新設計,以解決Snort 2.9.x的一些限制,一些主要的要點是多執行緒、可擴展的插件架構、基于lua的組態檔、命令列shell和許多其他特性,更多資訊可以在這里找到,
軟體要求:本指南已經在64位版本的Ubuntu server 18和20上進行了測驗,這個指南還沒有在32位版本的Ubuntu服務器上測驗過,因為Splunk服務器不能安裝在32位平臺上,要啟動Splunk,在安裝它的驅動器上至少需要5gb的可用空間(通常是/opt/ Splunk),
我還沒有在其他基于debian的系統(包括Raspberry Pi)上測驗過本指南,盡管我收到報告說,在安裝和編譯先決條件時,只需做很少的修改就可以使其作業,
如果你必須安裝Snort在32位系統上,你有幾個選擇:安裝32位輕量級Splunk通用貨代(超濾),服務器通過日志回到你Splunk服務器,Snort json日志復制到另一個服務器進行索引,或者使用NFS共享日志目錄(安全地)Splunk服務器可以看到和索引方法,
對于尚未可用的全堆疊Snort 3.0 NIDS/NIPS,唯一需要的軟體是PulledPork,它執行規則集管理(自動下載最新的規則集以及其他管理作業),一旦PulledPork被更新為適用于Snort 3.0,我將更新這個指南,
對于舊版本的Ubuntu,Snort 3不能方便地安裝在早期版本的Ubuntu上,因為默認存盤庫中沒有所需的支持軟體版本,所以當遇到錯誤時,您需要手動編譯所需的庫(比如GCC),
警告:Snort 3是測驗版軟體,不應該在生產系統中使用它,由于Snort 3目前正在開發中:自撰寫本指南以來,您下載的Snort 3版本可能經歷了修改,從而導致編譯或配置方面的問題,
支持:請在Snort分發串列中尋求幫助:
- Snort用戶
- Snort OpenAppID
- Snort開發者
大多數請求都應該發送到Snort用戶串列,除非與OpenApplD相關或與代碼基有關的問題,請閱讀如何問一個好問題和了解郵寄名單禮儀,
安裝Snort
首先,確保您的系統是最新的,并有最新的包串列:
sudo apt-get update && sudo apt-get dist-upgrade -y確保你的系統有正確的時間和時區,這在稍后我們開始使用Splunk處理警報時非常重要,下面的命令將允許您選擇您的時區,在選擇您的地區和時區后,它將顯示當前時間,請確保這些都是正確的:
sudo dpkg-reconfigure tzdata我們將下載大量的源檔案壓縮包和其他源檔案,我們希望將它們存盤在一個檔案夾中:
mkdir ~/snort_src
cd ~/snort_src安裝Snort 3先決條件,這些包的詳細資訊可以在Snort3手冊的需求部分找到:
sudo apt-get install -y build-essential autotools-dev libdumbnet-dev \ libluajit-5.1-dev libpcap-dev zlib1g-dev pkg-config libhwloc-dev \ cmake接下來安裝可選(但強烈推薦的軟體):
sudo apt-get install -y liblzma-dev openssl libssl-dev cpputest \ libsqlite3-dev uuid-dev如果希望從包含Snort++開發人員指南的源樹構建最新的檔案,請安裝以下軟體包(純屬可選),這些包的大小接近800mb,可以跳過,除非你特別想要開發指南:
sudo apt-get install -y asciidoc dblatex source-highlight w3m因為我們將從github庫中安裝Snort,所以我們需要一些工具(這一步在Ubuntu 20中是不必要的,因為這些庫已經安裝好了):
sudo apt-get install -y libtool git autoconf需要安裝Snort DAQ(資料獲取庫)的幾個先決條件:
sudo apt-get install -y bison flex libcmocka-dev如果您希望使用NFQ (IPS模式)以行內模式運行Snort,請安裝所需的包;(如下所列的包是不需要的IDS模式或行內模式使用afpacket),如果你不確定,你應該安裝這些包:
sudo apt-get install -y libnetfilter-queue-dev libmnl-dev下載和安裝safec用于對某些遺留C-library呼叫的運行時邊界檢查(這是可選的,但推薦):
cd ~/snort_src #直接從github下載較慢,已轉存至gitee wget https://gitee.com/deng_wenyi/snort3-ubuntu-install-source-code/repository/archive/master.zip apt install unzip unzip master.zip mv snort3-ubuntu-install-source-code/libsafec-08112019.0-gad76c7.tar.gz ./ tar -xzvf libsafec-08112019.0-gad76c7.tar.gz cd libsafec-08112019.0-gad76c7/ ./configure make sudo make install安裝PCRE: Perl兼容正則運算式,我們不使用Ubuntu庫,因為Ubuntu庫的版本更老,我們沒有使用pcre2,因為hyperscan無法與那個版本兼容,
cd ~/snort_src/ mv snort3-ubuntu-install-source-code/pcre-8.43.tar.gz ./ tar -xzvf pcre-8.43.tar.gz cd pcre-8.43 ./configure make sudo make install下載并安裝gperftools 2.7,谷歌的執行緒快取malloc(用于chrome),Tcmalloc是一個記憶體分配器,它針對高并發情況進行了優化,將提供更好的速度來平衡較高的記憶體使用,我們不希望從Ubuntu存盤庫中獲得tcmalloc版本(2.5版本),因為它與Snort不兼容,Tcmalloc是可選的,但建議:
sudo apt-get install -y libunwind-dev cd ~/snort_src mv snort3-ubuntu-install-source-code/gperftools-2.7.90.tar.gz ./ tar xzvf gperftools-2.7.90.tar.gz cd gperftools-2.7.90 ./configure make sudo make installSnort 3使用Hyperscan實作快速模式匹配,Hyperscan需要Ragel和Boost頭:
cd ~/snort_src mv snort3-ubuntu-install-source-code/ragel-6.10.tar.gz ./ tar -xzvf ragel-6.10.tar.gz cd ragel-6.10 ./configure make sudo make installHyperscan需要Boost c++庫,請注意,我們沒有使用boost頭檔案的Ubuntu存盤庫版本(libboost-all-dev),因為Hyperscan需要1.58或更高版本的boost庫,而且Ubuntu存盤庫版本太老了,下載Boost 1.72.0庫,但不安裝:
cd ~/snort_src #boost庫比較大(約120M),見百度網盤下載;或使用原鏈接下載 #鏈接: https://pan.baidu.com/s/1GOM1KXJDjBMsElGw7q3fRg 密碼: e4av #--來自百度網盤超級會員V4的分享 wget https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.gz tar -xvzf boost_1_72_0.tar.gz從源檔案安裝hyperscan5.2.1,參考Boost頭檔案源目錄的位置:
cd ~/snort_src mv snort3-ubuntu-install-source-code/hyperscan-5.2.1.tar.gz ./ tar -xvzf hyperscan-5.2.1.tar.gz mkdir ~/snort_src/hyperscan-5.2.1-build cd hyperscan-5.2.1-build/ cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBOOST_ROOT=~/snort_src/boost_1_72_0/ ../hyperscan-5.2.1 make sudo make install如果你想測驗Hyperscan作業,從構建目錄,運行:
cd ~/snort_src/hyperscan-5.2.1-build/ ./bin/unit-hyperscanSnort對flatbuffers有一個可選的要求,這是一個記憶體高效的序列化庫(您可以在cmake程序中忽略“不是git庫”的錯誤):
cd ~/snort_src mv snort3-ubuntu-install-source-code/flatbuffers-v1.12.0.tar.gz ./ tar -xzvf flatbuffers-v1.12.0.tar.gz mkdir flatbuffers-build cd flatbuffers-build cmake ../flatbuffers-1.12.0 make sudo make install接下來,從Snort網站下載并安裝資料采集庫(DAQ),注意,Snort 3使用的DAQ與Snort 2.9.x.x系列不同:
cd ~/snort_src git clone https://gitee.com/deng_wenyi/snort3-libdaq.git cd snort3-libdaq ./bootstrap ./configure make sudo make install更新共享庫:
sudo ldconfig現在,我們準備從github存盤庫下載、編譯和安裝Snort 3,如果您對啟用額外的編譯時功能感興趣,比如能夠處理大的(超過2 GB) PCAP檔案,或者新的命令列shell,那么您應該運行./configure cmake.sh --help列出所有可能的選項,如果您想安裝到其他位置,請參閱附錄B,下載和安裝,默認設定:
cd ~/snort_src git clone https://gitee.com/deng_wenyi/snortadmin-snort3.git cd snortadmin-snort3/ ./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc cd build make sudo make install安裝的最后一步是驗證Snort是否安裝并可以運行,為此,我們向snort可執行檔案傳遞-V這個標志:
/usr/local/bin/snort -V您應該會看到類似如下的輸出:
root@UbuntuServer:~/snort_src/snortadmin-snort3/build# /usr/local/bin/snort -V ,,_ -*> Snort++ <*- o" )~ Version 3.0.3 (Build 5) '''' By Martin Roesch & The Snort Team http://snort.org/contact#team Copyright (C) 2014-2020 Cisco and/or its affiliates. All rights reserved. Copyright (C) 1998-2013 Sourcefire, Inc., et al. Using DAQ version 3.0.0 Using LuaJIT version 2.0.4 Using OpenSSL 1.0.2g 1 Mar 2016 Using libpcap version 1.7.4 Using PCRE version 8.43 2019-02-23 Using ZLIB version 1.2.8 Using FlatBuffers 1.12.0 Using Hyperscan version 5.2.1 2020-12-13 Using LZMA version 5.1.0alpha如果您的輸出與上面的類似,那么恭喜您!Snort已安裝并正常作業,現在讓我們使用默認組態檔測驗Snort:
snort -c /usr/local/etc/snort/snort.lua您應該會看到以以下內容結束的輸出:
Snort successfully validated the configuration (with 0 warnings). o")~ Snort exiting配置網卡
現代網卡使用卸載(例如LRO)來處理硬體中的網路包重新組裝,而不是在軟體中重新組裝,對于大多數情況,這是首選的,因為它減少了系統上的負載,對于NIDS,我們希望禁用LRO和GRO,因為這會截斷較長的資料包(更多資訊請參見Snort 2手冊),
我們需要創建一個systemD服務來更改這些設定,首先確定使用ifconfig查看讓snort偵聽的介面的名稱,
注意:如果你使用的是Ubuntu 20: ifconfig已經被ip命令所取代(運行ip address show查看介面和ip地址),
一旦知道了網路介面的名稱,請檢查這些介面的大接收(LRO)和通用接收(GRO)的卸載狀態,在下面的示例中,我的介面名稱是ens3(根據系統型別,您通常也會看到etho或ens160作為介面名稱),
我們使用ethtool來檢查LRO/GRO的狀態
sudo ethtool -k ens3 | grep receive-offload輸出:
generic-receive-offload: on large-receive-offload: off [fixed]從這個輸出中,您可以看到啟用了GRO,LRO被禁用(“固定”意味著它不能被改變),我們需要確保兩者都被設定為"off"(或off [fixed]),我們可以使用ethtool命令禁用LRO和GRO,但該設定不會在重新啟動時持久存在,解決方案是創建一個systemD腳本,在每次引導時自動設定這個值,
創建systemD腳本:
sudo vi /lib/systemd/system/ethtool.service輸入以下資訊,將ens3替換為您的介面名稱:
[Unit] Description=Ethtool Configration for Network Interface [Service] Requires=network.target Type=oneshot ExecStart=/sbin/ethtool -K ens3 gro off ExecStart=/sbin/ethtool -K ens3 lro off [Install] WantedBy=multi-user.target檔案創建完成后,啟用服務:
sudo systemctl enable ethtool sudo service ethtool start這些設定現在將在重新引導時持久存在,您可以使用ethtool驗證設定,將顯示(off或off[fixed]是您想要看到的設定):
sudo ethtool -k ens3 | grep receive-offload輸出:
generic-receive-offload: off large-receive-offload: off [fixed]安裝OpenApplD
OpenApplD允許識別應用層(第7層)的流量,您可以創建操作應用程式層流量的規則(比如阻止facebook),并記錄檢測到的每種型別的流量統計資料
在社區的幫助下,Snort團隊創建了一個檢測器包,稱為應用程式檢測器包,可以下載和安裝,首先下載OpenAppID檢測器包并解壓縮檔案
cd ~/snort_src/ mv snort3-ubuntu-install-source-code/snort-openappid.tar.gz ./ tar -xzvf snort-openappid.tar.gz sudo cp -R odp /usr/local/lib/如果您得到的錯誤是該檔案不存在,那么可能是Snort團隊更新了規則集,瀏覽到https://snort.org/downloads#openappid,并下載snort-openappid.tar.gz,
按照上面的方法下載和提取規則后,我們需要編輯Snort組態檔以指向這個odp目錄:
sudo vi /usr/local/etc/snort/snort.lua在第89行(您的行號可能略有不同),您將看到"appid ="條目,您將需要在這里添加app_detector_dir選項,它指向我們上面解壓縮的odp檔案夾的父檔案夾,它應該是這樣的:
appid = { ?? appid requires this to use appids in rules app_detector_dir = '/usr/local/lib', }注意,縮進行必須有四個空格(而不是制表符),現在我們想測驗組態檔正確加載:
snort -c /usr/local/etc/snort/snort.lua --warn-all此命令將驗證Snort是否可以正確讀取snort.lua檔案,它不包含任何錯誤,運行此命令后,您應該看到以以下內容結束的輸出:
注:(Snort的例外等級,警告、錯誤、致命錯誤)(我產生了5個警告,但這無傷大雅)
... Finished /usr/local/etc/snort/snort.lua: WARNING: appid: no lua detectors found in directory '/usr/local/lib/custom/lua/*' -------------------------------------------------- pcap DAQ configured to passive. Snort successfully validated the configuration (with 1 warnings). o")~ Snort exiting您可能會看到一個警告(非致命):WARNING: appid:在目錄"/usr/local/lib/custom/lua/"中找不到lua檢測器,
只要輸出以“Snort成功驗證了配置”結束,就可以忽略此警告,這個警告只是意味著您沒有任何本地開發的openAppld獲取腳本,
接下來,我們將創建一個簡單的規則來測驗OpenAppID是否正常作業
sudo mkdir /usr/local/etc/rules sudo touch /usr/local/etc/rules/local.rules sudo vi /usr/local/etc/rules/local.rules我們將在local.rules檔案中生成兩個規則,第一個規則使用OpenApplID來檢查Facebook流量,第二個規則將檢測ICMP流量,這對于測驗警報是否正確生成非常有用,這兩條規則很適合測驗您的設定,將以下兩行粘貼到上面創建的local.rules檔案中:
alert tcp any any -> any any ( msg:"Facebook Detected"; appids:"Facebook";sid:10000001; ) alert icmp any any -> any any (msg:"ICMP Traffic Detected";sid:10000002;)現在運行Snort并加載local.rules檔案,以確保正確加載這些規則(驗證規則的格式正確):
snort -c /usr/local/etc/snort/snort.lua \ -R /usr/local/etc/rules/local.rules輸出應該以“Snort成功驗證了匹配”結束,你不應該有任何警告或錯誤.
如果您向上滾動輸出,您應該會看到這兩個文本規則已成功加載(在rule counts部分),現在,讓我們在一個介面(更改下面的etho以匹配您的介面名稱)上以檢測模式運行snort,并將所有警報列印到控制臺:
sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules \ -i eth0 -A alert_fast -s 65535 -k none"-k none"標志告訴Snort忽略錯誤的校驗和,而"-s 65535"標志則防止Snort處理過大的包,Stream和Frag解碼器會丟棄校驗和錯誤的資料包,而OpenApplD檢測器也不會處理這些資料包,通過包含這些標志,我們可以確保具有錯誤校驗和的資料包仍然被處理為警報,snort將加載配置,然后顯示:
Commencing packet processing ++ [0] eth0這意味著snort目前正在監聽該介面上的所有流量,并將其與它加載的兩個規則進行比較,當流量與規則匹配時,snort將向控制臺寫入警告,現在,從該計算機上的另一個視窗(打開一個新的終端視窗或第二個ssh會話),使用wget連接到facebook,這將觸發第一個規則:
wget facebook.com在第一個控制臺視窗中,您將看到類似于以下的警報輸出:
05/30?21:26:48.482231 [**] [1:10000001:0] "Facebook Detected" [**] [Priority: 0] [AppID: Facebook] {TCP} 10.10.10.170:59632 ?> 185.60.216.35:80 05/30?21:26:48.506197 [**] [1:10000001:0] "Facebook Detected" [**] [Priority: 0] [AppID: Facebook] {TCP} 185.60.216.35:80 ?> 10.10.10.170:59632 ...使用ctrl-c停止Snort,您還可以在snort偵聽時(觸發local.rules檔案中的第二條規則)與這臺機器進行ping或從該機器發出ping以生成警報,這是測驗Snort的好規則,但在實際生產使用程序中可能會產生一些干擾,
如果沒有看到生成的警報,請確保在此測驗中,您正在運行snort的計算機上運行wget facebook.com,并且請求將從snort偵聽的介面發出,您可以從另一臺計算機ping到snort(到讓snort偵聽的介面的ip地址),
注:(如果無法使用ctrl-c停止Snort,可以嘗試ctrl-z)
如果希望收集OpenAppID統計資訊(每個檢測器檢測到多少流量),則需要在snort.lua檔案中啟用它,并使用"-l"標志,在標志后接"日志目錄"運行Snort,
首先創建一個日志目錄
sudo mkdir /var/log/snort現在修改/usr/local/etc/snort/snort.lua使appid檢測器能夠記錄統計資訊(第89行):
appid = { app_detector_dir = '/usr/local/lib', log_stats = true, }現在運行snort,監聽介面,將資料記錄到/var/log/snort檔案夾
(與之前的命令相同,我們只是添加了日志檔案夾路徑"-l"標志)
sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules \ -i eth0 -A alert_fast -s 65535 -k none -l /var/log/snort在收集一些資料并停止Snort(像以前一樣使用ping和wget facebook.com生成資料,然后使用Ctrl-C停止)之后,您將在/var/log/snort看到appid_stats.log該檔案為root用戶所有,因此讓所有人都可讀(我們將在后面一節中更改Snort自動撰寫的檔案的權限):
sudo chmod a+r /var/log/snort/appid_stats.log現在可以查看snort收集的協議統計資訊:
noah@snort3:~/snort_src$ cat /var/log/snort/appid_stats.log 1549218716,DNS,1576,1778 1549218716,Facebook,8727,630912 1549218716,OpenSSH,19523,2344 1549218716,SSH,19523,23445 1549218716,HTTPS,8727,630912 1549218716,SSL client,8727,630912 1549218716,ICMP,392,392 1549218716,__unknown,11028,139100這是一個逗號分隔的檔案,按照這個順序顯示時間(unixtime)、檢測器、發送位元組(tx)和接收位元組(rx),如果不希望收集此資料,可以在snort.lua組態檔appid模塊中禁用log開啟選項,請注意,此資料與local.rules檔案中由規則生成的警報不同,有關檢測器的更多資訊,請參見OpenApplD檢測器指南,
安裝Snort規則集
與Snort 2規則相比,Snort 3規則有更多的選項,盡管手動下載的v2規則或使用PulledPork(一個自動下載更新規則集的腳本)可以在Snort 3中使用,但應該使用專門為Snort 3創建的規則,
目前PulledPork還不能與Snort 3一起作業,因此無法自動更新規則集,我期望在不久的將來改變,一旦有了,我將發布一個更新的指南,
有三組不同的Snort規則可供選擇(稱為規則集),社區規則集是免費的,不需要登錄;注冊的規則集包含社區規則集和其他規則,需要在snort.org上擁有一個免費帳戶,訂閱者規則集是付費服務,訂閱方規則集的規則將在30天后添加到注冊的規則集,更多的資訊在這里
本指南將假設您正在使用注冊的規則集,您需要在Snort.org上創建一個帳戶,還可以選擇在其中注冊各種snort郵件串列(電子郵件數量適中,通常有一些有趣的問題),注冊并簽到之后,導航到規則下載頁面,下載最新的3.0規則(稱為snortrales-snapshot3xxx.tar.gz或類似的內容,取決于是否發布了新的版本),將規則集保存到snort-src檔案夾中,
我們需要創建一些檔案夾來存盤規則集中的規則,這里我們在usr/local/etc/snort中創建了四個檔案夾(如果您在上面為local.rules檔案創建了第一個檔案夾,那么它可能已經存在);
檔案夾名稱 目的 rules 注冊規則集中的所有基本規則檔案 builtin_rules 包含內置規則的參考和資訊的規則檔案 so_rules 這些是編譯后的規則,Snort 3還沒有這些功能,但很快就會實作 lists 白名單和黑名單,我們在本指南中沒有設定這些 創建這些檔案夾:
sudo mkdir /usr/local/etc/rules sudo mkdir /usr/local/etc/builtin_rules sudo mkdir /usr/local/etc/so_rules sudo mkdir /usr/local/etc/listsSnort的規則集包含三個檔案夾:一個規則檔案夾包含所有單獨的規則檔案,一個內建檔案夾包含關于構建到snort的規則的資訊,以及一個etc檔案夾,其中包含規則集生成的更新后的snort組態檔,從Snort的規則集中提取檔案,將所有規則檔案復制到snort規則檔案夾中,將內置規則復制到內置檔案夾中,并將snort配置檔案復制到snort的程式檔案夾中:
注:(此時應該去snort官網下載注冊規則集,并儲存在~/snort_src/目錄;因為下一步即將用到)
cd ~/snort_src/ #在此提供了注冊規則集的下載地址,但仍希望您去官方下載,因為它有可能會失效 wget https://www.snort.org/rules/snortrules-snapshot-3000.tar.gz?oinkcode=0e0795beeba6b8bd7c1d5b2727e48ad7a9202eb6 -O snortrules-snapshot-3000.tar.gz mkdir snortrules-3000 tar -xvzf snortrules-snapshot-3000.tar.gz -C ./snortrules-3000 cd snortrules-3000 #復制單個規則檔案 sudo cp ./rules/*.rules /usr/local/etc/rules/ #復制內建規則檔案 sudo cp ./builtins/builtins.rules /usr/local/etc/builtin_rules/ #復制新的組態檔(我們將覆寫當前的配置), sudo cp ./etc/* /usr/local/etc/snort/我們從etc檔案夾復制了三個檔案,file_magic.lua它告訴snort如何識別檔案型別;snort_defaults.lua表示(配置snort的全域設定(系統范圍);snort.lua它是snort特定實體的組態檔,
每次運行Snort時,您將向Snort傳遞一個snort.lua檔案,該檔案描述您希望snort如何運行,這個檔案會加載默認檔案,它描述的系統配置,適用于每個dierent不同方式運行snort,你
可以有多個dierent版本的snort.lua,但通常只有一個默認的配置,
我們現在將編輯這些檔案,我們不需要對/usr/local/etc/snort/snort_defaults.lua進行任何更改,但是如果您查看從第23行開始的部分,您會注意到我們在上面創建的檔案夾,這就是snort如何在這些檔案夾中查找規則檔案的方法,
注:(這兩段話及其繞口,勞資也沒聽懂,但是沒關系)
接下來,編輯snort.lua檔案,這個檔案是我們在啟動時傳遞給snort的組態檔,它還加載snort_defaults.lua檔案,
sudo vi /usr/local/etc/snort/snort.lua首先,讓我們配置我們的HOME_NET變數,這指的是我們正在保護的本地子網(規則使用此資訊來確定警報是否匹配),在這里設定您的本地子網資訊以匹配您的子網,我的子網配置是10.0.0.0網路與24位子網掩碼:
HOME_NET = '10.0.0.0/24'設定EXTERNAL_NET為“any”(一些指南希望你設定這個為除了所有子網的主網,但這會讓你錯過許多重要的警告),
在第91行,您將看到appid插件沒有任何選項(意味著檢測器已加載,但未配置),如果愿意,可以像上一節那樣配置它,
注:(官方修改了組態檔,以前可能是在91行,但現在它在116行;像之前一樣配置appid的路徑并啟用日志檔案即可)
在第169行,您將看到ips檢測器,如果你查看IPS設定,你會看到我們復制的所有規則檔案,從第180行開始:
注:(ips檢測器在195行,“我們復制的所有規則檔案”是從206行開始)
rules = [[ include $RULE_PATH/snort3-app-detect.rules include $RULE_PATH/snort3-browser-chrome.rules include $RULE_PATH/snort3-browser-firefox.rules include $RULE_PATH/snort3-browser-ie.rules ...$RULE_PATH路徑在snort_defaults.lua中定義,參考/usr/local/etc/rules.您可以在第172行看到內置ips選項;稍后我們將啟用這些規則,現在,讓我們測驗一下snort是否可以成功加載這些規則,讓我們通過運行snort來測驗組態檔,并將路徑傳遞給這個修改后的snort.lua檔案,就像我們之前做的:
snort -c /usr/local/etc/snort/snort.lua如果你出現了類似以下報錯:
Finished /usr/local/etc/snort/snort.lua: Loading ips.rules: FATAL: ips.rules:3 undefined variable name: RULE_PATH. Fatal Error, Quitting..請移步我的另一篇文章:https://www.cnblogs.com/Deng-Xian-Sheng/p/14170498.html
未完待續……
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238385.html
標籤:其他
