二次線路入門,Snort入門(二)

 2023-12-09 阅读 34 评论 0

摘要:文章目錄1.6 讀取pcap文件1.6.1 命令行參數1.6.2 Example1.7 基本輸出1.7.1 Timing statistics 時間統計1.7.2 Packet I/O Totals 總的流入流出包1.7.3 Protocol Statistics 協議數據包1.7.4 snort memory數據1.7.5 Actions, Limits, Verdicts1.8 Tunneling 協議支持1.8.1 多

文章目錄

      • 1.6 讀取pcap文件
        • 1.6.1 命令行參數
        • 1.6.2 Example
      • 1.7 基本輸出
        • 1.7.1 Timing statistics 時間統計
        • 1.7.2 Packet I/O Totals 總的流入流出包
        • 1.7.3 Protocol Statistics 協議數據包
        • 1.7.4 snort memory數據
        • 1.7.5 Actions, Limits, Verdicts
      • 1.8 Tunneling 協議支持
        • 1.8.1 多個封裝
        • 1.8.2 Logging
      • 1.9 Miscellaneous 雜項
        • 1.9.1 作為后臺程序運行snort
        • 1.9.2 在規則存根創建模式下運行
        • 1.9.3 混淆IP地址打印輸出
        • 1.9.4 指定多實例標識符
        • 1.9.5 Snort 模式
      • 1.10 控制套接字
      • 1.11 配置信號值
      • 1.12 更多信息

二次線路入門,

1.6 讀取pcap文件

可以讓Snort捕獲數據包之后去分析,對測試和調試snort很有幫助

1.6.1 命令行參數

可以一次或者多次指定以下命令,--pcap-reset and --pcap-show用一次和多次的效果是一樣的
在這里插入圖片描述

1.6.2 Example

讀取單個的pcap

snort -r foo.pcap
snort --pcap-single=foo.pcap

從文件中讀取pcaps

cat foo.txt
foo1.pcap
foo2.pcap
/home/foo/pcapssnort --pcap-file=foo.txt

這將讀取目錄/home/foo/pcaps下的所有文件foo1.pcap foo2.pcap,請注意,Snort不會嘗試確定該目錄下的文件是否真的是pcap文件。

從命令行列表里讀取pcaps

snort --pcap-list="foo1.pcap foo2.pcap f003.pcap"

在目錄下讀取pcaps

snort --pcap-dir="/home/foo/pcaps"

使用過濾器

cat foo.txt
foo1.pcap
foo2.pcap
/home/foo/pcapssnort --pcap-filter="*.pcap" --pcap-file=foo.txt
snort --pcap-filter="*.pcap" --pcap-dir=/home/foo/pcaps

以上的pcap文件必須要以.pcap結尾

snort --pcap-filter="*.pcap" --pcap-file=foo.txt \
> --pcap-filter="*.cap" --pcap-dir=/home/foo/pcaps

以上,第一個** *.pcap**只對文件foo.txt中的pcaps有效,第二個過濾器*.cap會覆蓋第一個,應用在目錄/home/foo/pcaps上,里面所有的.cap文件都會被處理。

snort --pcap-filter="*.pcap" --pcap-file=foo.txt \
> --pcap-no-filter --pcap-dir=/home/foo/pcaps

這個梨子中,第一個filter將會應用在foo.txt上,而在目錄/home/foo/pcaps下的文件將不會使用任何過濾器,所有在這個目錄下的文件都會包含進去

$ snort --pcap-filter="*.pcap" --pcap-file=foo.txt \
> --pcap-no-filter --pcap-dir=/home/foo/pcaps \
> --pcap-filter="*.cap" --pcap-dir=/home/foo/pcaps2

上面梨子中,第一個過濾器將會用在foo.txt上,目錄/home/foo/pcaps下將不會使用任何過濾器,目錄/foo/pcaps2將找到*.cap的所有文件。

Reseting state 復位狀態

snort --pcap-dir=/home/foo/pcaps --pcap-reset

在讀取每個pcap之后,Snort將被重置為配置后狀態,這意味著將刷新所有緩沖區,重置統計信息,等等

打印pcap

snort --pcap-dir=/home/foo/pcaps --pcap-show

1.7 基本輸出

1.7.1 Timing statistics 時間統計

介紹基本的時間統計信息。它包括總秒數和數據包以及數據包處理速率。速率是基于整秒、分等,并且只在非零時顯示。梨子:
在這里插入圖片描述

1.7.2 Packet I/O Totals 總的流入流出包

