日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Snort日志输出插件详解

發布時間:2024/4/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Snort日志输出插件详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Snort日志輸出插件詳解

? Snort是一款老×××的開源***檢測工具,本文主要討論他作為日志分析時的各種插件的應用。Snort的日志一般位于:/var/log/snort/目錄下。可以通過修改配置文件來設置Snort的報警形式。基于文本的格式、Libpcap格式和數據庫是Snort最重要的三種報警形式。本文主要對每種報警形式及其配置進行介紹。


1??? 工作模式及輸出插件


Snort擁有3種工作模式,分別為嗅探器模式、分組日志模式與網絡***檢測模式。

1嗅探器模式

Snort使用Libpcap包捕獲庫,即TCPDUMP使用的庫。在這種模式下,Snort使用網絡接口的混雜模式讀取并解析共享信道中的網絡分組。

該模式使用命令如下:

#snort -v

注意:這里的參數是小寫字母v,而大寫V則是顯示snort版本。以上只顯示TCP/IP網絡數據包頭信息,如果想查看詳細的應用層數據信息,則需要輸入以下命令:

#snort –vd

如果希望查看數據鏈路層的包頭信息,使用如下信息:

#snort? –vde

還有一個類似“-d”參數的,“-X”它會從數據鏈路層開始輸出原始數據包。

如果想將Snort作為IDS使用,不建議在命令行下使用“-vd”尤其是“-ved”參數,因為詳細模式將數據包信息打印到控制臺,這樣嚴重影響了Snort的性能很容易引起丟包,這樣分析數據不準確。


2?? ?數據包記錄模式


如果想將數據信息記錄到磁盤上某個文件,那就需要使用Packet logger模式。

命令如下

#snort –ved –l? ./log


? 這Snort會把數據鏈路層、Tcp/IP報頭及應用層信息寫入當前目錄log(log目錄已建立)目錄下的snort.log.140493321文件中,而且這是二進制文件。你也許會問,ASCII格式的日志文件格式非常好識別,為什么不直接記錄成ASCII格式呢?因為系統本生記錄的格式就是二進制的,如果再轉換成我們能識別的ASCII格式無疑會加重系統負荷,所以Snort在做IDS使用時理應采用二進制格式記錄,另外還要注意:“-l”參數是小寫字母l

如果想查看所記錄的日志就得使用“r”參數。


操作實例如下:


#snort –dvr snort.log.140493321

還可以提取部分感興趣的數據,例如只讀取ICMP包,輸入如下命令:

#snort –dvr snort.log.140493321 icmp

只讀取tcp包,輸入如下命令:

#snort –dvr snort.log.140493321 tcp

如果想記錄某個網段的數據呢,操作命令如下:

alienvault:~# snort -vde -l ./log -h 10.3.14.0/24


下面做個比較復雜的實驗,環境是OSSIM 3.1? 32 平臺

首先在控制臺上啟動:

#snort –l /var/log/snort/? -c /etc/snort/snort.eth0.conf

當結束命令^c時顯示

Alerts數量就是在日志里看到的記錄數量,這兩者一致。

在另一個控制臺查看日志情況

#tail –f /var/log/auth.log

這時,我們可以在SIEM控制臺,中看到如圖1所示。

1 SIEM控制臺


3??? 網絡***檢測模式HIDS


HIDS模式是大家需要掌握的重點,這種模式集成了嗅探模式和日志模式,并且需要載入規則庫才能正常工作。操作方式如下:

#snort –vde –l ./log –h 10.32.14.0/24 –c /etc/snort/snort.eth0.conf

注意,當前目錄下有log目錄,如果制定-l ./log 參數系統會默認將日志存在/var/log/snort/目錄下。大家在做實驗時,要確保當前目錄下有./log目錄哦,否則無法正確執行以上指令。

snort.conf文件中包含了指定檢測規則的具體路徑。


4?? 輸出插件


輸出插件的作用是將報警數據輸出到顯示器或轉儲到文件。所以對于Snort而言輸出插件就是系統的主要瓶頸,Snort本身能對封包進行快速讀取和分析處理,但是試圖將其顯示輸出,或者存儲到數據庫中時卻有些力不從心。如何將Snort日志記錄到一個指定文件呢?我們通過執行命令(假設/var/log/snort/yourfile文件存在)來記錄。

#snort –L yourfile

那么,這時系統自動將snort日志保存到/var/log/snort/yourfile文件中。有關日志輸出的方法還有幾個,我們稍后詳細講解。后續文章我會給大家一個方法,配置Snort統一格式輸出并且有Snort的標準日志應用Barnyard負責輸出。這里我們先看看Snort的輸出插件。


