主頁 >  其他 > Snort-IPS-入侵防御系統安裝及部署小記

Snort-IPS-入侵防御系統安裝及部署小記

2020-12-22 09:40:08 其他

安裝環境為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 install

Snort 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 install

Hyperscan需要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-hyperscan

Snort對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(根據系統型別,您通常也會看到ethoens160作為介面名稱),

我們使用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或offixed]是您想要看到的設定):

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/lists

Snort的規則集包含三個檔案夾:一個規則檔案夾包含所有單獨的規則檔案,一個內建檔案夾包含關于構建到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

標籤:其他

上一篇:【求助】unity2019打包安卓apk

下一篇:pytest---pytest斷言(assert)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more