顯示基本的從DAQ獲取和注入的數據包,如果你在讀取pcap,那總數就是pcap的和,除非你使用了-pcap-reset

  • Outstanding 會顯示有多少包被緩沖等待處理
  • pcap DAQs不顯示過濾包
  • injected數據包是主動響應的結果,可以配置為inline或者passive模式
Packet I/O Totals:
Received: 3716022
Analyzed: 3716022 (100.000%)
Dropped: 0 ( 0.000%)
Filtered: 0 ( 0.000%)
Outstanding: 0 ( 0.000%)
Injected: 0

1.7.3 Protocol Statistics 協議數據包

breakdown部分總結了所有協議的通信,如果開啟了frag3stream5這樣的預處理程序,那么這個流量會有內部的“偽包”,總流量可能會大于I/O部分分析包的數量。

  • 由于基本的編碼完整性缺陷,磁盤計數被丟棄,這阻止了Snort解碼數據包。
  • Other include包包含Snort無法解碼的封裝。
  • S5 G 1/2是客戶端/服務器會話流5由于緩存限制刷新,會話超時,會話重置。

例子

Breakdown by protocol (includes rebuilt packets):
Eth: 3722347 (100.000%)
VLAN: 0 ( 0.000%)
IP4: 1782394 ( 47.884%)
Frag: 3839 ( 0.103%)
ICMP: 38860 ( 1.044%)
UDP: 137162 ( 3.685%)
TCP: 1619621 ( 43.511%)
IP6: 1781159 ( 47.850%)
IP6 Ext: 1787327 ( 48.016%)
IP6 Opts: 6168 ( 0.166%)
Frag6: 3839 ( 0.103%)
ICMP6: 1650 ( 0.044%)
UDP6: 140446 ( 3.773%)
TCP6: 1619633 ( 43.511%)
Teredo: 18 ( 0.000%)
ICMP-IP: 0 ( 0.000%)
EAPOL: 0 ( 0.000%)
IP4/IP4: 0 ( 0.000%)
IP4/IP6: 0 ( 0.000%)
IP6/IP4: 0 ( 0.000%)
IP6/IP6: 0 ( 0.000%)
GRE: 202 ( 0.005%)
GRE Eth: 0 ( 0.000%)
GRE VLAN: 0 ( 0.000%)
GRE IP4: 0 ( 0.000%)
GRE IP6: 0 ( 0.000%)
GRE IP6 Ext: 0 ( 0.000%)
GRE PPTP: 202 ( 0.005%)
GRE ARP: 0 ( 0.000%)
GRE IPX: 0 ( 0.000%)
GRE Loop: 0 ( 0.000%)
MPLS: 0 ( 0.000%)
ARP: 104840 ( 2.817%)
IPX: 60 ( 0.002%)
Eth Loop: 0 ( 0.000%)
Eth Disc: 0 ( 0.000%)
IP4 Disc: 0 ( 0.000%)
IP6 Disc: 0 ( 0.000%)
TCP Disc: 0 ( 0.000%)
UDP Disc: 1385 ( 0.037%)
ICMP Disc: 0 ( 0.000%)
All Discard: 1385 ( 0.037%)
Other: 57876 ( 1.555%)
Bad Chk Sum: 32135 ( 0.863%)
Bad TTL: 0 ( 0.000%)
S5 G 1: 1494 ( 0.040%)
S5 G 2: 1654 ( 0.044%)
Total: 3722347

1.7.4 snort memory數據

在使用**mallinfo(3)**的系統上,將看到額外的統計信息。有關詳細信息,請查看mallinfo的手冊頁
Example:

Memory usage summary:
Total non-mmapped bytes (arena): 415481856
Bytes in mapped regions (hblkhd): 409612288
Total allocated space (uordblks): 92130384
Total free space (fordblks): 323351472
Topmost releasable block (keepcost): 3200

1.7.5 Actions, Limits, Verdicts

操作(Actions)和判決(Verdict)計數顯示了Snort對所分析的包所做的操作。此信息僅在IDS模式下輸出(當使用-c <conf>選項運行snort時)。

  • Alerts是由規則操作確定的警報和已處理的塊操作的數量。這里的block包括block、drop和reject操作。