1) -A alert-mode

在***檢測模式中alert-modefastfullunsocknone四種模式。

1fast

fast是一種快速簡單的輸出插件,之所以快是因為它只記錄timestamp(時間戳)、signature(特征)source IPdestinationIPsource portdestination portTCP flagsProtocol。使用方法如下:

#snort –A fast

注意,上面的命令是不保存的,如果希望保存到文件(當不適用-l參數默認保存位置是/var/log/snort/),命令如下:


#snort –A fast –h 10.32.14.0/24 –c /etc/snort/snort.eth0.conf


2full

Full對每個產生警報的IP將其解碼后的包記錄下來。與fast不同的是,它記錄地更全面。這也是它的預設告警模式。


3unsock

這個插件的作用是建立一個UNIX域管道并向它發送警報。當然其它進程也可對該管道進行監聽,目的是實時接收Snort警報數據。注意一點這個功能和Windows系統無法配合使用。

#snort –A unsock


4none

這個插件作用是關閉警報。

大家只需掌握-A參數后面跟的四個參數的含義,了解這四個參數只是讓Snort能已不同的方式報警。


2) tcpdump格式輸出

有時候需要將Snort日志輸出成tcpdump文件格式的記錄包,因為這樣可以讓多種應用程序和工具讀取tcpdump,這時我們如下操作(以OSSIM 3.1系統為例):

1 編輯snort.conf

#vi /etc/snort/snort.eth0.conf

找到 389啟用output log_tcpdump: tcpdump.log

2保存退出,并重啟Snort服務使其配置生效

3查看tcpdump.log

alienvault:/var/log/snort# ls -l

-rw------- 1 root? adm?? ??504 Jul 14 22:02 tcpdump.log.1405389707

-rw------- 1 root? adm??? 3410 Jul 14 22:45 tcpdump.log.1405392066


3CSV格式輸出

CSVComma Separated Value是用逗號分隔值的是文本文件。采用CSV格式的目的主要考慮向其它數據庫或電子表格軟件輸入。CSV格式可以記錄24個字段如1所示。

1 ?規則選項關鍵字含義

序號

關鍵字

作用

1

Timestamp

時間戳

2

Msg

特征碼名稱

3

Proto

協議

4

Src

源地址

5

Srcport

源端口

6

dst

目標地址

7

dstport

目標端口

8

ethsrc

MAC

9

ethdst

目標MAC

10

ethlen

以太網幀長度

11

tcpflags

TCP標志位

12

tcpseq

TCP序列號

13

tcpack

TCP ack

14

tcplen

TCP長度

15

tcpwindow

tcp窗口值

16

ttl

ip頭的ttl的值

17

tos

IP頭中TOS字段的值

18

id

ip頭的分片id

19

dgmlen

數據報的總長度,包括數據報頭和數據報文

20

iplen

IP包長度

21

icmptype

ICMP類型

22

icmpcode

ICMP代號,缺省為0

23

icmpid

ICMP報文IP頭的ID,缺省是隨機的

24

icmpseq

ICMP ECHO順序號的值

實現csv格式輸出方法

編輯snort_eth0.conf

添加:output alert_csv: csv.out 后面缺省有24個關鍵字我們也可按上圖的參數輸入

查看csv輸出

alienvault:/var/log/snort# tail -f csv.out

07/15-00:29:51.254425 ,"GPL SHELLCODE x86 inc ebx NOOP",,,,,,,

07/15-00:29:51.357178 ,"GPL SHELLCODE x86 inc ebx NOOP",,,,,,,

07/15-00:29:54.541833 ,"ET P2P eMule Kademlia Hello Request",,,,,,,

07/15-00:29:54.541846 ,"ET P2P eMule Kademlia Hello Request",,,,,,,

07/15-00:31:55.606599 ,"ET DNS Non-DNS or Non-Compliant DNS traffic on DNS port Opcode 6 or 7 set - Likely Kazy",,,,,,,

以下是24個參數全部啟用的效果。默認為全部啟用除非指定具體參數。

snort_eth0.conf加入:

output alert_csv: csv.out

一行即可。

查看SIEM控制臺輸出。

當設置成功csv輸出后,可以查看OSSIM系統下SIEM控制臺的日志輸出,如下圖3所示。

3 SIEM控制臺日志輸出

我們發現兩種不同警報方式的結果都是一行,很顯然OSSIM系統的SIEM控制臺顯示出的警報更人性化。


4syslog輸出

