Python基本觀念與變數

圖片
本章參考: 王者歸來 做的筆記 一、Python認識  1.Python是一種Interpreted language、Object Oriented Language的程式語言,並擁有完整的函數庫。 2.Python算是一種動態高階語言,具有Garbage collection機制。 3.Python是一個Open Source,並且本身有許多package或module。 二、靜態語言與動態語言 1.variable是一個語言核心,由變數的設定可以知道這個程式所要完成的工作;variable分成static language與dynamic language 2.有些程式語言的variable在使用前需要宣告他的資料型態,這樣compile可在記憶體內預留空間給variable。同時,這個變數的資料型態經過宣告後,未來無法再改變他的資料型態,這類的程式語言稱static language 3.variable在使用前不必宣告他的資料型態,其特色不用經過compile過程,而是使用interpreter直接interpret與execute,這類的程式語言稱dynamic language(scripting language、glue code) 4.實際案例,利用Python列出變數的位址,相同的內容的變數會有相同的位址。 5.刪除變數,雖然python變數宣告很方便,但有時候宣告過多,執行起來會有點小卡,因此可以刪除變數                                                      del 變數名稱

Ubuntu16.04上的Snort 2.9.11 +base

一、介紹
Snort是一套開放原始碼的網路入侵預防軟體與網路入侵檢測軟體。Snort使用了以偵測簽章(signature-based)與通訊協定的偵測方法。截至目前為止,Snort的被下載次數已達到數百萬次。 Snort被認為是全世界最廣泛使用的入侵預防與偵測軟體。

本篇將引導您安裝Snort作為NIDS(網絡入侵檢測系統),以及擴展您的Snort系統功能的附加軟件。

這些安裝教學指南官方文件都可以找的到:
snort的官網

文章將逐步介紹Snort系統每個組件的安裝,配置和測試。我將在本指南詳細介紹安裝過程,了解Snort如何安裝,配置,測試,執行以及如何與其支持軟件進行互動。


支持的軟件版本

本指南已經在Ubuntu 14和16的x86和x64體系結構上的Snort 2.9.9.0上進行了測試。本指南可能適用於其他Ubuntu派生的發行版,並且我被告知它工作得很好(有些修改)用於包括Raspberry Pi在內的Debian系統。如果您想將Snort作為虛擬機運行,本指南將記錄VMware特定的配置選項。在撰寫本文時,最新版本的Snort是2.9.11.0,下面的說明是為該版本量身定制的。如果您想使用下面安裝的任何軟件的更新版本(在本指南發布後發布的更新版本),它應該沒有顯著的變化,但顯然您可能遇到我無法預見的問題。

Snort以獨立模式運行,作為數據包嗅探器和記錄器。有了一些額外的應用程序和一些配置,Snort系統作為NIDS變得更有用。我們將在這組文章中安裝的支持軟件組件是:

Barnyard2
     是Snort統一的二進制輸出格式的專用假脫機程序。數據包處理是非常耗費資源的,所以為了減少Snort進程的負擔:我們有Snort將可疑數據包保存到本地二進制格式的目錄中,而不處理數據包。Barnyard2然後異步處理這些數據包並將它們保存在MySQL數據庫中。
PulledPork
    是一個Perl腳本,可以自動下載最新的Snort規則集。由於威脅環境不斷發展,Snort需要新的規則集來識別最新類型的可疑流量(規則集類似於防病毒簽名)。
BASE
   提供了一個Web前端來查詢和分析來自Snort系統的警報。

本指南的替代方案

如果您只想安裝並運行Snort系統,而無需編譯和安裝所有單個組件,則還有一些替代方法:

Autosnort: 將在您的系統上安裝Snort和支持軟件的腳本
Install Snort from the Ubuntu repository: 這個版本的Snort往往是過時的,並沒有給你編譯自己的版本的Snort提供的靈活性。
Security Onion:一個基於Ubuntu的Snort已經安裝的Live CD。