Limits是由于現實世界對處理時間和可用內存的限制而產生的。這些指示沒有發生的潛在行動:

  • 由于配置檢測:最大隊列事件設置,規則匹配沒有被處理。缺省值是5。
  • 由于配置事件隊列:max隊列設置,事件無法存儲在事件隊列中。默認值為8。
  • 由于配置事件隊列:日志設置,事件沒有被警告。缺省值是3。
  • 事件limit:由于事件過濾器限制而未發出警報的事件。
  • 警告limit:事件沒有被警告,因為它們已經在會話中被觸發了。

Snort會在每個數據包上做判決:

  • Allow = Snort分析了數據包,但沒有對其采取行動。
  • Block = Snort沒有轉發數據包,因為block規則;需要區別blockDrop,Drop(Snort根本看都沒看),Block(看了之后根據規則不讓過)
  • Replace = Snort修改過的包
  • Whitelist = 任何分析程序都允許通過的數據包
  • Blacklist = snort阻止通過的數據包
  • Ignore = Snort允許流通過此Snort實例的w/o檢查的數據包。
  • Int Blklst = 被阻塞的GTP、Teredo、6in4或4in6封裝的數據包。如果對給定協議設置了config tunnel_verdicts,則這些數據包將得到黑名單判決。
  • Int Whtlst = 允許GTP、Teredo、6in4或4in6封裝的數據包。如果為給定協議設置了config tunnel_verdicts,這些數據包可以獲得白名單裁決。

Example:

Action Stats:
Alerts: 0 ( 0.000%)
Logged: 0 ( 0.000%)
Passed: 0 ( 0.000%)
Limits:
Match: 0
Queue: 0
Log: 0
Event: 0
Alert: 0
Verdicts:
Allow: 3716022 (100.000%)
Block: 0 ( 0.000%)
Replace: 0 ( 0.000%)
Whitelist: 0 ( 0.000%)
Blacklist: 0 ( 0.000%)
Ignore: 0 ( 0.000%)

1.8 Tunneling 協議支持

Snort可以支持很多tunnelling協議解碼,比如:GRE,GRE上的PPTP,MPLS,…這些默認都是開啟的
如果想關掉,

./configure --disable-gre
./configure --disable--mpls

1.8.1 多個封裝

Snort不會解碼多個封裝。 諸如:
Eth IPv4 GRE IPv4 GRE IPv4 TCP Payload or Eth IPv4 IPv6 IPv4 TCP Payload
這種不會被處理,并將返回一個告警

1.8.2 Logging

當前,僅記錄數據包的封裝部分
Eth IP1 GRE IP2 TCP Payload
記錄成,
Eth IP2 TCP Payload

Eth IP1 IP2 TCP Payload
記錄成,
Eth IP2 TCP Payload
(??不大懂)
Note:目前,在需要字對齊的架構(例如SPARC)上不支持利用GRE和PPP的PPTP解碼。

1.9 Miscellaneous 雜項

1.9.1 作為后臺程序運行snort

如果要將Snort作為后臺程序運行,則可以將-D選項添加到前面幾節中描述的任何組合。 請注意,如果您希望能夠通過將SIGHUP信號發送到后臺程序來重啟Snort,則在啟動時必須指定Snort二進制文件的完整路徑,例如:

/usr/local/bin/snort -d -h 192.168.1.0/24 \
-l /var/log/snortlogs -c /usr/local/etc/snort.conf -s -D

(出于安全考慮,不支持相對路徑)

Snort PID 文件
當Snort作為后臺程序運行時,該后臺程序在日志目錄中創建一個PID文件。 在Snort 2.6中,-pid-path命令行選項使Snort將PID文件寫入指定的目錄中。
此外,即使未在后臺程序模式下運行,--create-pidfile選項也可用于強制創建PID文件
PID文件將被鎖定,以便其他snort進程無法啟動。 使用--nolock-pidfile選項將不鎖定 PID文件。
如果您不希望在PID文件中包含接口名稱,請使用--no-interface-pidfile選項。

1.9.2 在規則存根創建模式下運行

如果需要將共享庫規則存根轉儲到目錄中,則必須使用–dump-dynamic-rules命令行選項。 這些規則存根文件與共享對象規則一起使用。 (路徑可以是相對的或絕對的)。

/usr/local/bin/snort -c /usr/local/etc/snort.conf \
--dump-dynamic-rules=/tmp

也可以使用配置選項dump-dynamic-rules-pathsnort.conf中配置此路徑,如下所示:

config dump-dynamic-rules-path: /tmp/sorules

命令行配置的路徑優先于使用dump-dynamic-rules-path配置的路徑。

/usr/local/bin/snort -c /usr/local/etc/snort.conf \
--dump-dynamic-rules
snort.conf:
config dump-dynamic-rules-path: /tmp/sorules