Syslog服務器能從各種服務和設備(網絡設備,Web服務器等)收集日志信息。將Snort警報數據寫入syslog服務器對于分析網絡***事件有幫助。它可以與其它工具謝工執行實時報警和通知,所以這也是Snort一個比較重要的插件之一。

最簡單方法是打開snort_eth0.conf384行的output alert_syslog: LOG_AUTH LOG_ALERT這行啟用,并重啟Snort即可生效。我們使用如下命令觀察Snort發出的警報:


#tail –f /var/log/auth.log


Syslog配置選項

Syslog三個重要配置選項:

l? Facility

l? Priority

l? Options

啟用選項的命令如下:

方法很簡單,在上面的技術上加上這三個參數即可。

output alert_syslog: LOG_AUTH LOG_ALERT facility? priority options

保存退出并重啟Snort即可。

這時,如果啟用了csv輸出,可以將syslogcsv輸出做個對比,如圖4所示(上部分為csv輸出,下部分為auth.log輸出)。

4?輸出結果比較


我們發現同樣一個***事件的報警,在它們的輸出中除了各式不統一以外,其它都相同。

5)數據庫輸出

? ?數據庫輸出插件可以將日志記錄到關系型數據庫中,它支持MySQL等。當數據庫插件被關聯到數據庫后,就可以實現對Snort報警進行分類、查詢和按優先級組織排序,甚至利用應用程序對數據庫中的告警數據通過GUI界面展現給用戶。

? ?在千兆網絡環境下需要考慮性能問題,數據庫插件有可能影響到Snort性能,插件自身并不是瓶頸,當大量數據寫入數據庫時,必須等待磁盤I/O相應,這時就會受到影響。如果通過網絡將日志存儲到另一臺主機的數據庫中那么延遲會比較大。后面我們會采用Barnyard+Unified的方式解決這種性能問題。

? ?主要思路是讓Snort采用Unified的格式存儲,以它的最大速度處理輸出數據,而不是像傳統的要等到寫盤完成后,再繼續操作,這樣浪費了大量的時間。Barnyard能將二進制數解析成與它能夠識別的各種格式,并且是完全獨立于Snort運行。警報被立刻寫入數據庫并且不影響Snort的抓包能力。所以說這種組合適合于高帶寬環境。

我們還是查看/etc/snort/snort.eth0.conf配置文件,大約392行。

這里有2個重要的選項alertlog

393行可以選擇獎警報數據寫入數據庫,394行可以同時將日志數據也寫入數據庫。

下面我們看看如何使用數據庫插件:

對照上面參數配置如下選項:

<db_type>mysql

User=<username>snortdb_username或者為Snort傳感器創建的MySQL用戶名。

Password=<password> snortdb_password或為Snort傳感器創建snortdb_usernameMySQL口令

Dbname=<name>snortdb或者自己指定的***數據庫名稱

Host=<hostname>為本機環路地址127.0.0.1


6)輸出unixsock

通過Alert_unixsock打開UNIX套接字,并且把報警信息發送到那里。外部的程序/進程會在這個套接字上偵聽并實時接收這些報警數據。

例子:

output alert_unixsock

加入到snort.eth0.conf配置文件后,重啟Snort服務即生效。還可以通過以下命令手動啟動:

# snort -c /etc/snort/snort.eth0.conf

此時會在/var/log/snort/下產生snort_alert文件

為了演示這一功能我們通過一小段程序(本地進程間的通訊),來看看效果如何。以下Perl程序,其主要功能是將Snort傳送的數據報文的報警名稱通過讀取unixsock信息實現打印到屏幕。

執行此Perl程序,結果如下。

我們看到顯示在屏幕的5條警報名稱。


7Unified格式輸出

前面介紹了多種輸出插件各異利弊,下面介紹OSSIM系統中常用的unified插件。這種插件的最大特點就是速度快,它能最快的輸出Snort報警信息和日志信息,它輸出兩類文件:警報文件和數據包日志文件,警報文件僅記錄摘要信息,內容包括源IP、目的IP、協議、源端口、目的端口、報警消息ID、日志文件包含完整的包信息,用戶可以自己下載。

設置方法是啟用以下配置語句:

Output unified2: filename snort_eth0, limit 128

Filename后設置輸出警報文件名稱為snort_eth0

Limit代表輸出文件允許的最大長度,默認值為128MB

以上幾種插件為snort常用方式尤其在日志分析中用的比較多,如果你剛接觸snort可以OSSIM3的環境中進行練習。


開源IDS系統安裝一點通視頻課程請參考?https://edu.51cto.com/course/7896.html?


總結

以上是生活随笔為你收集整理的Snort日志输出插件详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。