二、基本設定
Snort不需要分配給正在監聽的接口的IP地址,也可以使用許多配置
snort將偵聽沒有配置IP地址的接口。系統容易通過SSH遠程訪問,如果接口是可達的。在生產環境中,推薦使用你在你的Snort服務器上使用一個接口進行管理,並讓Snort監聽其他接口,
(這不是必需的)。
一般情況下,Ubuntu將使用DHCP自動配置地址,如果是這種情況,你可以通過運行ifconfig eth0來驗證你的ip地址。如果您沒有分配DHCP服務器IP地址,請在您的Snort系統上手動配置一個。您將需要與網路連接才能下載所需的軟件包和軟件tarball。
首次登錄並驗證與網路連接後,請確保系統已達到日期,並安裝openssh-server(這樣我們可以遠程管理系統)。安裝完成後重新啟動確定所有的補丁都被應用。
# Install Updates and reboot:
sudo apt-get update
sudo apt-get dist-upgrade -y
sudo apt-get install -y openssh-server
sudo reboot
<<dist-upgrade: 可以聰明的解決相依性的問題, 如果有相依性問題, 需要 安裝/移除 新的 Package, 就會試著去 安裝/移除 它. (所以通常這個會被認為是有點風險的升級)>>
<<如果您在VMware vSphere服務器上安裝Snort,則不再需要手動安裝vmware
工具,它們是默認安裝的open-vm-tools軟件包的一部分。>>
網卡配置
編輯/ etc / network / interfaces
sudo vi /etc/network/interfaces
為每個您要使用Snort偵聽的網絡接口添加以下兩行代碼,確保將eth0更改為與您的接口名稱相匹配(請參閱以下針對Ubuntu 16的註釋):
post-up ethtool -K eth0 gro off
post-up ethtool -K eth0 lro off
運行Ubuntu 16的人的重要提示:從Ubuntu 15.10開始,網絡接口不再遵循ethX標準(eth0eth1...)。相反,接口名稱被分配為可預測的網絡接口名稱。這意味著你需要使用ifconfig -a來檢查你的接口的名字。就我而言,原來的eth0現在是ens160。如果您正在運行Ubuntu 15.10,在本指南的任何地方您可以看到eth0,則需要使用新的接口名稱進行替換。
/ etc / network / interfaces文件應該如何查找單個接口的示例:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
post-up ethtool -K eth0 gro off
post-up ethtool -K eth0 lro off
重新啟動網絡(用下面的接口替換eth0)並確認LROGRO被禁用:
sudo ifconfig eth0 down && sudo ifconfig eth0 up
ethtool -k eth0 | grep receive-offload
generic-receive-offload: off
large-receive-offload: off

安裝Snort先前設定
Snort有四個主要的先決條件:
可從Ubuntu存儲庫獲得的pcaplibpcap-dev
PCRElibpcre3-dev)可從Ubuntu存儲庫中獲得
Libdnetlibdumbnet-dev)可以從Ubuntu存儲庫中獲得
DAQhttp://www.snort.org/downloads/)從源代碼編譯
首先,我們要安裝構建軟件所需的所有工具。 build-essentials包的確如此
這對我們來說:
sudo apt-get install -y build-essential
一旦安裝了我們的構建工具,我們就安裝了Ubuntu提供的所有Snort先決條件
repositories3
sudo apt-get install -y libpcap-dev libpcre3-dev libdumbnet-dev
Snort DAQ(數據採集庫)有一些需要安裝的先決條件:
sudo apt-get install -y bison flex
在本指南中,我們將為各種軟件包下載一些tarbals。我們將創建一個
名為snort src的文件夾將它們全部保存在一個地方:
Ubuntu上安裝Snort的任何一個指南都會從主頁http//libdnet.sourceforge下載libdnet
/。這是可能的,將工作正常。但是,libdumbnet-dev Ubuntu軟件包提供了相同的軟件(不從Ubuntu存檔中安裝libdnet軟件包,因為它是不相關的軟件包,並且不提供所需的libdent庫)。如果要從源代碼編譯libdent庫,並且運行的是64位版本的Ubuntu,請使用-fPIC標誌在'配置'階段。
mkdir/ snort_src
cd/ snort_src
Snort網站下載並安裝最新版本的DAQ。下面的步驟使用wget
下載DAQ版本2.0.6,這是編寫本指南時的最新版本。
cd ~/snort_src
wget https://snort.org/downloads/snort/daq-2.0.6.tar.gz
tar -xvzf daq-2.0.6.tar.gz
cd daq-2.0.6
./configure
make
sudo make install
當你運行./configure時,你會看到下面的輸出,顯示哪些模塊正在被配置
並且在編譯DAQ時可用:
Build AFPacket DAQ module.. : yes
Build Dump DAQ module...... : yes
Build IPFW DAQ module...... : yes
Build IPQ DAQ module....... : no
Build NFQ DAQ module....... : no
Build PCAP DAQ module...... : yes
Build netmap DAQ module.... : no
這告訴你哪些DAQ模塊已經被配置。對於大多數安裝,您只需要AFPacket
PCAP。關於各種DAQ模塊的更多信息可以在這裡找到。 PCAP數據採集模塊
是默認模塊,用於從文件或接口獲取數據包到Snort中。使用AFPacket
在線模式(Snort作為IPS)。對於更高級的安裝,您可能需要NFQnetmap
模塊。本指南不包括安裝或使用這些模塊,但如果您需要NFQ,請安裝
安裝DAQ之前的libnetfilter-queue-dev包。