在上述情況下,轉儲路徑設置為/tmp/sorules

1.9.3 混淆IP地址打印輸出

如果需要將數據包日志發布到公共郵件列表,則可能需要使用-O選項。 此選項在數據包打印輸出中混淆了您的IP地址。 如果您不希望郵件列表中的人知道所涉及的IP地址,這將非常方便。 您也可以將-O選項與-h選項組合使用,僅模糊家庭網絡上主機的IP地址。 如果您不在乎誰看到攻擊主機的地址,這將很有用。 例如,您可以使用以下命令從日志文件中讀取數據包并將其轉儲到屏幕,僅混淆來自192.168.1.0/24 C類網絡的地址:

./snort -d -v -r snort.log -O -h 192.168.1.0/24

1.9.4 指定多實例標識符

在Snort v2.4中,添加了-G命令行選項,該選項指定事件日志的實例標識符。 在不同的CPU上或在同一CPU但接口不同的情況下運行多個snort實例時,可以使用此選項。 每個Snort實例將使用指定的值來生成唯一的事件ID。 用戶可以指定十進制值**(-G 1)或十六進制值,后跟0x(-G 0x11)**。 長選項--logid也支持此功能。

1.9.5 Snort 模式

Snort可以在三種不同的模式下運行,即tap(passive),內聯和內聯測試。 Snort策略也可以在這三種模式下配置。
模式的解釋

  • Inline
    Snort充當IPS允許觸發丟棄規則。 可以使用命令行參數-Q將Snort配置為以內聯模式運行,配置snort config選項policy_mode 如下:
snort -Q
config policy_mode:inline
  • Passive
    當Snort處于Passive模式時,它充當IDS。Drop未加載的規則(沒有–treat-drop-as-alert)。 配置為Passive模式:
config policy_mode:tap
  • Inline-Test
    Inline-Test模式模擬snort的內聯模式,允許評估內聯行為而不影響流量。 Drop規則將被加載,并作為Wdrop(Would Drop)警報觸發。 可以使用命令行選項**(–enable-inline-test)**或使用snort config選項將Snort配置為以內聯測試模式運行,如下所示:
snort --enable-inline-test
config policy_mode:inline_test

(注意:–enable-inline-test不能和-Q連著用)

Table:不同模式下規則選項的行為在這里插入圖片描述
具有規則動作的不同模式的行為
在這里插入圖片描述

1.10 控制套接字

可以將Snort配置為提供Unix套接字,該套接字可用于向正在運行的進程發出命令。 您必須使用--enable-control-socket選項構建snort。 控制套接字功能僅在Linux上受支持。
可以使用命令行參數--cs-dir <path>和snort config選項cs_dir將Snort配置為使用控制套接字,如下所示:

snort --cs-dir <path>
config cs_dir:<path>

<path>指定用來創建套接字的目錄,
使用--enable-control-socket選項配置時,將在同一bin目錄中創建并安裝命令snort控件,并將其與snort一起安裝。

1.11 配置信號值

在某些系統上,snort使用的信號可能會被其他功能使用。 為避免沖突,對于非Windows系統,用戶可以通過./configure選項更改默認信號值

- SIGNAL_SNORT_RELOAD
- SIGNAL_SNORT_DUMP_STATS
- SIGNAL_SNORT_ROTATE_STATS
- SIGNAL_SNORT_READ_ATTR_TBL

語法:

./configure SIGNAL_SNORT_RELOAD=<value/name> SIGNAL_SNORT_DUMP_STATS=<value/name>\
SIGNAL_SNORT_READ_ATTR_TBL=<value/name> SIGNAL_SNORT_ROTATE_STATS=<value/name>

您可以將這些信號設置為系統中用戶定義的值或已知的信號名稱。 以下示例將輪換狀態信號更改為31并將重載屬性表更改為信號SIGUSR2

./configure SIGNAL_SNORT_ROTATE_STATS=31 SIGNAL_SNORT_READ_ATTR_TBL=SIGUSR2

如果多次分配同一信號,則在snort初始化期間將記錄一條警告。 如果無法安裝信號處理程序,則會記錄一條警告,并且必須予以修復,否則該功能將丟失。

Snort中使用的信號:
在這里插入圖片描述

1.12 更多信息

第2章包含有關配置文件中可用的許多配置選項的大量信息。 Snort手冊頁和snort -? 或snort --help包含可幫助您使Snort在幾種不同模式下運行的信息。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/195273.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息