安裝環境爲Ubuntu,使用源碼編譯方式安裝並導入社區Snort規則;聯合防火牆作防護,依據Snort官網文檔操做。html
Ubuntu 18和20上的Snort 3.0.1
用Splunk當SIEMnode
諾亞·迪特里希c++
內容
介紹git
安裝Snortgithub
配置網卡web
安裝OpenApplD正則表達式
安裝Snort規則集sql
啓用內置規則chrome
將PCAP文件傳遞到Snort並將警報輸出到.csvshell
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用戶列表,除非與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..請移步個人另外一篇文章:http://www.javashuo.com/article/p-xibqgyxv-ny.html
未完待續……