安裝Snort

要在Ubuntu上安裝Snort,還需要安裝一個額外的必需先決條件
在文檔中沒有提到:zlibg是一個壓縮庫。
有四個可選庫提高了功能:liblzma-dev其中三個提供解壓縮
swf文件(adobe flash),openssllibssl-dev都提供了SHAMD5文件簽名:
sudo apt-get install -y zlib1g-dev liblzma-dev openssl libssl-dev
finally we need the development libraries for Nghttp2: a HTTP/2 C Library which implements the HPAC header compression algorithm. In Ubuntu 16 the install is easy:
# Ubuntu 16 only (not Ubuntu 14)
sudo apt-get install -y libnghttp2-dev
一旦安裝了所有先決條件,我們準備下載Snort源代碼包,然後編譯
安裝。 --enable-sourcefire選項提供了數據包性能監視(PPM4 5
,這讓我們做到了對規則和預處理器進行性能監視,並以與Snort團隊相同的方式構建Snort作用:
cd ~/snort_src
wget https://snort.org/downloads/snort/snort-2.9.11.tar.gz
tar -xvzf snort-2.9.11.tar.gz
cd snort-2.9.11
./configure --enable-sourcefire
make
sudo make install
注意:只要你沒有看到configure:錯誤:“致命!”當運行./configure時,你沒問題
接著說。如果出現錯誤,則應在繼續之前解決錯誤。你可以管
./configure輸出到grep... no”,得到所有沒有安裝的軟件的列表。你可以跑
./configure不止一次,首先要確保沒有總體問題,然後再看看是什麼
可選組件沒有安裝:./configure | grep... no”(你也可以使用tee命令
將輸出保存到屏幕和文件)。
可選:如果您有興趣查看可用的其他編譯時選項,請運行./configure
 - 幫助獲取所有編譯時選項的列表。 Snort團隊已經嘗試確保默認
設置對於大多數基本的安裝都是很好的,所以你不需要改變任何東西,除非你是試圖做一些特別的事情。根據您的具體情況,您可能會考慮幾個選項
--enable-inline-init-failopen允許Snort以串聯模式運行,仍然可以傳遞流量接口,如果Snort守護進程失敗,--enable-large-pcap,使PCAP文件大於2GB
sudo ldconfig
/ usr / sbin中放置一個符號鏈接到Snort二進製文件:
sudo ln -s /usr/local/bin/snort /usr/sbin/snort
通過以普通用戶身份運行二進製文件來測試Snort,並傳遞-V標誌(告訴Snort驗證自己以及傳遞給它的任何配置文件)。你應該看到類似於下面顯示的輸出(儘管確切版本號可能略有不同):
user@snortserver:~$ snort -V
,,_ -*> Snort! <*-
o" )~ Version 2.9.11 GRE (Build 56)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team


配置SnortNIDS模式下運行
由於我們不希望Snortroot身份運行,因此我們需要為此創建一個無特權的帳戶和組守護進程(snortsnort)下運行。我們也會創建一些需要的文件和目錄Snort,並設置這些文件的權限。 Snort將有以下目錄:配置和規則
/ etc / snort中的文件警報將被寫入/ var / log / snort編譯的規則(.so規則)將被存儲在/ usr / local / lib / snort dynamicrules
# Create the snort user and group:
sudo groupadd snort
sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort
# Create the Snort directories:
sudo mkdir /etc/snort
sudo mkdir /etc/snort/rules
sudo mkdir /etc/snort/rules/iplists
sudo mkdir /etc/snort/preproc_rules
sudo mkdir /usr/local/lib/snort_dynamicrules
sudo mkdir /etc/snort/so_rules
# Create some files that stores rules and ip lists
sudo touch /etc/snort/rules/iplists/black_list.rules
sudo touch /etc/snort/rules/iplists/white_list.rules
sudo touch /etc/snort/rules/local.rules
sudo touch /etc/snort/sid-msg.map
# Create our logging directories:
sudo mkdir /var/log/snort
sudo mkdir /var/log/snort/archived_logs
# Adjust permissions:
sudo chmod -R 5775 /etc/snort
sudo chmod -R 5775 /var/log/snort
sudo chmod -R 5775 /var/log/snort/archived_logs
sudo chmod -R 5775 /etc/snort/so_rules
sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules
我們想要改變我們上面創建的文件的所有權,以確保Snort可以訪問它的文件
用途:
# Change Ownership on folders:
sudo chown -R snort:snort /etc/snort
sudo chown -R snort:snort /var/log/snort
sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules
Snort需要一些配置文件,並將動態預處理器從Snort源碼壓縮包複製到
/ etc / snort文件夾。
配置文件是:
classification.config
file magic.conf
reference.config
snort.conf
threshold.conf
attribute table.dtd
gen-msg.map
unicode.map
複製配置文件和動態預處理器,運行以下命令:
cd ~/snort_src/snort-2.9.9.0/etc/
sudo cp *.conf* /etc/snort
sudo cp *.map /etc/snort
sudo cp *.dtd /etc/snort
cd ~/snort_src/snort-2.9.9.0/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/
sudo cp * /usr/local/lib/snort_dynamicpreprocessor/
我們現在有以下目錄佈局和文件位置:
Snort二進製文件:/ usr / local / bin / snort
Snort配置文件:/etc/snort/snort.conf
Snort日誌數據目錄:/ var / log / snort
Snort規則目錄:/ etc / snort / rules
               / etc / snort / so rules
               / etc / snort / preproc rules
              / usr / local / lib / snort dynamicrules
Snort IP列表目錄:/ etc / snort / rules / iplists
Snort動態預處理程序:/ usr / local / lib / snort dynamicpreprocessor /
編輯Snort的主配置文件/etc/snort/snort.conf。當我們運行Snort
這個文件作為參數,它告訴SnortNIDS模塊中運行。
我們需要註釋掉在Snort配置文件中引用的所有的規則文件,
同時,將使用PulledPork來管理我們的規則集
下面一行將註釋掉snort.conf中的所有規則集文件
sudo sed -i "s/include \ $RULE\_PATH/#include \ $RULE\_PATH/" /etc/snort/snort.conf
手動更改snort.conf文件中的一些設置:
sudo vi /etc/snort/snort.conf
更改以下行以符合您的環境:
45行,HOME NET應該匹配你的內部(友好)網絡。在下面的例子中,我們的HOME NET是具有24位子網掩碼的10.0.0.0255.255.255.06
ipvar HOME_NET 10.0.0.0/24
注意:您不應將EXTERNAL NET設置為! $ HOME NET在一些指南中推薦,因為它可能導致Snort錯過警報。
注意:您的HOME NET與您希望Snort收聽的界面的IP子網相匹配至關重要
上。請使用ifconfig | grepinet add”確保你有正確的地址和掩碼設置。經常這將是一個192.168.1.x10.0.0.xIP地址。
從第104行開始,在snort.conf中設置以下文件路徑:
var RULE_PATH / etc / snort / rules
var SO_RULE_PATH / etc / snort / so_rules
var PREPROC_RULE_PATH / etc / snort / preproc_rules
var WHITE_LIST_PATH / etc / snort / rules / iplists
var BLACK_LIST_PATH / etc / snort / rules / iplists
為了使測試Snort容易,我們要啟用local.rules文件,在那裡我們可以添加規則Snort可以提醒。從546行取消註釋(去掉散列符號),看起來像這樣:
include $RULE_PATH/local.rules
一旦配置文件準備好了,我們將會讓Snort驗證它是一個有效的文件,以及所有必要的文件它的引用是正確的。我們使用-T標誌來測試配置文件,-c標誌告訴Snort哪個配置文件使用,和-i指定Snort將監聽的接口(這是一個新的要求從啟用主動響應的Snort 2.9.8.x版本開始)。運行
Ubuntu 16的注意事項:接口名稱已更改,並且是系統特定的(不再列為ethN)。在
上面的命令,你需要用你的接口的名字(一個有效的接口)替換eth0,如圖所示與ifconfig命令(在我的情況下,它是ens160)。
通過這個命令的輸出來瀏覽Snort正在加載的內容是一個很好的主意。
這個時候很多東西都沒有意義,但是當你更多的使用Snort的時候,它會變得更加清晰。
編寫一個簡單的規則來測試Snort檢測
在這個階段,Snort沒有加載任何規則(我們在snort.conf中引用的規則文件是空的)。您可以驗證Snort沒有加載任何規則,如果您向上滾動上一個命令的輸出並查找:0讀取Snort規則。為了測試Snort的檢測能力,我們來創建一個簡單的規則導致SnortSnort看到ICMPEcho request”或“Echo reply”消息時產生警報,使用無處不在的ping工具很容易生成(這使得對規則的測試變得簡單)。將以下單行粘貼到空的本地規則文件中:/etc/snort/rules/local.rules
alert icmp any any -> $HOME_NET any (msg:"ICMP test detected"; GID:1; sid:10000001; rev:001; classtype:icmpevent;)
Barnyard2不讀取有關local.rules文件警報的元信息。沒有這些信息,
Barnyard2不會知道觸發警報的規則的任何細節,並會產生非致命錯誤
當用PulledPork添加新規則(在後面的步驟中完成)。確保稗2知道這一點
我們使用唯一標識符10000001創建的規則具有“檢測到ICMP測試”的消息,以及其他一些信息。我們將下面一行添加到
/etc/snort/sid-msg.map文件:
#v2
1 || 10000001 || 001 || icmp-event || 0 || ICMP Test detected || url,tools.ietf.org/html/rfc792
當你取消上面546行的註釋(include $RULE PATH/local.rules)時,你告訴Snortlocal.rules文件應該由Snort加載。當Snort在啟動時加載該文件時,將看到規則您創建了該接口所看到的所有流量,並使用該規則。在這種情況下,當我們創建規則時,我們告訴了Snort它應該在看到一個ICMP ping時生成一個警報。
當你取消上面的546行(包括$ RULE PATH / local.rules)時,你告訴Snort
local.rules文件應該由Snort加載。 當Snort在啟動時加載該文件時,將看到規則您創建了該接口所看到的所有流量,並使用該規則。 在這種情況下,當我們創建規則時,我們告訴了Snort它應該在看到一個ICMP ping時生成一個警報
由於我們對Snort配置進行了更改,我們應該再次測試配置文件:
sudo snort -T -c /etc/snort/snort.conf -i eth0
這次如果你向上滾動輸出,你會發現一條規則(我們在local.rules中創建的規則,並由snort.conf中的include指令加載)已被加載
注意:如果您正在運行Ubuntu 16,請記住您的接口名稱不是eth0
$ sudo /usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0
這時候就可以從外面PING自己的IP,然後就會顯示遭受到攻擊
使用ctrl-c停止運行Snort。 請注意,Snort已將此信息的副本保存在/ var / log / snort中,與名字snort.log.nnnnnnnnn(數字可能不同)。 此時,SnortNIDS模式下正常運行並生成警報。
Installing Barnyard2
首先安裝Barnyard2先決條件:
sudo apt-get install -y mysql-server libmysqlclient-dev mysql-client autoconf libtool
安裝程序將提示您創建一個root mysql用戶密碼。 對於這個例子,我們將使用MySqlROOTpassword。 你應該選擇一些不同的,更安全的東西,並安全地存儲。 我們也將創建一個名為snortMySQL用戶帳戶,並且該帳戶的密碼將會是MySqlSNORTpassword,請注意這兩個MySQL賬號和密碼的區別。
我們需要告訴snort它應該以二進制格式(對一個文件)輸出Barnyard2可以發出的警報處理。 為此,編輯/etc/snort/snort.conf文件,並在第521行(註釋行開始與散列符號)添加以下行:
output unified2: filename snort.u2, limit 128
所以521522行現在看起來像:
# output unified2: filename merged.log, l imit 128, nostamp, mpls event types, vlan event types }
output unified2: filename snort.u2, limit 128
現在下載並安裝Barnyard2 2.1.14
cd ~/snort_src
wget https://github.com/firnsy/barnyard2/archive/master.tar.gz -O barnyard2-Master.tar.gz
tar zxvf barnyard2-Master.tar.gz
cd barnyard2-master
autoreconf -fvi -I ./
Barnyard2需要訪問dnet.h庫,我們之前使用Ubuntu libdumbnet軟件包進行安裝。但是,Barnyard2期望這個庫有不同的文件名。 創建從dnet.hdubmnet.h的軟鏈接所以沒有問題:
sudo ln -s /usr/include/dumbnet.h /usr/include/dnet.h
sudo ldconfig
根據您的操作系統版本(x86x86 64),您需要將安裝指向正確的MySQL庫。
運行以下兩行中的一行來配置構建過程,具體取決於您的架構(如果是的話)
不確定你運行的是哪個體系結構,使用uname -m命令(i686i386一樣):
# Choose ONE of these two commands to run
./configure --with-mysql --with-mysql-libraries=/usr/lib/x86_64-linux-gnu
./configure --with-mysql --with-mysql-libraries=/usr/lib/i386-linux-gnu
現在完成構建並將Barnyard2安裝到/ usr / local / bin / barnyard2
make
sudo make install
測試Barnyard2以確保它安裝正確:
/usr/local/bin/barnyard2 -V
一旦安裝了Barnyard2,下一步就是複制並創建一些Barnyard2需要的文件
跑:
sudo cp ~/snort_src/barnyard2-master/etc/barnyard2.conf /etc/snort/
# the /var/log/barnyard2 folder is never used or referenced
# but barnyard2 will error without it existing
sudo mkdir /var/log/barnyard2
sudo chown snort.snort /var/log/barnyard2
sudo touch /var/log/snort/barnyard2.waldo
sudo chown snort.snort /var/log/snort/barnyard2.waldo
由於Barnyard2會將警報保存到我們的MySQL數據庫中,因此我們需要創建該數據庫以及“snortMySQL用戶訪問該數據庫。 運行以下命令創建數據庫和MySQL用戶。當提示輸入密碼時,使用MySqlROOTpassword。 你也將設置MySQL snort用戶密碼在第四個mysql命令(MySqlSNORTpassword)中,所以在那裡更改它。
$ mysql -u root -p
mysql> create database snort;
mysql> use snort;
mysql> source ~/snort_src/barnyard2-master/schemas/create_mysql
mysql> CREATE USER ' snort ' @ ' localhost ' IDENTIFIED BY ' MySqlSNORTpassword ' ;
mysql> grant create, insert, select, delete, update on snort.* to ' snort ' @ ' localhost ' ;
mysql> exit
我們需要告訴Barnyard2如何連接到MySQL數據庫。 編輯/etc/snort/barnyard2.conf,並在文件末尾添加這一行(將密碼更改為上面創建的密碼):
output database: log, mysql, user=snort password=MySqlSNORTpassword dbname=snort host=lo calhost se nsor name=sensor01
由於密碼是以明文形式存儲在barnyard2.conf文件中,所以我們應該阻止其他用戶閱讀它:
sudo chmod o-r /etc/snort/barnyard2.conf
在警報模式下運行Snort(我們運行的命令是Snort在我們運行時通常會運行的命令作為一個守護進程,除了我們沒有使用-D標誌使它作為一個守護進程運行)
sudo /usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0
從另外一台計算機ping eth0接口,你不會在屏幕上看到任何輸出,因為Snort不是像之前一樣以-A控制台標誌開始。 一旦ping停止,鍵入ctrl-c停止Snort。 你應該在/ var / log / snort目錄中看到一個新文件,其名稱如下:snort.u2.nnnnnnnnnn(數字將會因當前時間而異。 snort.log.nnnnnnnnnn是輸出文件我們在第一次測試Snort的時候創建的。 你可以刪除該文件,如果你想要的話:
ls -l /var/log/snort/
使用以下命令運行Barnyard2
sudo barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2 -w /var/log/snort/barnyard2.waldo \
-g snort -u snort
一旦你按下Ctrl-c停止barnyard2,它將打印關於它處理的記錄的信息。
我們現在要檢查MySQL數據庫,看看Barnyard2是否寫了這些事件。 運行以下
命令來查詢MySQL數據庫,您將被提示輸入MySQL snort用戶密碼:
MySqlSNORTpassword(不是MySQL根密碼):
mysql -u snort -p -D snort -e "select count(*) from event"
如果成功,您將獲得以下輸出,顯示從該數據庫寫入數據庫的8個事件
ICMP請求和回複數據包(當你從一個Windows系統ping時,默認情況下會發送4ICMP消息。 如果從另一個系統中獲得的話,計數可能會不同)
Installing PulledPork
Install the PulledPork pre-requisites:
sudo apt-get install -y libcrypt-ssleay-perl liblwp-useragent-determined-perl
下載並安裝最新的PulledPork perl腳本和配置文件:
cd ~/snort_src
wget https://github.com/shirkdog/pulledpork/archive/master.tar.gz -O pulledpork-master.tar.gz
tar xzvf pulledpork-master.tar.gz
cd pulledpork-master/
sudo cp pulledpork.pl /usr/local/bin
sudo chmod +x /usr/local/bin/pulledpork.pl
sudo cp etc/*.conf /etc/snort
通過檢查版本,使用-V標誌檢查PulledPork
/usr/local/bin/pulledpork.pl -V

配置PulledPork下載規則集
使用以下命令編輯/etc/snort/pulledpork.conf配置PulledPork
sudo vi /etc/snort/pulledpork.conf
任何你看到的<oinkcode>輸入你從snort.org收到的oinkcode(如果你沒有得到oinkcode,你需要註釋掉第19行):<若沒註釋掉你會鬼打牆>
19行:在適當的地方輸入你的oinkcode(如果沒有oinkcode,則註釋掉)
29行:對新出現的威脅規則集取消註釋(未經本指南測試)
74行:更改為:rule_path = / etc / snort / rules / snort.rules
89行:更改為:local_rules = / etc / snort / rules / local.rules
92行:更改為:sid_msg = / etc / snort / sid-msg.map
96行:更改為:sid_msg_version = 2
119行:更改為:config_path = / etc / snort / snort.conf
133行:更改為:distro = Ubuntu-12-04
141行:更改為:black_list = / etc / snort / rules / iplists / black_list.rules
150行:更改為:IPRVersion = / etc / snort / rules / iplists
運行以下命令:
sudo /usr/local/bin/pulledpork.pl -c /etc/snort/pulledpork.conf -l
PulledPork成功完成時,您應該在/ etc / snort / rules /中看到snort.rules
Pulled Pork將所有規則組合成一個文件:/etc/snort/rules/snort.rules。 您需要確保添加以下行:include $ RULE PATH / snort.rulessnort.conf文件,或者當Snort啟動時,PulledPork規則永遠不會被讀入內存。
編輯/etc/snort/snort.conf,並添加到文件的末尾(或者在第548行,如果你想保留在合理的位置):
include $RULE_PATH/snort.rules
由於我們已經修改了Snort配置文件(通過加載的規則文件),我們應該測試Snort配置文件。 這也將檢查PulledPork創建的新的snort.rules文件:
sudo snort -T -c /etc/snort/snort.conf -i eth0
創建啟動腳本
要創建Snort systemD服務,請使用編輯器創建一個服務文件:
sudo vi /lib/systemd/system/snort.service
並輸入以下內容(如果在系統上不同,則更改來自ens160的接口名稱):
[Unit]
Description=Snort NIDS Daemon
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i ens160
[Install]
WantedBy=multi-user.target
現在我們告訴systemD該服務應該在啟動時啟動:
sudo systemctl enable snort
最後,我們要開始服務:
sudo systemctl start snort
檢查服務正在運行:
systemctl status snort
接下來,創建Barnyard2 systemd服務。 我們將在這裡添加兩個標誌:-D作為守護進程運行,並且-a / var / log / snort / archived logs,這會將Barnyard2已經處理的日誌移動到/ var / log / snort / archived /文件夾。 使用編輯器創建一個服務文件:
sudo vi /lib/systemd/system/barnyard2.service
與以下內容(exec內容行應該是一行,通過...歸檔日誌)
[Unit]
Description=Barnyard2 Daemon
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2 -q -w /var/log/
snort/barnyard2.waldo -g snort -u snort -D -a /var/log/snort/archived_logs
[Install]
WantedBy=multi-user.target
現在我們告訴systemD該服務應該在啟動時啟動:
sudo systemctl enable barnyard2
最後,我們要開始服務:
sudo systemctl start barnyard2
檢查服務正在運行:
systemctl status barnyard2




BASE - A Web GUI for Snort
UBUNTU 16BASE需要PHP 5,這在Ubuntu 16的檔案中是不可用的(在這個版本中Ubuntu已經轉移到了PHP 7)。 我們使用PPA來安裝所需的PHP 5軟件包:
# Ubuntu 16 only:
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y apache2 libapache2-mod-php5.6 php5.6-mysql php5.6-cli php5.6 php5.6-common \
php5.6-gd php5.6-cli php-pear php5.6-xml
next install Pear image Graph:
sudo pear install -f --alldeps Image_Graph
下載並安裝ADODB
cd ~/snort_src
wget https://sourceforge.net/projects/adodb/files/adodb-php5-only/adodb-520-for-php5/adodb-5.20.8.tar.gz
tar -xvzf adodb-5.20.8.tar.gz
sudo mv adodb5 /var/adodb
sudo chmod -R 755 /var/adodb
下載B ASE並複製到apache root
cd ~/snort_src
wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base-1.4.5.tar.gz
tar xzvf base-1.4.5.tar.gz
sudo mv base-1.4.5 /var/www/html/base/
創建BASE配置文件:
cd /var/www/html/base
sudo cp base_conf.php.dist base_conf.php
現在編輯配置文件:
sudo vi /var/www/html/base/base_conf.php
使用以下設置(請注意,即使在第80行中有說明,第80行中的尾部斜杠也是必需的配置文件):
$BASE_urlpath = ' /base ' ; # line 50
$DBlib_path = ' /var/adodb/ ' ; #line 80
$alert_dbname = ' snort ' ; # line 102
$alert_host = ' localhost ' ;
$alert_port = '' ;
$alert_user = ' snort ' ;
$alert_password = ' MySqlSNORTpassword ' ; # line 106
而在conf.php文件中,你也可以將第457行註釋掉(我們不希望DejaVuSans
字體),並從行459取消註釋(刪除兩個反斜杠),啟用一個空白字體。 該部分
字體(從456行開始)應該是這樣的:
// $graph_font_name = "Verdana";
// $graph_font_name = "DejaVuSans";
// $graph_font_name = "Image_Graph_Font";
$graph_font_name = "";
BASE文件夾設置權限,並且由於密碼在基本的conf.php文件中,我們應該防止其他用戶閱讀它
sudo chown -R www-data:www-data /var/www/html/base
sudo chmod o-r /var/www/html/base/base_conf.php
Restart Apache:
sudo service apache2 restart
配置BASE的最後一步是通過http
1.瀏覽到http//ServerIP/base/index.php並點擊設置頁面鏈接(將ServerIP替換為IP
你的Snort服務器)。
2.點擊頁面右上角的Create BASE AG按鈕
3.點擊主頁面







留言

這個網誌中的熱門文章

CentOS 7快速架站心得與過程

直播的基礎架設